Android GestureDetector实现手势滑动效果
程序员文章站
2023-11-30 11:30:34
本文实例为大家分享了android gesturedetector实现手势滑动的具体代码,供大家参考,具体内容如下
目标效果:
程序运行,手指在屏幕上...
本文实例为大家分享了android gesturedetector实现手势滑动的具体代码,供大家参考,具体内容如下
目标效果:
程序运行,手指在屏幕上从左往右或者从右往左滑动超过一定距离,就会吐司输出滑动方向和距离。
1.activity_main.xml页面放置一个imageview控件。
activity_main.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" tools:context=".mainactivity" > <imageview android:id="@+id/ivshow" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/ic_launcher" /> </relativelayout>
2.mainactivity.java页面实现滑动方法。
mainactivity.java页面:
package com.example.gesturedetector; import android.os.bundle; import android.app.activity; import android.util.log; import android.view.gesturedetector; import android.view.gesturedetector.simpleongesturelistener; import android.view.menu; import android.view.motionevent; import android.view.view; import android.view.view.ontouchlistener; import android.widget.imageview; import android.widget.toast; public class mainactivity extends activity { private imageview ivshow; private gesturedetector gesturedetector; class mygesturelistener extends simpleongesturelistener{ @override /*识别滑动,第一个参数为刚开始事件,第二个参数为结束事件*/ public boolean onfling(motionevent e1, motionevent e2, float velocityx, float velocityy) { if(e1.getx()-e2.getx()>50){ toast.maketext(mainactivity.this,"从右往左滑动"+(e1.getx()-e2.getx()),toast.length_long).show(); }else if(e2.getx()-e1.getx()>50){ toast.maketext(mainactivity.this,"从左往右滑动"+(e2.getx()-e1.getx()),toast.length_long).show(); } return super.onfling(e1, e2, velocityx, velocityy); } } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); gesturedetector=new gesturedetector(mainactivity.this,new mygesturelistener()); ivshow=(imageview) findviewbyid(r.id.ivshow); ivshow.setlongclickable(true); //view必须设置为true,否则手势识别无法正确工作 ivshow.setontouchlistener(new ontouchlistener() { /*可以捕获到触摸屏幕发生的event事件*/ @override public boolean ontouch(view arg0, motionevent event) { gesturedetector.ontouchevent(event);//转发 return false; } }); } }
3.程序较简单,运行就可以显示目标效果了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。