Android 实例:通过自定义View组件实现跟随手指移动的小兔子
2015-08-03 23:09
1406 查看
技术要点:
首先需要继承 android.view.View 类,然后通过重写 onDraw() 方法设置兔子的默认显示位置,
最后重写其触摸事件,该事件中设置兔子随手指而移动。
实例图片:
实例源码:
main_activity.xml :<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" android:id="@+id/mylayout" > </FrameLayout>
RabbitView.java :
public class RabbitView extends View { public float bitmapX; // 兔子显示位置的X坐标 public float bitmapY; // 兔子显示位置的Y坐标 public RabbitView(Context context) { // 重写构造方法 super(context); bitmapX = 290; // 设置兔子的默认显示位置的X坐标 bitmapY = 130; // 设置兔子的默认显示位置的Y坐标 } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint = new Paint(); // 创建并实例化Paint的对象 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.rabbit); // 根据图片生成位图对象 canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint); // 绘制小兔子 if (bitmap.isRecycled()) { // 判断图片是否回收 bitmap.recycle(); // 强制回收图片 } } }
MainActivity.java :
public class RabbitView extends View { public float bitmapX; // 兔子显示位置的X坐标 public float bitmapY; // 兔子显示位置的Y坐标 public RabbitView(Context context) { // 重写构造方法 super(context); bitmapX = 290; // 设置兔子的默认显示位置的X坐标 bitmapY = 130; // 设置兔子的默认显示位置的Y坐标 } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint = new Paint(); // 创建并实例化Paint的对象 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.rabbit); // 根据图片生成位图对象 canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint); // 绘制小兔子 if (bitmap.isRecycled()) { // 判断图片是否回收 bitmap.recycle(); // 强制回收图片 } } }
相关文章推荐
- Android Hotpatch系列之-项目介绍
- Android推送 百度云推送 入门篇
- Android基础之Activity四种启动模式和task相关
- Android真机获取root权限,进入data目录
- android动态添加view
- Android 中Junit 测试框架(单元测试)
- Android四大组件之BroadcastReceiver
- Android Dalvik模式下劫持 Java 函数
- 今天发现一个android动画合集,明天开始研究
- Android Binder 分析——多线程支持
- android广播和短信广播详解----使用广播接收者监听短信
- Android获取屏幕宽度与长度的三个方法
- Android中多线程编程(四)AsyncTask类的详细解释(附源码)
- android 中int 和 String 互相转换的多种方法
- Android SDK下载网址
- android 源码下载中遇到的问题 repo sync
- 关于android:showAsAction
- Android之Inflate()方法用途
- Android Api Demos登顶之路(十八)Recorder Activities
- button-xml 中android:clickable="false" 属性