FlipperView和GestureDetector的简单应用

首先为这两个类初始化:

viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
        gestureDetector = new GestureDetector(this);
对GestureDetector进行初始化的时候,需要实现GestureDetector.OnGestureListener接口:

   /**************************************GestureDetector触发的事件**********/
    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @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 onLongPress(MotionEvent e) {

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        //e1为手势的起点,e2为手势的终点  velocityX为水平方向的速度  velocityY为竖直方向的速度
        if((e2.getX() - e1.getX()) > 120){
            viewFlipper.showPrevious();
        }

        if(e1.getX() - e2.getX() > 120){
            viewFlipper.showNext();
        }
        return false;
    }
    /***************************************end*********************/
为FlipperView设置参数

for(int i = 0 ; i < imgs.length ; i++){
            ImageView iv = new ImageView(this);
            iv.setImageResource(imgs[i]);
            iv.setScaleType(ImageView.ScaleType.FIT_XY);
            viewFlipper.addView(iv,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
        }

        viewFlipper.setAutoStart(true);//设置自动开始,当设置了这个方法ViewFlipper自动调用startFlipping()方法
        viewFlipper.setFlipInterval(1000);//设置事件延迟
        //上面的两个方法也可以在xml里面设置 android:autoStart="true" android:flipInterval="2000"
        if(viewFlipper.isAutoStart() && !viewFlipper.isFlipping()){
            //viewFlipper.startFlipping();
        }
如果想让GestureDetector的触发事件起作用则重写下面方法:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        viewFlipper.stopFlipping();
        viewFlipper.setAutoStart(false);
        return gestureDetector.onTouchEvent(event);//为手势注册事件,只有在这里注册下面的方法才能触发
    }
这样,一个简易的ViewFlipper结合GestureDetector就完成了。




你可能感兴趣的:(android)