【FrameLayout帧布局】
话不多说,上代码(我这个兔子有点大,略略略……):
activity_main.xml:
<?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/bj"
android:id="@+id/mylayout"
tools:context=".MainActivity"
>
</FrameLayout>
RabbitView.java:
package com.zzx.newfile;
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=300;
bitMapY=200;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint=new Paint();
Bitmap bitmap =BitmapFactory.decodeResource(this.getResources(),R.mipmap.tuzi);
canvas.drawBitmap(bitmap,bitMapX,bitMapY,paint);//位图对象,X坐标,Y坐标,画笔对象
if(bitmap.isRecycled()){//是否被回收
bitmap.recycle();//强制回收图片
}
}
}
MainActivity.java:
package com.zzx.newfile;
import android.support.v7.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);//通过ID获取帧布局
final RabbitView rabbitView= new RabbitView(this);
rabbitView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rabbitView.bitMapX=event.getX();//重新获取x坐标
rabbitView.bitMapY=event.getY();//重新获取y坐标
rabbitView.invalidate();//重新绘制兔子视图
return true;
}
});
frameLayout.addView(rabbitView);//添加兔子到屏幕上
}
}
最后的演示:
有什么意见可以在下面评论,看到以后我会回复,如果我有什么地方写的有问题,欢迎指正,一起学习