【描述1】想用ViewFlipper做一个横向滚动的效果,每次在ViewFlipper滑动时滚动一个屏幕。在ViewFlipper之外还有个TextView。布局大致如下:<?xml version="1.0" encoding="utf-8"?>
<LinearLayout>
<TextView android:text="My course" ></TextView>
<ViewFlipper>
<LinearLayout>
<TextView android:text="11111"></TextView>
</LinearLayout>
<LinearLayout>
<TextView android:text="22222"></TextView>
</LinearLayout>
<LinearLayout>
<TextView android:text="33333"></TextView>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
我先试着对ViewFlipper绑定了OnTouchListener,在onTouch(View v, MotionEvent touchevent)中分别判断MotionEvent.ACTION_DOWN 和 MotionEvent.ACTION_MOVE 的touchevent.getX()。但是一点击就直接触发了翻页动作,如下:vf = (ViewFlipper) findViewById(R.id.layoutswitcher);
        vf.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent touchevent) {
                Log.e("touchevent", String.valueOf(touchevent.getAction()));
                switch (touchevent.getAction())
                {
                   
                    case MotionEvent.ACTION_DOWN:
                    {
                        oldTouchValue = touchevent.getX();
                        break;
                    }
                    case MotionEvent.ACTION_MOVE:
                    {                        float currentX = touchevent.getX();
                        Log.e("touchevent", String.valueOf(oldTouchValue)+" - "+String.valueOf(currentX));
                        if(currentX>oldTouchValue){
                            vf.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(),R.anim.push_right_in));
                            vf.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(),R.anim.push_left_out));
                            vf.showNext();
                        }
                        else {
                            vf.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(),R.anim.push_left_in));
                            vf.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(),R.anim.push_right_out));
                            vf.showPrevious();
                        }
                        break;
                    }
                }
                return true;
            }
        });
【问题1】:如何判断是一个滑动的状态呢?【描述2】之后,看了下api,用activity实现了OnGestureListener接口,并重写了activity.onTouchEvent()方法,实现了手指在屏幕上滑动后切换屏幕,但问题是,不光在ViewFlipper范围内滑动会翻页,在整个可视范围内都可以(比如,在布局文件范围内滑动也会翻页)。代码大致如下:public class MyCourse extends Activity implements OnGestureListener {    private GestureDetector detector;
    protected void onCreate(Bundle savedInstanceState) {
        detector = new GestureDetector(getApplicationContext(),this);
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return this.detector.onTouchEvent(event); 
    }    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        if (e1.getX() > e2.getX()) { 
            this.vf.showNext(); 
        } else if (e1.getX() < e2.getX()) { 
            this.vf.showPrevious(); 
        } else { 
            return false; 
        } 
        return true; 
    }
}【问题2】如何实现只在ViewFlipper范围内的滑动才会翻页的效果?