自定义view完成简单的小游戏----手指兔子

本文介绍如何通过自定义View在Android开发中创建一款手指兔子小游戏。首先创建继承自View的RabbitView,并重写构造方法。接着,将详细讲解需要重写哪些关键方法以实现游戏功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然Android提供了很多继承了View类的UI组件,但是在实际开发中,还会出现不足以满足程序需要的情况。这时,用户就可以通过View类来开发自己的组件。

下面我们就来自定义View来实现一个小游戏--手指兔子。

1、首先自定义一个RabbitView继承于View类,病重写构造方法,然后根据需要重写相应的方法

public class RabbitView extends View {
    public float bitmapX;//小兔子显示位置的X坐标
    public float bitmapY;//小兔子显式位置的Y坐标

	//重写构造方法
    public RabbitView(Context context) {
        super(context);
	//设置小兔子默认显式的位置XY坐标
        bitmapX = 100;
        bitmapY = 100;
    }
	//重写onDraw方法
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

	//创建并实例化Paint对象
        Paint paint = new Paint();
	//根据图片生成位图对象
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.rabbit);

	//绘制小兔子
        canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
	
	//判断图片是否回收
        if(bitmap.isRecycled()){

	//强制回收图片
            bitmap.recycle();
        }
    }
}

2、在MainActivity中的onCreate()方法中作如下处理:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
	//获得布局
        RelativeLayout relativeLayout = (RelativeLayout) findViewById(activity_main);
	//创建并实例化RabbitView类
        final RabbitView rabbit = new RabbitView(this);
	//为小兔子添加触摸事件监听器
        rabbit.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

		//设置小兔子显示位置的XY坐标
                rabbit.bitmapX = event.getX();
                rabbit.bitmapY = event.getY();
		//重绘rabbit组件
                rabbit.invalidate();
                return true;
            }
        });
	
	//将rabbit添加到布局中
        relativeLayout.addView(rabbit);
    }
}
接下来就可以玩一玩儿啦,小兔子会随着你的手指的拖动轨迹而移动的,快去试试吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值