Activity で ScrollView の子の View でタップ処理をするためにGestureListener を設定して GestureDetector を dispatchTouchEvent() で呼ぶ。フルスクリーンの画像表示では、ダブルタップ、ロングプレスでフラグメントを開くのが良いと思う。Detector.setOnDoubleTapListener(GestureListener); は楽だ。
タップ処理の基礎。または、layout の HorizontalScrollView で id を設定して ソースでOnTouchListener()を組んで onTouch() をオーバーライドでも行けるかな。
public class MainActivity extends AppCompatActivity {
private GestureDetectorCompat mDetector;
private final MyGestureListener mGestureListener = new MyGestureListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
mDetector = new GestureDetectorCompat(this, mGestureListener);
mDetector.setOnDoubleTapListener(mGestureListener);
}
@Override // タッチイベントが取得できる
public boolean dispatchTouchEvent(MotionEvent event) {
super.dispatchTouchEvent(event);
mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}
}
続く。