一、实现的界面
二、具体步骤
1. MainActivity.java
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
//随机函数
public static int getNum(int startNum,int endNum){
if(endNum > startNum){
Random random = new Random();
return random.nextInt(endNum - startNum) + startNum;
}
return 0;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.mylayout); // 获取帧布局管理器
final RabbitView rabbit = new RabbitView(this); // 创建并实例化RabbitView类
//为小兔子添加点击事件监听
rabbit.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
float rx = (view.getX() + getNum(-500, 300));
float ry = (view.getY() + getNum(-500, 300));
rabbit.bitmapX = rx; // 设置小兔子显示位置的X坐标
rabbit.bitmapY = ry; // 设置小兔子显示位置的Y坐标
rabbit.invalidate(); //重绘rabbit组件
}
});
frameLayout.addView(rabbit); //将rabbit添加到布局管理器中
}
}
2.RabbitView.java
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; // 兔子显示位置的X坐标
public float bitmapY; // 兔子显示位置的Y坐标
public RabbitView(Context context) { // 重写构造方法
super(context);
bitmapX = 210; // 设置兔子的默认显示位置的X坐标
bitmapY = 130; // 设置兔子的默认显示位置的Y坐标
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint(); // 创建并实例化Paint对象
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
R.mipmap.rabbit); // 根据图片生成位图对象
MainActivity mac=new MainActivity(); //创建对象 调用随机坐标函数
float ax=mac.getNum(50,780);
float ay=mac.getNum(50,1420);
if(bitmapX<500||bitmapX>700||bitmapY<500||bitmapY>1420){
canvas.drawBitmap(bitmap, ax, ay, paint); // 绘制小兔子
}else{
canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint); // 绘制小兔子
}
if (!bitmap.isRecycled()) { // 判断图片是否回收
bitmap.recycle(); // 强制回收图片
}
}
}
3.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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="@mipmap/background"
tools:context="com.example.followfinger.MainActivity">
</FrameLayout>