Android 实例:通过自定义View组件实现跟随手指移动的小兔子

技术要点:

首先需要继承 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,自定义view)