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

java code:
  1. public class TestFlip extends Activity implements OnGestureListener {

  2.         private ViewFlipper flipper;

  3.         private GestureDetector detector;

  4.         /** Called when the activity is first created. */
  5.         @Override
  6.         public void onCreate(Bundle savedInstanceState) {
  7.                 super.onCreate(savedInstanceState);
  8.                 setContentView(R.layout.main);

  9.                 detector = new GestureDetector(this);
  10.                 flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
  11.                
  12.                 flipper.addView(addView(R.layout.layout1));
  13.                 flipper.addView(addView(R.layout.layout2));
  14.                 flipper.addView(addView(R.layout.layout3));
  15.                 flipper.addView(addView(R.layout.layout4));       
  16.         }

  17.         private View addView(int layout) {
  18.                 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  19.                 View view = inflater.inflate(layout, null);
  20.                 return view;
  21.         }

  22.         @Override
  23.         public boolean onTouchEvent(MotionEvent event) {
  24.                 return this.detector.onTouchEvent(event);
  25.         }

  26.         @Override
  27.         public boolean onDown(MotionEvent e) {
  28.                 // TODO Auto-generated method stub
  29.                 return false;
  30.         }

  31.         @Override
  32.         public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  33.                         float velocityY) {
  34.                 if (e1.getX() - e2.getX() > 120) {
  35.                         this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
  36.                         this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
  37.                         this.flipper.showNext();
  38.                         return true;
  39.                 } else if (e1.getX() - e2.getX() < -120) {
  40.                         this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
  41.                         this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
  42.                         this.flipper.showPrevious();
  43.                         return true;
  44.                 }
  45.                 return false;
  46.         }

  47.         @Override
  48.         public void onLongPress(MotionEvent e) {
  49.                 // TODO Auto-generated method stub

  50.         }

  51.         @Override
  52.         public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
  53.                         float distanceY) {
  54.                 // TODO Auto-generated method stub
  55.                 return false;
  56.         }

  57.         @Override
  58.         public void onShowPress(MotionEvent e) {
  59.                 // TODO Auto-generated method stub

  60.         }

  61.         @Override
  62.         public boolean onSingleTapUp(MotionEvent e) {
  63.                 // TODO Auto-generated method stub
  64.                 return false;
  65.         }
  66. }
复制代码
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>
复制代码

TestFlip.rar

588.56 KB, 下载次数: 1168

售价: 1 资源分  [记录]  [购买]

不要消极的等,一切都要主动争取,别人不会为你上心,除非你一直提醒他,并明确表示意愿。
版主 2# xyz_lmn 发表于 2011-6-23 21:36:08
效果图,不能看出滑动效果
212451o6jn3bij6top1en4.png
不要消极的等,一切都要主动争取,别人不会为你上心,除非你一直提醒他,并明确表示意愿。
高级工程师 3# linyanqi 发表于 2011-8-24 17:39:54
谢谢分享
高级工程师 4# aluo 发表于 2011-8-24 18:38:47
支持楼主
实习工程师 5# kinghhf 发表于 2011-11-27 22:59:27
好东西,收藏
中级工程师 6# veryzhou 发表于 2011-11-30 10:13:29
好东西一定要回复啊
高级工程师 7# huangbqsky 发表于 2011-12-1 21:52:42
楼主请教个问题:用ViewFlipper做一个浏览截图的功能,当我特别快且非常频繁的滑动时,图片出现重叠现象,不知道楼主有没有解决的办法?
每天进步一小步!
中级工程师 8# a939639017 发表于 2011-12-7 10:20:50
顶顶  必须顶
初级工程师 9# gulang 发表于 2011-12-19 22:04:33
回帖是美德
初级工程师 10# zhouy478319399 发表于 2011-12-30 23:20:08
很好学习一下
实习工程师 11# tshzhb011 发表于 2012-1-5 13:51:45
谢谢分享。
初级工程师 12# fjzzmike 发表于 2012-1-15 17:43:10
谢谢分享
实习工程师 13# zelon19890311 发表于 2012-2-17 11:00:28
不知道能不能用,不过试试看吧

点评

详情 回复 xyz_lmn  发表于 2012-2-17 21:43:32

肯定可以用
版主 14# xyz_lmn 发表于 2012-2-17 21:43:32
zelon19890311 发表于 2012-2-17 11:00
不知道能不能用,不过试试看吧

肯定可以用
不要消极的等,一切都要主动争取,别人不会为你上心,除非你一直提醒他,并明确表示意愿。
实习工程师 15# zelon19890311 发表于 2012-2-22 16:58:14
支持楼主,好贴
高级工程师 16# 王文朋 发表于 2012-2-24 16:38:11
laiguo
高级工程师 17# 王文朋 发表于 2012-2-24 16:38:46
不让下载啊?

点评

详情 回复 xyz_lmn  发表于 2012-2-26 10:27:05

可以下载,你看下载次数已有76次了
版主 18# xyz_lmn 发表于 2012-2-26 10:27:05
王文朋 发表于 2012-2-24 16:38
不让下载啊?

可以下载,你看下载次数已有76次了
不要消极的等,一切都要主动争取,别人不会为你上心,除非你一直提醒他,并明确表示意愿。
实习工程师 19# devdiy_fly 发表于 2012-4-21 01:01:32
good
您需要登录后才可以回帖 登录 | 注册

关于我们|手机版|Archiver|DEVDIV.COM ( 京ICP备07040843号 )  

GMT+8, 2012-5-19 16:38

Powered by DEVDIV.COM!

© 2010-2012 DEVDIV.COM Coummunity.

回顶部