mainactivity.java
package com.example.suidong1;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout framelayout=(FrameLayout)findViewById(R.id.mlayout);l
        final RabbitView rabbit=new RabbitView(MainActivity.this);
        rabbit.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO 自动生成的方法存根
rabbit.bitmapX=event.getX();
rabbit.bitmapY=event.getY();
rabbit.invalidate();
return true;
}
});
        framelayout.addView(rabbit);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}}
rabbitview类
RabbitView.java
public class RabbitView extends View {
public float bitmapX;
public float bitmapY;
public RabbitView(Context context) {
super(context);
// TODO 自动生成的构造函数存根
bitmapX=750;
bitmapY=500;
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
// TODO 自动生成的方法存根
super.onDraw(canvas);
Paint paint=new Paint();
Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.rabbit);
canvas.drawBitmap(bitmap, bitmapX, bitmapY,paint);
if(bitmap.isRecycled()){
bitmap.recycle();
}
}
问题出现在描红的位置,点击后有提示警报是。类型 View 中的方法 setOnTouchListener(View.OnTouchListener)对于参数(new OnTouchListener(){})不适用界面