我尝试过使用消息和其他内容进行调试,但我从 event.getAction() 获得的唯一值是 0 ...我相信是 ACTION_DOWN 为什么我没有检测到 ACTION_MOVE 或 ACTION_UP?
package com.andrewxd.test01;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
public class Game extends View {
private Bitmap enemy;
private Enemy enemyN;
private Paint paint;
private float x,y;
public Game(Context context) {
super(context);
enemy = BitmapFactory.decodeResource(getResources(), R.drawable.enemy);
enemy = Bitmap.createScaledBitmap(enemy, 300 , 300, false);
enemyN = new Enemy(10, 10, enemy);
paint = new Paint();
x = 0;
y = 0;
}
@Override
protected void onDraw(Canvas canvas){
canvas.drawRect(x, y, 50, 50, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
if(event.getAction() == MotionEvent.ACTION_DOWN){
x = event.getX();
y = event.getY();
invalidate();
} else if(event.getAction() == MotionEvent.ACTION_MOVE){
x = event.getX();
y = event.getY();
invalidate();
}
return false;
}
}
我做错了什么吗?或者这应该像这样工作?如果这应该是这样的,我在哪里检测触摸移动
最佳答案
这是因为您在 onTouchEvent 结束时返回 false
。当您返回 false
时,表示您的 View 无法再处理任何触摸事件,因此事件将不再发送到 View
。如果你想接收MOVE
和UP
事件,那么你需要返回true。
关于java - Android onTouchEvent 在 View 类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719999/