onFling
でスワイプする機能を使用していScrollView
ます。私が直面している問題は、上から下にスワイプ/スクロールすると、タブが右/左にスワイプされることです。そのため、スクロール時に左右のスワイプ機能が機能しないようにする必要があります。
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
final RelativeLayout detail = (RelativeLayout) findViewById(R.id.layout_detail);
final RelativeLayout photo = (RelativeLayout) findViewById(R.id.layout_detail_photo);
final RelativeLayout pod = (RelativeLayout) findViewById(R.id.layout_detail_pod);
final ToggleButton btn_detail = (ToggleButton) findViewById(R.id.btn_detail);
final ToggleButton btn_pod = (ToggleButton) findViewById(R.id.btn_pod);
final ToggleButton btn_photo = (ToggleButton) findViewById(R.id.btn_photo);
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if ((detail.getVisibility() == View.VISIBLE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.VISIBLE);
btn_photo.setSelected(false);
btn_pod.setSelected(true);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.VISIBLE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.VISIBLE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(true);
btn_pod.setSelected(false);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.VISIBLE)) {
detail.setVisibility(View.VISIBLE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(false);
btn_pod.setSelected(false);
btn_detail.setSelected(true);
}
}
// left to right swipe
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
if ((detail.getVisibility() == View.VISIBLE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.VISIBLE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(true);
btn_pod.setSelected(false);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.GONE)
&& (photo.getVisibility() == View.VISIBLE)) {
detail.setVisibility(View.GONE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.VISIBLE);
btn_photo.setSelected(false);
btn_pod.setSelected(true);
btn_detail.setSelected(false);
} else if ((detail.getVisibility() == View.GONE)
&& (pod.getVisibility() == View.VISIBLE)
&& (photo.getVisibility() == View.GONE)) {
detail.setVisibility(View.VISIBLE);
photo.setVisibility(View.GONE);
pod.setVisibility(View.GONE);
btn_photo.setSelected(false);
btn_pod.setSelected(false);
btn_detail.setSelected(true);
}
}
return true;
}