Android手势识别GestureDetector类
2015-09-26 19:12
447 查看
Android为手势提供了一个GestureDetector类
要想实现手势的监听需要实现以下两个步骤
1、创建GestureDetector对象 实现GestureDetector.OnGestureListener监听实例
2、//2.为activity的onTouchEvent绑定监听事件
以下是该类实现的demo
ImageSwither.java
activity_image_swither.xml
要想实现手势的监听需要实现以下两个步骤
1、创建GestureDetector对象 实现GestureDetector.OnGestureListener监听实例
2、//2.为activity的onTouchEvent绑定监听事件
以下是该类实现的demo
ImageSwither.java
package lzl.edu.com.gesturedetectordemo; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.Window; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ViewFlipper; public class ImageSwither extends Activity implements GestureDetector.OnGestureListener{ /** * 图片的切换效果。 * 步骤: * 1、找到几张好看的图片,复制到mipmap中。 * 2、运用viewFlipper组件(这个第一次听说过,汗)。该组件是个容器组件。可以添加任意的其他组件 * 3、使用Animation数组为图片设置不同的动画效果。 * 4、创建GestureDetector对象,在onTouchEvent中注册监听事件 * 5、 定义滑动坐标的最小距离 * @param savedInstanceState */ private Animation []animations = new Animation[4]; //设置动画效果的类 private ViewFlipper mViewFlipper; private GestureDetector detector; private final float MIN_DRIC = 50; //定义滑动坐标的最小距离 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_image_swither); detector = new GestureDetector(this); mViewFlipper =(ViewFlipper)findViewById(R.id.viewFlipper); int [] images = new int[]{R.mipmap.girl1,R.mipmap.girl2,R.mipmap.girl3, R.mipmap.girl4,R.mipmap.girl5}; for (int i=0;i<images.length;i++) { mViewFlipper.addView(addImageView(images[i])); } //设置图片淡进淡出的效果 animations[0] = AnimationUtils.loadAnimation(this,R.anim.fade_in); animations[1] = AnimationUtils.loadAnimation(this,R.anim.fade_out); } //设置ImageView的布局 public ImageView addImageView(int id){ ImageView images = new ImageView(this); images.setImageResource(id); images.setScaleType(ImageView.ScaleType.FIT_CENTER); //设置布局 return images; } //在onTouchEvent中为GestureDetectors注册监听事件 @Override public boolean onTouchEvent(MotionEvent event) { return detector.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) { //进行手势的监听,如果e1.getX() - e2.getX()说明是从右往左滑。设置查看上一张图片 if(e1.getX() - e2.getX() > MIN_DRIC){ //设置淡出淡入的效果 mViewFlipper.setInAnimation(animations[0]); mViewFlipper.setOutAnimation(animations[1]); mViewFlipper.showPrevious(); //显示先前的图片 return true; } //进行手势的监听,如果e2.getX() - e1.getX()说明是从右往左滑。设置查看上一张图片 if(e2.getX() - e1.getX() > MIN_DRIC){ //设置淡出淡入的效果 mViewFlipper.setInAnimation(animations[0]); mViewFlipper.setOutAnimation(animations[1]); mViewFlipper.showNext(); //显示下一张的图片 return true; } return false; } }
activity_image_swither.xml
<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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="lzl.edu.com.gesturedetectordemo.ImageSwither"> <ViewFlipper android:id="@+id/viewFlipper" android:layout_width="fill_parent" android:layout_height="fill_parent"></ViewFlipper> </RelativeLayout>
相关文章推荐
- Android进阶之数据库存储
- android最新的工具DateHelper
- 【Android系列】—Android世界全景观
- Android之Touch事件分发机制
- ScrollView和HorizontalScrollView的用法
- android仪表盘,柱形图,折线图,类似于监控网速的那种
- 使用android studio 查看 android 的源代码
- android如何让service不被杀死
- Android中fragment模式
- Android常见出错:OutOfMemoryError与ArrayIndexOutOfBoundsException
- android使用java代码设置textview、button等内容颜色
- Android JSON数据与实体类之间的相互转化-------GSON的用法
- Android 学习笔记之WebService实现远程调用+内部原理分析...
- Android开发日志问题
- Android项目实战-云词典
- Android项目源码运行不起来的七种解决方法
- android中实现截屏的三种思路
- Android进阶之数据存储+Preferences
- 我的Android进阶之旅------>Android中编解码学习笔记
- Android开发拨打座机分机号码