Android-通过自定义View组件实现跟随手指移动的ImageView组件
2016-03-15 11:36
901 查看
在Android应用程序中绘制一个跟随手指的小兔子,当手指在屏幕上拖动时,小兔子将跟随手指拖动的轨迹移动。
实现本实例时,首先需要先继承Android.view.View类,然后通过重写其onDraw()方法设置小兔子的默认显示位置,最后重写其触摸事件,该事件中设置兔子随手指而移动。
实现过程:
1.修改res/layout/main_activity.xml文件,删除默认的LinearLayout和TextView组件,然后添加一个帧布局FrameLayout,并且设置其背景和id属性
2.创建一个名为RabbitView的自定义View类,继承自android.view.View类,重写带一个参数Context参数的构造方法和onDraw()方法。在构造方法中设置小兔子的默认坐标,在onDraw()方法中根据图片绘制小兔子。
3.在MainActivity的onCreate()方法中,首先获取帧布局管理器,并实例化小兔子rabbit,然后为rabbit添加触摸事件监听器,在重写的触摸事件中设置rabbit的显示位置,并重绘rabbit组件,最后将rabbit添加到布局管理器中。
实现本实例时,首先需要先继承Android.view.View类,然后通过重写其onDraw()方法设置小兔子的默认显示位置,最后重写其触摸事件,该事件中设置兔子随手指而移动。
实现过程:
1.修改res/layout/main_activity.xml文件,删除默认的LinearLayout和TextView组件,然后添加一个帧布局FrameLayout,并且设置其背景和id属性
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mylayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" > </FrameLayout>
2.创建一个名为RabbitView的自定义View类,继承自android.view.View类,重写带一个参数Context参数的构造方法和onDraw()方法。在构造方法中设置小兔子的默认坐标,在onDraw()方法中根据图片绘制小兔子。
public class RabbitView extends View { public float bitmapX; public float bitmapY; public RabbitView(Context context) { super(context); // TODO Auto-generated constructor stub bitmapX=290; bitmapY=130; } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint=new Paint(); Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(), R.drawable.rabbit); canvas.drawBitmap(bitmap, bitmapX, bitmapY,paint); if(bitmap.isRecycled()) { bitmap.recycle(); } } }
3.在MainActivity的onCreate()方法中,首先获取帧布局管理器,并实例化小兔子rabbit,然后为rabbit添加触摸事件监听器,在重写的触摸事件中设置rabbit的显示位置,并重绘rabbit组件,最后将rabbit添加到布局管理器中。
FrameLayout frameLayout=(FrameLayout)findViewById(R.id.mylayout); final RabbitView rabbit=new RabbitView(MainActivity.this); rabbit.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub rabbit.bitmapX=event.getX(); rabbit.bitmapY=event.getY(); rabbit.invalidate(); return true; } }); frameLayout.addView(rabbit); }
相关文章推荐
- Android抽象布局——include、merge 、ViewStub
- Android 自定义控件
- 在IDEA上开发Android
- Android之SQLite学习
- 如何发布你的Android应用程序
- Android录音控件
- android 导出数据库步骤 需要root
- Android 基于google Zxing实现对手机中的二维码进行扫描
- 经典71道Android试题及答案
- 从应用信息推送的方式上猜测为何Android会越用越慢,但是IOS不会
- Android 中JNI创建实例
- 使用android studio 小技巧文集
- Android性能优化之常见的内存泄漏
- Android HandlerThread 复习
- android 性能优化-工具篇
- android中jar包的导出和导入
- Android proguard 详解
- Android Fragment完全解析
- Android屏幕density, dip等相关概念总结
- 在Android中java与js互调的demo