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中欢迎界面背景图片放大效果
  2. Android手势检测简介
  3. 学到一个android小应用-霓虹灯闪烁效果界面
  4. Android(安卓)效果
  5. Android启动界面实现
  6. Android(安卓)图标放大闪烁动画
  7. Android之关于手势操作图片的缩放与移动
  8. Android(安卓)利用TwinklingRefreshLayout 实现下拉效果
  9. android手势左右滑动

随机推荐

  1. Android中webview跟JAVASCRIPT中的交互
  2. Android编译系统学习总结
  3. Android获取经纬度
  4. android振动效果的实现
  5. 【android】以前没有注意的一个ListActiv
  6. (转帖)Android系列之Wifi定位
  7. Android处理后台返回数据——Json转实体
  8. Android(安卓)Studio中同步代码时报:Recei
  9. android sqlite
  10. Android设计中的.9.png