我正在开发一个包含 AdapterViewFlipper的Android 小部件。AdapterViewFlipper 可以自动翻转视图(每个视图包括 )。但是我们可以通过垂直滑动手动切换到下一个或上一个视图吗?AdapterViewFlipper(类似于 StackView)自动支持这一点,还是我必须在每个视图中添加手势监听器?
提前致谢。
我正在开发一个包含 AdapterViewFlipper的Android 小部件。AdapterViewFlipper 可以自动翻转视图(每个视图包括 )。但是我们可以通过垂直滑动手动切换到下一个或上一个视图吗?AdapterViewFlipper(类似于 StackView)自动支持这一点,还是我必须在每个视图中添加手势监听器?
提前致谢。
http://developer.android.com/training/gestures/detector.html#detect
您可以使用 GestureDetector 执行此操作
private GestureDetectorCompat mDetector;
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
然后,您可以@Override Activity 的 onTouchEvent。
@Override
public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
或者您也可以为您的 AdapterViewFlipper 设置 OnTouchListener
avf.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
return mDetector.onTouchEvent(event);
}
});
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final String DEBUG_TAG = "Gestures";
@Override
public boolean onDown(MotionEvent event) {
Log.d(DEBUG_TAG,"onDown: " + event.toString());
return true;
}
@Override
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY) {
if (start.getRawY() < finish.getRawY()) {
//down
} else {
//up
}
return true;
}
}