封装的android监听手指左右滑动屏幕的事件类分享
作者:junjie 时间:2021-10-21 07:10:08
左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。
简单的只需要几行就可以了,下面那个类是封装好了的。
package com.example.test;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//这里的xml是一个空白的layout
//需要监听左右滑动事件的view
RelativeLayout view = (RelativeLayout) this.findViewById(R.id.layout);
//setLongClickable是必须的
view.setLongClickable(true);
view.setOnTouchListener(new MyGestureListener(this));
}
/**
* 继承GestureListener,重写left和right方法
*/
private class MyGestureListener extends GestureListener {
public MyGestureListener(Context context) {
super(context);
}
@Override
public boolean left() {
Log.e("test", "向左滑");
return super.left();
}
@Override
public boolean right() {
Log.e("test", "向右滑");
return super.right();
}
}
}
package com.example.test;
import android.content.Context;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.GestureDetector;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.MotionEvent;
/**
* 实现监听左右滑动的事件,哪个view需要的时候直接setOnTouchListener就可以用了
* @author LinZhiquan
*
*/
public class GestureListener extends SimpleOnGestureListener implements OnTouchListener {
/** 左右滑动的最短距离 */
private int distance = 100;
/** 左右滑动的最大速度 */
private int velocity = 200;
private GestureDetector gestureDetector;
public GestureListener(Context context) {
super();
gestureDetector = new GestureDetector(context, this);
}
/**
* 向左滑的时候调用的方法,子类应该重写
* @return
*/
public boolean left() {
return false;
}
/**
* 向右滑的时候调用的方法,子类应该重写
* @return
*/
public boolean right() {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度(像素/秒)
// velocityY:Y轴上的移动速度(像素/秒)
// 向左滑
if (e1.getX() - e2.getX() > distance
&& Math.abs(velocityX) > velocity) {
left();
}
// 向右滑
if (e2.getX() - e1.getX() > distance
&& Math.abs(velocityX) > velocity) {
right();
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
gestureDetector.onTouchEvent(event);
return false;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
public int getVelocity() {
return velocity;
}
public void setVelocity(int velocity) {
this.velocity = velocity;
}
public GestureDetector getGestureDetector() {
return gestureDetector;
}
public void setGestureDetector(GestureDetector gestureDetector) {
this.gestureDetector = gestureDetector;
}
}
标签:android,监听,手指,滑动,屏幕
0
投稿
猜你喜欢
详解Java中数组判断元素存在几种方式比较
2021-09-25 13:49:21
Android 一些常用的混淆Proguard
2021-10-13 06:46:29
java中final与finally的使用介绍
2023-04-21 05:36:43
SpringCloud实现灰度发布的方法步骤
2023-03-17 05:18:37
SpringBoot中使用Redis Stream实现消息监听示例
2021-09-02 04:42:07
C#算法之无重复字符的最长子串
2021-05-24 21:56:59
Android使用Scroll+Fragment仿京东分类效果
2022-11-17 16:56:48
在Unity中捕捉Android的常用按钮返回事件
2023-01-31 00:11:36
Android实现数字跳动效果的TextView方法示例
2023-05-24 16:54:29
Android开发笔记之:深入理解Cursor相关的性能问题
2021-10-31 15:06:49
SpringMVC实现多文件上传
2023-10-12 16:49:15
Java日期时间操作的方法
2021-12-27 18:36:05
如何用Dos命令运行Java版HelloWorld你知道吗
2022-07-24 22:32:26
C#下解析HTML的两种方法介绍
2021-07-03 16:08:21
为IObservable实现自己的运算符(详解)
2022-04-02 08:58:15
常见JavaWeb安全问题和解决方案
2023-11-09 01:02:17
android TextView设置中文字体加粗实现方法
2023-08-06 02:32:03
C#使用yield关键字让自定义集合实现foreach遍历的方法
2022-07-21 11:44:28
基于hibernate框架在eclipse下的配置方法(必看篇)
2022-11-09 20:30:26
Android AutoCompleteTextView连接数据库自动提示的方法(附demo源码下载)
2023-09-23 14:53:20