我正在使用this guide作为参考创建我的第一个Android应用。目前,我的画布上有一个红色按钮,当用户点击按钮时,布尔(绿色)将设置为true,以使按钮的位图变为绿色按钮。
该应用程序的这一部分可以正常工作,但无论用户在画布上单击何处,它都可以正常工作。我只想在用户点击按钮的位图时更改布尔值。以下是我目前在代码中的内容:
onTouchEvent()方法
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
button.handleActionDown((int)event.getX(), (int)event.getY());
if (button.isTouched()) {
green = true;
}
} if (event.getAction() == MotionEvent.ACTION_MOVE) {
} if (event.getAction() == MotionEvent.ACTION_UP) {
if (button.isTouched()) {
green = false;
button.setTouched(false);
}
}
return true;
}
handleActionDown()方法
public void handleActionDown(int eventX, int eventY) {
if (eventX >= (x - bitmap.getWidth() / 2) && (eventX <= (x + bitmap.getWidth()/2))) {
if (eventY >= (y - bitmap.getHeight() / 2) && (eventY <= (y + bitmap.getHeight()/2))) {
setTouched(true);
} else {
setTouched(false);
}
} else {
setTouched(false);
}
}
任何人都可以看到我为了使ACTION_DOWN事件失去了什么而使它只在触摸到位图的位图时才触发?
此致
答案 0 :(得分:0)
避免在按钮上使用onTouchEvent,最好使用onClick,因为操作系统会检测是否单击了某个特定按钮,而不是必须计算按钮的位置
首先,设置onClickListener
btn.setOnClickListener(this);
这假定当前类实现View.OnClickListener
,因此如果您不实现它,则必须使用不同的类或创建匿名内部类。
然后,在onClick
方法中,确保ID匹配并在if语句中添加您想要执行的任何操作(或者替换为switch语句)
@Override
public void onClick(View v) {
if(v.getId() == R.id.btn1){
//do whatever you want on press
}
}