Android自定义View实现跟随手指移动的小兔子
程序员文章站
2022-08-07 21:49:35
本文实例为大家分享了android自定义view实现跟随手指移动的小兔子,供大家参考,具体内容如下自定义的view实现跟随手指的小兔子按前面的例子新创建一个project,再在project中新创建一...
本文实例为大家分享了android自定义view实现跟随手指移动的小兔子,供大家参考,具体内容如下
自定义的view实现跟随手指的小兔子
按前面的例子新创建一个project,再在project中新创建一个module
将需要的背景图和兔子图片放入mipmap中
将布局管理器改为帧布局管理器
<?xml version="1.0" encoding="utf-8"?> //修改为帧布局管理器framelayout <framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:background="@mipmap/bg1" #设置背景图 android:id="@+id/activity_main" # 设置id tools:context="com.example.mainactivity"> //删除原来的文本框 </framelayout>
设计结果:
新建一个java class
新建java class后自动生成的代码
package com.example; /** * created by hahaha on 2020/10/30. */ public class rabatview { }
修改设计:自定义rabatview.java
package com.example; import android.content.context; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.canvas; import android.graphics.paint; import android.view.view; /** * created by hahaha on 2020/10/30. */ //继承自view类 public class rabatview extends view{ //设置小兔子位置 public float bitmipx; public float bitmipy; public rabatview(context context) { super(context); bitmipx = 290; bitmipy = 130; } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); // 定义绘图对象 paint paint = new paint(); //定义绘图内容 bitmap bitmap = bitmapfactory.decoderesource(this.getresources(), r.mipmap.rabat); //开始绘图 canvas.drawbitmap(bitmap, bitmipx, bitmipy, paint); if (bitmap.isrecycled()){ bitmap.recycle();// 回收图片 } } }
mainactivity.java调用
package com.example; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.motionevent; import android.view.view; import android.widget.framelayout; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //定义帧布局管理器对象,要强制转换类型 framelayout framelayout = (framelayout) findviewbyid(r.id.activity_main); //定义调用自定义rabatview 类对象 final rabatview rabat = new rabatview(this); //设置触发事件 rabat.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view view, motionevent motionevent) { rabat.bitmipx = motionevent.getx();//获取重新绘制图片的x位置 rabat.bitmipy = motionevent.gety();//获取重新绘制图片的y位置 rabat.invalidate(); return true; } }); framelayout.addview(rabat);//添加进布局管理器 } }
结果:小兔子随着鼠标移动会移动
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: C++代码实现逆波兰表达式