Gesture 通过手势实现翻书效果
2016-06-27 22:54
351 查看
package com.test.gesturetest; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.GestureDetector; 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 GestureFlipActivity extends AppCompatActivity implements GestureDetector.OnGestureListener { GestureDetector mDetector; ViewFlipper mFlipper; //定义一个动画数组用于为 ViewFlipper指定切换动画效果 Animation[] anims = new Animation[4]; //定义两个手势动作两点之间的最小距离 int FLIP_DISTANCE = 50; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gesture_flip); mDetector = new GestureDetector(this, this); mFlipper = (ViewFlipper) findViewById(R.id.flipper); //为ViewFlipper 添加几个 ImageView组件 mFlipper.addView(aaddImageView(R.drawable.ajax)); mFlipper.addView(aaddImageView(R.drawable.classic)); mFlipper.addView(aaddImageView(R.drawable.ee)); mFlipper.addView(aaddImageView(R.drawable.flower)); mFlipper.addView(aaddImageView(R.drawable.java)); mFlipper.addView(aaddImageView(R.drawable.lijiang)); mFlipper.addView(aaddImageView(R.drawable.xml)); //初始化动画数组 anims[0] = AnimationUtils.loadAnimation(this, R.anim.left_in); //左进 anims[1] = AnimationUtils.loadAnimation(this, R.anim.left_out); //左出 anims[2] = AnimationUtils.loadAnimation(this, R.anim.right_in); //右进 anims[3] = AnimationUtils.loadAnimation(this, R.anim.right_out); //右出 } //定义 添加Imageiew的工具方法 public View aaddImageView(int resId) { ImageView imageView = new ImageView(this); imageView.setImageResource(resId); imageView.setScaleType(ImageView.ScaleType.CENTER); return imageView; } //重写该方法就是要把 activity的触屏事件交给 GestureDetector 处理 @Override public boolean onTouchEvent(MotionEvent event) { return mDetector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //如果第一个触点事件的X坐标 大于第2个触点事件的y坐标 超过 FLIP_DISTANCE if (e1.getX() - e2.getX() > FLIP_DISTANCE) { mFlipper.setInAnimation(anims[0]); mFlipper.setOutAnimation(anims[1]); mFlipper.showPrevious(); return true; } //如果第2个触点x坐标 大于 第1个触点坐标 超过 FLIP_DISTANCE else if (e2.getX() - e1.getX() > FLIP_DISTANCE) { mFlipper.setInAnimation(anims[2]); mFlipper.setOutAnimation(anims[3]); mFlipper.showNext(); return true; } return false; } }
布局界面
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.test.gesturetest.GestureZoomActivity"> <ImageView android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" /> </RelativeLayout>
动画资源
左进 动画<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="500" android:fromXDelta="100%p" android:toXDelta="0" /> <alpha android:duration="500" android:fromAlpha="0.1" android:toAlpha="1"/> </set>
左出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="500" android:fromXDelta="0" android:toXDelta="-100%p"/> <alpha android:duration="500" android:fromAlpha="0.1" android:toAlpha="1.0"/> </set>
右进
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="500" android:fromXDelta="-100%p" android:toXDelta="0"/> <alpha android:duration="500" android:fromAlpha="0.1" android:toAlpha="1.0"/> </set>
右出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="500" android:fromXDelta="0" android:toXDelta="100%p"/> <alpha android:duration="500" android:fromAlpha="0.1" android:toAlpha="1.0"/> </set>
相关文章推荐
- 进程和线程的区别
- java.lang.IllegalStateException:Web app root system property already set to different value 错误原因及解决 Log4j
- 无缝轮播图
- 关闭TV的效果
- Mysql 主从复制(AB复制)
- What are the advantages of semi-supervised learning over supervised and unsupervised learning?
- java基础篇(七)super关键字
- eclipse.ini相关配置
- ubuntu 11.10 安装apache2 tomcat6
- JavaScript强化教程——AJAX
- Unbound classpath container: 'JRE System Library [jdk17060]' in project ***
- GitHub上README.md教程
- DNS 原理入门
- 如何创建PostgreSQL数据库
- Ubantu系统下安装android studio的简单步骤
- Ubuntu 14.04 编译安装 Tengine + PHP5.6
- vmware tool实现centos共享window文件
- App后台学习笔记
- 数组(Array)
- C#高级功能(二)LINQ 和Enumerable类