1. ホーム

AndroidのタッチイベントonScrollとonFlingは、特に区別が重要です。

2022-02-17 02:58:46

多くの場合、Fling や Scroll などのタッチスクリーンのジェスチャー操作を使用すると、Scroll ジェスチャーによるブラウザーのスクロールやFling によるリーダーのページめくりなど、アプリのユーザー体験を大幅に向上させることができます。OnGestureListenerインターフェイスを使用していますが、WilliamはAndroidの公式ドキュメントを検索しましたが、関連する例を見つけることができませんでした。ジェスチャーではなく、イベントを使用してください。

まず、Androidのイベント処理の仕組みはListenerをベースにしており、onTouchListener.setOnKeyListener()などのメソッドでイベントのクラスにリスナーを追加し、今日タッチパネル関連のイベントを呼んでいる。第三に、Listenerは一般的にInterfaceとして提供され、そこには1つ以上の抽象的なメソッドが含まれており、それを実装することでonTouch()やonKey()などのイベントを完結させることができるのです。このように、ビューにイベントリスナーを設定し、抽象的なメソッドの一つを実装すると、ビューに特定のイベントがディスパッチされたときに、プログラムがコールバック関数で適切に応答することができます。

最も単純なTextView(実際にはADTで生成されたスケルトンと変わりません)を使って、簡単な例を見てみましょう。

01.
public
class
GestureTest 
extends
Activity 
implements
OnTouchListener{
02.
<スパン
03.
@Override
04.
protected
void
onCreate(Bundle savedInstanceState) {
05.
super
.onCreate(savedInstanceState);
06.
setContentView(R.layout.main);
07.
<スパン
08.
// init TextView
09.
TextView tv = (TextView) findViewById(R.id.page);
10.
// set OnTouchListener on TextView
11.
tv.setOnTouchListener(
this
);
12.
// show some text
13.
tv.setText(R.string.text);
14.
}
15.
<スパン
16.
@Override
17.
public
boolean
onTouch(View v, MotionEvent event) {
18.
Toast.makeText(
this
, 
"onTouch"
, Toast.LENGTH_SHORT).show();
19.
return
false
;
20.
}
<スパン
super

.onCreate(savedInstanceState);


06.


<スパン
setContentView(R.layout.main);


07.
<スパン
08.


<スパン
// init TextView


09.


<スパン
TextView tv = (TextView) findViewById(R.id.page);


10.


<スパン
// set OnTouchListener on TextView


11.


<スパン
tv.setOnTouchListener(

this

);


12.


<スパン
// show some text


13.


<スパン
tv.setText(R.string.text);


14.


<スパン
}


15.
<スパン
16.


<スパン
@Override


17.


<スパン
public

boolean

onTouch(View v, MotionEvent event) {


18.


<スパン
Toast.makeText(

this

, 

"onTouch"

, Toast.LENGTH_SHORT).show();


19.


<スパン
return

false

;


20.


<スパン }

GestureTest クラスは OnTouchListener インターフェースを実装しているので、TextView インスタンス tv に onTouchListener を設定し、パラメータとして this を与えるだけです。 onTouch メソッドは OnTouchListener の抽象メソッドを実装しており、ここにユーザーが画面に触れたときに、今回行ったように警告メッセージを入力して応答するロジックを追加するだけでよいのです。

ここでは、MotionEvent の getAction() メソッドを使用して、ACTION_DOWN、ACTION_MOVE、ACTION_UP、ACTION_CANCEL などの Touch イベントの種類を取得できます。ACTION_DOWNはタッチスクリーンを押すこと、ACTION_MOVEはタッチスクリーンを押した後の力点の移動、ACTION_UPはタッチスクリーンを離すこと、ACTION_CANCELはユーザーによって直接トリガーされない(だから今日の文脈にはない)ことを意味します。ACTION_DOWNはタッチパネルを押すこと、ACTION_MOVEはタッチパネルを押した後の力点の移動、ACTION_UPはタッチパネルを離すこと、ACTION_CANCELはユーザーによって直接トリガーされるわけではない(だから今日の文脈にはない、ViewGroup.onInterceptTouchEvent(MotionEvent))ことを参照されたい。の助けを借りて