android开发 加入小组

74个成员 1352个话题 创建时间:2013-08-20

[android]实现拖动效果

发表于 2013-08-20 3375 次查看

要实现拖动效果需要做以下的准备。

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 }

安卓学习

2回复
发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。