http://www.iteye.com/topic/712644

在android中实现手势翻页效果,主要用到ViewFlipper和GestureDetector.
ViewFlipper变化当前显示内容,GestureDetector监听手势.
用于多页的展示非常酷.
以下是简略说明:

首先创建工程:TestFlip,创建主Activity:TestFlip.
在res/layout/main.xml中添加flipper信息,如下:

<?xml version="1.0" encoding="utf-8"?>        


然后将TestFlip实现OnGestureListener接口,并实现所有抽象方法,然后开始改造这个类.
首先,声明两个私有成员.

private ViewFlipper flipper;//ViewFlipper实例private GestureDetector detector;//触摸监听实例


然后在onCreate方法中添加成员初始化.

detector = new GestureDetector(this);//初始化触摸探测flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);//获得ViewFlipper实例 flipper.addView(addTextView("step 1"));//将View添加到flipper队列中flipper.addView(addTextView("step 2"));flipper.addView(addTextView("step 3"));flipper.addView(addTextView("step 4"));flipper.addView(addTextView("step 5"));


addTextView方法如下:

private View addTextView(String text) {TextView tv = new TextView(this);tv.setText(text);tv.setGravity(1);return tv;}


flipper将按照你的添加顺序排列这些View,并通过flipper.showNext()和flipper.showPrevious()显示.
还需要多重写一个方法:onTouchEvent(MotionEvent event),否则detector检测不到触摸,这个方法非常简单.

@Overridepublic boolean onTouchEvent(MotionEvent event) {return this.detector.onTouchEvent(event);}

 

现在开始做动作监听,在onFling方法中加入以下内容:

@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {this.flipper.showNext();//显示flipper中的下一个viewreturn true;}


现在可以运行一下看看效果了.你会发现当鼠标滑动时画面只是很简单的从Step 1变成Step 2,并没有那种画面滑动的效果,而且无论你从左向右滑动还是从右向左滑动都是按照同一个顺序,现在我们修改一些,让效果更炫一点.
先在res目录下创建anim目录,并创建4个基于Animation的xml文件,分别命名为:left_in.xml,left_out.xml,right_in.xml,right_left.xml
内容分别为:
left_in.xml:

<?xml version="1.0" encoding="utf-8"?>


left_out.xml:

<?xml version="1.0" encoding="utf-8"?>


right_in.xml:

<?xml version="1.0" encoding="utf-8"?>


right_out.xml:

<?xml version="1.0" encoding="utf-8"?>


主要是做一个translation动画,fromXDelta:动画的开始X位置,toXDelta:动画的结束X位置,duration:持续时间.
然后将onFling方法修改为如下:

@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() - e2.getX() > 120) {//如果是从右向左滑动//注册flipper的进出效果this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in));this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out));this.flipper.showNext();return true;} else if (e1.getX() - e2.getX() < -120) {//如果是从左向右滑动this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in));this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out));this.flipper.showPrevious();return true;}return false;}


然后重新运行看看效果,如果图片之类的多,还可以在animation里加入alpha的效果,如下


一个手势翻页效果就搞定了,用在多内容的展示效果上会非常棒.一个手势翻页效果就搞定了,用在多内容的展示效果上会非常棒.一个手势翻页效果就搞定了,用在多内容的展示效果上会非常棒.一个手势翻页效果就搞定了,用在多内容的展示效果上会非常棒.

 

更多相关文章

  1. Android仿QQ消息列表ListView滑动删除效果
  2. Android手势检测简介
  3. android 连接服务器的方法及安全性问题
  4. Android中欢迎界面背景图片放大效果
  5. android中Bitmap的放大和缩小的方法
  6. Android遍历文件Listfile返回值为null问题解决方法适用Android8.
  7. Android 最新获取手机内置存储大小,SD卡存储空间大小方法
  8. Android 效果
  9. Android 启动浏览器的方法

随机推荐

  1. Android(安卓)Notification 兼容3.0到8.0
  2. Content Provider 用法
  3. Android小问题:android studio怎么查看数
  4. LayoutInflater使用
  5. Android(安卓)scrollview嵌套listview出
  6. Andorid TabHost 使用小结
  7. android 平台开机自动重启
  8. 【Android学习笔记1】Android(安卓)Studi
  9. android基础6——设置圆角按钮
  10. 从setContentView说起