2.实例跟随手指移动的小兔子

RabbitView文件

package com.example;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;

public class RabbitView extends View{
    //小兔子横坐标
    public float bitmapX;
    //小兔子纵坐标
    public float bitmapY;
    //在构造方法中设置兔子初始位置
    public RabbitView(Context context) {
        super(context);
        bitmapX = 290;
        bitmapY = 130;
    }
    //重写一个方法:鼠标右键-->Generate-->Override Methods(覆盖方法)-->直接输入就可查找
    //根据小兔子的图片来绘制小兔子
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //定义画笔对象
        Paint paint = new Paint();
        //定义绘图对象
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.mipmap.tuzi);
        //需要指定四个参数:1.创建的bitmap对象 2.x坐标 3.y坐标 4.画笔对象
        canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint);
        //强制回收图片
        if(bitmap.isRecycled()){
            bitmap.recycle();
        }
    }

}

MainActivaty文件

package com.example;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取布局管理器
        FrameLayout frameLayout = findViewById(R.id.mylayout);
        //实例化兔子对象
        final RabbitView rabbit = new RabbitView(this);
        //为小兔子设置触摸事件监听器,参数用匿名内部类来指定
        rabbit.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                rabbit.bitmapX = motionEvent.getX();
                rabbit.bitmapY = motionEvent.getY();
                //重绘这只兔子
                rabbit.invalidate();
                return true;
            }
        });
        frameLayout.addView(rabbit);
    }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/fengjing"
    android:id="@+id/mylayout"
    tools:context=".MainActivity">



</FrameLayout>

猜你喜欢

转载自blog.csdn.net/weixin_43328054/article/details/106343716
今日推荐