通过ViewFlipper和GestureDetector.OnGestureListener实现自动播放和手势滑屏事件

ViewFlipper flipper;

private GestureDetector gestureDetector = null;  手势

1
2
3
4
5
6
7
8
9
10
11
12
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
  
    <ViewFlipper
        android:id="@+id/vf"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
  
  
</LinearLayout>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.sanya.viewflipper;
  
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ViewFlipper;
  
public class MainActivity extends Activity implements OnGestureListener {
    ViewFlipper flipper;
    private GestureDetector gestureDetector = null;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
  
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        int img[] = { R.drawable.guide1, R.drawable.guide2, R.drawable.guide3,
                R.drawable.guide5, R.drawable.splash };
        flipper = (ViewFlipper) findViewById(R.id.vf);
        gestureDetector = new GestureDetector(this);// 声明检测手势事件
        for (int i = 0; i < img.length; i++) {
            ImageView view = new ImageView(getApplicationContext());
            view.setImageResource(img[i]);
            view.setScaleType(ScaleType.FIT_XY);// 设置图片的缩放大小
            flipper.addView(view, new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));
        }
        flipper.setAutoStart(true);
        flipper.setFlipInterval(2000);
        // 如果手势不滑动 则自动播放
        if (flipper.isAutoStart() && !flipper.isFlipping()) {
            flipper.startFlipping();
        }
  
    }
  
    // 手指接触事件
    @Override
    public boolean onTouchEvent(MotionEvent event) {
  
        flipper.setAutoStart(false);
        flipper.stopFlipping();
        return gestureDetector.onTouchEvent(event);// 返回手指滑动事件
    }
  
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        if (e2.getX() - e1.getX() > 120) {
              
            Animation inAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.right_in);
            Animation outAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.right_out);
            flipper.setInAnimation(inAnimation);
            flipper.setOutAnimation(outAnimation);
            flipper.showPrevious();
        } else if (e2.getX() - e1.getX() < -120) {
              
            Animation inAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.left_in);
            Animation outAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.left_out);
            flipper.setInAnimation(inAnimation);
            flipper.setOutAnimation(outAnimation);
            flipper.showNext();
        }
  
        return true;
    }
  
    @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) {
  
    }
  
}
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
    <translate
        android:duration="500"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
  
    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />
</set>
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
    <translate
        android:duration="500"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
  
    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />
</set>
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
    <translate
        android:duration="500"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
  
    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" />
</set>
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
    <translate
        android:duration="500"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
  
    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />
</set>

 

 

 

 

 

 



来自为知笔记(Wiz)


posted on 2014-04-28 13:53  转折点人生  阅读(205)  评论(0)    收藏  举报