Android开发:ViewFlipper 左右滑动效果


怎么实现Android主页面的左右拖动效果。其实实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。

  1. public class TestFlip extends Activity implements OnGestureListener {  
  2.   
  3. private ViewFlipper flipper;  
  4.   
  5. private GestureDetector detector;  
  6.   
  7. /** Called when the activity is first created. */  
  8. @Override  
  9. public void onCreate(Bundle savedInstanceState) {  
  10. super.onCreate(savedInstanceState);  
  11. setContentView(R.layout.main);  
  12.   
  13. detector = new GestureDetector(this);  
  14. flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);  
  15. flipper.addView(addView(R.layout.layout1));  
  16. flipper.addView(addView(R.layout.layout2));  
  17. flipper.addView(addView(R.layout.layout3));  
  18. flipper.addView(addView(R.layout.layout4));  
  19. }  
  20.   
  21. private View addView(int layout) {  
  22. LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  23. View view = inflater.inflate(layout, null);  
  24. return view;  
  25. }  
  26.   
  27. @Override  
  28. public boolean onTouchEvent(MotionEvent event) {  
  29. return this.detector.onTouchEvent(event);  
  30. }  
  31.   
  32. @Override  
  33. public boolean onDown(MotionEvent e) {  
  34. // TODO Auto-generated method stub   
  35. return false;  
  36. }  
  37.   
  38. @Override  
  39. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  40. float velocityY) {  
  41. if (e1.getX() - e2.getX() > 120) {  
  42. this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));  
  43. this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));  
  44. this.flipper.showNext();  
  45. return true;  
  46. else if (e1.getX() - e2.getX() < -120) {  
  47. this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));  
  48. this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));  
  49. this.flipper.showPrevious();  
  50. return true;  
  51. }  
  52. return false;  
  53. }  
  54.   
  55. @Override  
  56. public void onLongPress(MotionEvent e) {  
  57. // TODO Auto-generated method stub   
  58.   
  59. }  
  60.   
  61. @Override  
  62. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,  
  63. float distanceY) {  
  64. // TODO Auto-generated method stub   
  65. return false;  
  66. }  
  67.   
  68. @Override  
  69. public void onShowPress(MotionEvent e) {  
  70. // TODO Auto-generated method stub   
  71.   
  72. }  
  73.   
  74. @Override  
  75. public boolean onSingleTapUp(MotionEvent e) {  
  76. // TODO Auto-generated method stub   
  77. return false;  
  78. }  
  79. }  
xml code:
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <ViewFlipper android:id="@+id/ViewFlipper01"  
  8. android:layout_width="fill_parent" android:layout_height="fill_parent">  
  9. </ViewFlipper>  
  10. </LinearLayout>  

相关内容