在Android应用程序中绘制一个跟随手指的小兔子,当手指在屏幕上拖动时,小兔子将跟随手指拖动的轨迹移动。
实现本实例时,首先需要先继承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);
}