要实现拖动效果需要做以下的准备。
1.创建一个Android工程。
2.在main.xml中添加一个ViewFlipper组件。
android:layout_width="wrap_content" android:layout_height="wrap_content">
在代码中设置ViewFlipper的事件和属性
Java代码
1 viewFlipper=(ViewFlipper)findViewById(R.id.ViewFlipper01);//得到对象
2 viewFlipper.setLongClickable(true);//如果不设置为true,对象就不会响应onTouch事件
3 viewFlipper.setOnTouchListener(newView.OnTouchListener(){
4 @Override
5 publicbooleanonTouch(Viewv,MotionEventevent){
6 //gd是一个GestureDetector对象。具体的会在下面讲到。GestureDetector会根据转入的MotionEvent事件来判断用户进行了哪种操作。
7 ActivityMain.this.gd.onTouchEvent(event);
8 returnfalse;
9 }
10 });
11 3.添加一个GestureDetector对象。并实现GestureDetector.OnGestureListener接口。
12 GestureDetector对象对接收多个MotionEvent事件。并根据这些MotionEvent事件来判断用户在进行什么操作。
13 @Override
14 publicbooleanonSingleTapUp(MotionEvente){
15 //用户轻触屏幕后松开。
16 returnfalse;
17 }
18
19 @Override
20 publicvoidonShowPress(MotionEvente){
21 //用户轻触屏幕,尚末松开或拖动,注意,强调的是没有没有松开或者拖动状态
22 }
23
24 @Override
25 publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,
26 floatdistanceY){
27 //用户按下屏幕并拖动
28 returnfalse;
29 }
30
31 @Override
32 publicvoidonLongPress(MotionEvente){
33 //用户长按屏幕
34 }
35
36 @Override
37 publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,
38 floatvelocityY){
39 //用户按下屏幕,快速移动后松开(就是在屏幕上滑动)
40 //e1:第一个ACTION_DOWN事件(手指按下的那一点)
41 //e2:最后一个ACTION_MOVE事件(手指松开的那一点)
42 //velocityX:手指在x轴移动的速度单位:像素/秒
43 //velocityY:手指在y轴移动的速度单位:像素/秒
44 if(e1.getX()-e2.getX()>0){//判断用户是在向什么方向移动手指
45 ActivityMain.this.nextPage();//向左移动手指,显示下一页
46 }else{
47 ActivityMain.this.prePage();//向右移动手指,显示上一页
48 }
49 returnfalse;
50 }
51
52 @Override
53 publicbooleanonDown(MotionEvente){
54 //用户轻触屏幕。(单击)
55 returnfalse;
56 }
57 4.实现翻页程序
58 privatevoidprePage(){
59 if(i<=0){
60 i=0;
61 Toast.makeText(this,"前面没有页面了",Toast.LENGTH_SHORT).show();
62 return;
63 }
64 i--;
65 viewFlipper.setInAnimation(this,R.anim.in_left_anima);
66 viewFlipper.setOutAnimation(this,R.anim.out_right_anima);
67 viewFlipper.showPrevious();
68 }
69 privatevoidnextPage(){
70 if(i+1>=max){
71 i=max-1;
72 Toast.makeText(this,"这是最后一页",Toast.LENGTH_SHORT).show();
73 return;
74 }
75 viewFlipper.setInAnimation(this,R.anim.in_right_anima);
76 viewFlipper.setOutAnimation(this,R.anim.out_left_anima);
77 i++;
78 intcount=viewFlipper.getChildCount();
79 if(count=count){
80 viewFlipper.addView(getTextView(i));
81 }
82 viewFlipper.showNext();
83 }