0
我使用this guide作爲參考創建我的第一個Android應用程序。目前,我的畫布上有一個紅色按鈕,當用戶單擊按鈕時,布爾值(綠色)將設置爲true,以使按鈕的位圖變爲綠色按鈕。Android的onTouchEvent問題()
應用程序的這部分工作,但無論用戶在畫布上點擊的位置如何,它都可以工作。我只想要當用戶點擊按鈕的位圖時更改布爾值。以下是我目前在我的代碼:
的的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事件生效,只有當位圖的位圖被觸摸時才觸發?
問候
當代碼的方式違反行爲你期望什麼,一個好的第一手段可以是創建一些調試輸出 - 在handleActionDown()中放置一些日誌記錄,特別是eventX vs x和事件Y vs y。甚至在屏幕上顯示這些數字。你最終可能會發現一些簡單的東西,比如x和y沒有被初始化。或者,也許你的位圖沒有你認爲它的尺寸,或者... –
對我來說,如果你正在嘗試做的就是創建一個按鈕,其狀態和狀態可以在一個簡單的狀態下完成按鈕xml文件。 – trumpetlicks
你真的想創建自己的自定義按鈕識別嗎?因爲您的onTouchEvent似乎正在您的頂級視圖上實施。 – trumpetlicks