我有以下代碼:我不明白,觸摸屏事件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
logArea = (TextView) findViewById(R.id.logArea);
//Tocco
logArea.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(erase) {
logArea.setText("");
counter = 0;
}
logArea.append("DOWN: (" + x + ", " + y + ") ");
counter++;
break;
case MotionEvent.ACTION_MOVE:
logArea.append("MOVE: (" + x + ", " + y + ") ");
counter++;
break;
case MotionEvent.ACTION_UP:
counter++;
logArea.append("UP: (" + x + ", " + y + ") Contatore: " + counter);
erase = true;
break;
}
return true;
}
});
}
現在我跑我的應用程序並保持至今我的手指在手機屏幕上。感知的事件是MotionEvent.ACTION_DOWN,也是一系列事件MotionEvent.ACTION_MOVE。多對點返回,不僅如我所料的座標對。 如果我在模擬器上運行應用程序只返回一個點和一個事件MotionEvent.ACTION_DOWN,如我所料。爲什麼? 因爲我必須閱讀他的確切顏色才能做點事情,所以我只需要一點(一個在手指中間,如果可能或靠近)。 適用於仿真器,不適用於設備。 我能做些什麼來解決這個問題? 在此先感謝。
你的意思是你每次你得到的事件不同的時間點?也許這是因爲你不能完全握住你的手指並且始終均勻施加壓力? – Staven
也許如此。但是,我怎麼知道我是停下來的,還是我在圖像上稍微移動了一下? – Andrew