はい、同じボタンで onClick と onTouch の両方を使用できますが、OnTouch コールバックは ACTION_MOVE、ACTION_UP、ACTION_DOWN などの motionEvent を取得します。onTouch コールバックで false ( Details )を返すことを忘れないでください。以下のコードを参照してください
Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Log.d("test", "ontouch");
return false;
}
});
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.d("test", "onclick");
}
});
それぞれ onTouch と onClick のコールバックで実行したい操作を実行するだけです。クリックはユーザーがボタンを押して離したときに実行されるアクションですが、タッチはユーザーがボタンを押したときに実行されることに注意してください。
したがって、シングルクリックでログは次のようになります。1.ACTION_DOWN、2.ACTION_UP 3.onClick
03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): ontouch
03-22 16:19:39.735: D/test(682): onclick