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:orientation="vertical"
android:padding="10dp"
android:id="@+id/frameLayout"
tools:context="com.ccyumo.demo.MainActivity">
</FrameLayout>
自定义组件类
RabbitView.java
public class RabbitView extends View {
public float rabbitX;
public float rabbitY;
public RabbitView(Context context) {
super(context);
this.rabbitX = 100;
this.rabbitY = 100;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher);
canvas.drawBitmap(bitmap, rabbitX, rabbitY, paint);
if (bitmap.isRecycled()) {
bitmap.recycle();
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
FrameLayout frameLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
frameLayout= (FrameLayout) findViewById(R.id.frameLayout);//获取帧布局管理器
final RabbitView rabbitView=new RabbitView(this);//初始化自定义组件
//自定义组件触摸监听事件
rabbitView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//重绘自定义组件
rabbitView.rabbitX=event.getX();
rabbitView.rabbitY=event.getY();
rabbitView.invalidate();
return true;
}
});
frameLayout.addView(rabbitView);//将自定义组件添加到帧布局管理器
}
}