下面是一个利用手势功能做的一个翻页效果


上图实际是一个ViewFlipper容器,里面放了5张图片,从右向左划动,看下一张图片,从左向右划动,看上一张图片

同时在划动时播放动画(缩放和透明度的改变),这样看起来更生动一些

动画文件

left_in.xml,图片从右向左滑动时的动画,View进入屏幕时候使用的动画

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

left_out.xml l,图片从右向左滑动时的动画, View退出屏幕时候使用的动画

<?xml version="1.0" encoding="utf-8"?>                                      
向右划动的动画类似,不写出来了

package WangLi.IO.GestureFlip;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.MotionEvent;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;public class GestureFlip extends Activity       implements OnGestureListener{//ViewFlipper实例ViewFlipper flipper;//定义手势检测器实例GestureDetector detector;//定义一个动画数组,用于为ViewFlipper指定切换动画效果Animation[] animations = new Animation[4];//定义手势动作两点之间的最小距离final int FLIP_DISTANCE = 50;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //创建手势检测器        detector = new GestureDetector(this);        //获得ViewFlipper实例        flipper = (ViewFlipper)this.findViewById(R.id.flipper);        //为ViewFlipper添加5个ImageView组件        flipper.addView(addImageView(R.drawable.one));        flipper.addView(addImageView(R.drawable.two));        flipper.addView(addImageView(R.drawable.three));        flipper.addView(addImageView(R.drawable.four));        flipper.addView(addImageView(R.drawable.five));        //初始化Animation数组        animations[0] = AnimationUtils.loadAnimation(this, R.anim.left_in);        animations[1] = AnimationUtils.loadAnimation(this, R.anim.left_out);        animations[2] = AnimationUtils.loadAnimation(this, R.anim.right_in);        animations[3] = AnimationUtils.loadAnimation(this, R.anim.right_out);    }private View addImageView(int resId) {// TODO Auto-generated method stubImageView imageView = new ImageView(this);imageView.setImageResource(resId);imageView.setScaleType(ImageView.ScaleType.CENTER);return imageView;}@Overridepublic boolean onDown(MotionEvent arg0) {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX,float velocityY) {// TODO Auto-generated method stub//如果第一触点事件的x坐标大于第二个触点事件的x坐标超过FLIP_DISTANCE//也就是手势从右向左滑动if(event1.getX() - event2.getX() > FLIP_DISTANCE){//为flipper设置切换的动画效果flipper.setInAnimation(animations[0]);flipper.setOutAnimation(animations[1]);flipper.showPrevious();return true;}if(event2.getX() - event1.getX() > FLIP_DISTANCE){//为flipper设置切换的动画效果flipper.setInAnimation(animations[2]);flipper.setOutAnimation(animations[3]);flipper.showNext();return true;}return false;}@Overridepublic boolean onTouchEvent(MotionEvent event){//将该Activity上的触碰事件交给GestureDetector处理return detector.onTouchEvent(event);}@Overridepublic void onLongPress(MotionEvent arg0) {// TODO Auto-generated method stub}@Overridepublic boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,float arg3) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onShowPress(MotionEvent arg0) {// TODO Auto-generated method stub}@Overridepublic boolean onSingleTapUp(MotionEvent arg0) {// TODO Auto-generated method stubreturn false;}}






更多相关文章

  1. 在Android中动画移动一个View的位置,采用Scroller类实现Android动
  2. Android(安卓)材料设计
  3. Android中ListView分页加载数据功能实现
  4. 面试问题之:Android中ListView分页加载数据
  5. Android属性动画(下),InterPolator、ViewPropertyAnimator和布局动
  6. Android中显示GIF动画的实现代码
  7. Android移动开发-添加手势以及识别用户手势
  8. Android移动view动画问题 关于view的位置移动了,但view里面绑定的
  9. android:ListView滑动时图片重复加载,多次调用了GetView().

随机推荐

  1. 程序员画像,十年沉浮
  2. 实战Spring Boot 2.0系列(四) - 使用WebA
  3. 我就是不看好jpa
  4. 开源一个kafka增强:okmq-1.0.0
  5. Spring Cloud整合Thrift RPC(一) - sprin
  6. php字符串函数解析
  7. [牛课习题]求最小公倍数
  8. 网络管理
  9. CSS实战flex布局仿京东app
  10. Python学习之pycharm的快捷键大全