私は、複数のrelativelayoutビューを水平に表示するスクロールビューを持っています...データベース内のレコードごとに1つずつ、プログラマチックに作成されます。ジェスチャーを複数のビューに持つVIEW(ダブルクリック、左スワイプ、右スワイプなど)を決定しますか?
いくつかのジェスチャー(クリック、ダブルクリック、左右スワイプ)の影響を受けるビューを特定する必要があります。もちろん
私は得ることができましたクリックします。
RelativeLayout rlView = new RelativeLayout(this);
rlView.setId(10000+myrecordid);
rlView.setOnClickListener(myviewclick);
とmyviewclick:
private View.OnClickListener myviewclick = new View.OnClickListener() {
public void onClick(View v) {
Integer i=v.getId()-10000;
// Do some processing on this view
}
};
私はオンライン見つけたものから、私はジェスチャーをこの方法を取得しようとしました:
rlView.setOnTouchListener(myviewtouch);
このコードでは、
private View.OnTouchListener myviewtouch = new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.i("MYLOG","double tap");
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.i("MYLOG","SingleTapConfirmed");
return true;
}
@Override
public void onLongPress(MotionEvent e) {
Log.i("MYLOG","LongPress");
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e1.getX()<e2.getX())
Log.i("MYLOG","Fling Right");
else
Log.i("MYLOG","Fling Left");
return true;
}
});
};
MYLOGによると、私は必要に応じて適切なジェスチャーを取得しています。問題は、ジェスチャーが入っているビューIDを取得する方法がわかりません。onTouch
にあることがわかりますが、動きを判断するためにgestureDetector.OnTouchEvent
と呼ばれています。この時点では失われています。
私はStackOverflowや他のサイトを数時間にわたって検索しました...ジェスチャーをどのように判断するのかについての違いを示していますが、私が使用できる複数のビューで何かを見つけるのに問題があります。
ご協力いただければ幸いです。
私はなぜ[この質問](訳:https://stackoverflow.com/questions/45070129/detecting-common-gestures-on-multiple-views-in-android)に賞金を追加しているのかを説明します。 – Suragch