Android 手势水平监听判断
package com.zihao.ui; import com.zihao.R; import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.Toast; /**
*
* @ClassName: MainActivity
* @Description: Android 手势水平监听判断
* @author zeze
* @date 2015年11月3日 下午4:16:11
*
*/
public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
// 创建一个用于识别收拾的GestureDetector对象
@SuppressWarnings("deprecation")
private GestureDetector detector = new GestureDetector(this);
// 新建一个LinearLayout布局对象,这里是指主页面的布局
private LinearLayout myLayout; private int FLING_MIN_DISTANCE = 120;// 移动最小距离
private static final int FLING_MIN_VELOCITY = 200;// 移动最大速度
// 定义的Toast提示框显示时间
private int TIME_OUT = 1000;
private static final String TAG = "Main"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLayout = (LinearLayout) findViewById(R.id.test_layout);
// 为布局绑定监听
myLayout.setOnTouchListener(this);
} /**
* 手势滑动时别调用
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "Y:"+(e1.getY() - e2.getY()));
Log.d(TAG, "X:"+(e1.getX() - e2.getX()));
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度(像素/秒)
// velocityY:Y轴上的移动速度(像素/秒)
// X轴的坐标位移大于FLING_MIN_DISTANCE,y轴的坐标位移小于30,且移动速度大于FLING_MIN_VELOCITY个像素/秒
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(e1.getY() - e2.getY()) < 100 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// 水平向左滑动
Toast.makeText(this, "向左滑动", TIME_OUT).show();
}
else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(e1.getY() - e2.getY()) < 100 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// 水平向右滑动
Toast.makeText(this, "向右滑动", TIME_OUT).show();
}
return false;
} /**
* 长按时被调用
*/
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "触发长按回调");
// Toast.makeText(this, "触发长按回调", TIME_OUT).show();
} /**
* 滚动时调用
*/
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
} /**
* 在按下动作时被调用
*/
@Override
public boolean onDown(MotionEvent e) {
Log.d(TAG, "按下回调");
// Toast.makeText(this, "按下回调", TIME_OUT).show();
return false;
} /**
* 按住时被调用
*/
@Override
public void onShowPress(MotionEvent e) {
Log.d(TAG, "按住不松回调");
// Toast.makeText(this, "按住不松回调", TIME_OUT).show();
} /**
* 抬起时被调用
*/
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(TAG, "触发抬起回调");
// Toast.makeText(this, "触发抬起回调", TIME_OUT).show();
return false;
} /**
* 重写OnTouchListener的onTouch方法 此方法在触摸屏被触摸,即发生触摸事件(接触和抚摸两个事件)的时候被调用
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
}
package com.zihao.ui; import com.zihao.R; import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.Toast; /**
*
* @ClassName: MainActivity
* @Description: Android 手势水平监听判断
* @author zeze
* @date 2015年11月3日 下午4:16:11
*
*/
public class MainActivity extends Activity implements OnTouchListener, OnGestureListener {
// 创建一个用于识别收拾的GestureDetector对象
@SuppressWarnings("deprecation")
private GestureDetector detector = new GestureDetector(this);
// 新建一个LinearLayout布局对象,这里是指主页面的布局
private LinearLayout myLayout; private int FLING_MIN_DISTANCE = 120;// 移动最小距离
private static final int FLING_MIN_VELOCITY = 200;// 移动最大速度
// 定义的Toast提示框显示时间
private int TIME_OUT = 1000;
private static final String TAG = "Main"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myLayout = (LinearLayout) findViewById(R.id.test_layout);
// 为布局绑定监听
myLayout.setOnTouchListener(this);
} /**
* 手势滑动时别调用
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.d(TAG, "Y:"+(e1.getY() - e2.getY()));
Log.d(TAG, "X:"+(e1.getX() - e2.getX()));
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度(像素/秒)
// velocityY:Y轴上的移动速度(像素/秒)
// X轴的坐标位移大于FLING_MIN_DISTANCE,y轴的坐标位移小于30,且移动速度大于FLING_MIN_VELOCITY个像素/秒
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(e1.getY() - e2.getY()) < 100 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// 水平向左滑动
Toast.makeText(this, "向左滑动", TIME_OUT).show();
}
else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(e1.getY() - e2.getY()) < 100 && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
// 水平向右滑动
Toast.makeText(this, "向右滑动", TIME_OUT).show();
}
return false;
} /**
* 长按时被调用
*/
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "触发长按回调");
// Toast.makeText(this, "触发长按回调", TIME_OUT).show();
} /**
* 滚动时调用
*/
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
} /**
* 在按下动作时被调用
*/
@Override
public boolean onDown(MotionEvent e) {
Log.d(TAG, "按下回调");
// Toast.makeText(this, "按下回调", TIME_OUT).show();
return false;
} /**
* 按住时被调用
*/
@Override
public void onShowPress(MotionEvent e) {
Log.d(TAG, "按住不松回调");
// Toast.makeText(this, "按住不松回调", TIME_OUT).show();
} /**
* 抬起时被调用
*/
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(TAG, "触发抬起回调");
// Toast.makeText(this, "触发抬起回调", TIME_OUT).show();
return false;
} /**
* 重写OnTouchListener的onTouch方法 此方法在触摸屏被触摸,即发生触摸事件(接触和抚摸两个事件)的时候被调用
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
}
Android 手势水平监听判断的更多相关文章
- android ListView滚动条监听判断滚动到底部还是顶部
代码: lv.setOnScrollListener(new OnScrollListener() { public void onScrollStateChanged(AbsListView vie ...
- 【Android】ListView监听上下滑动(判断是否显示返回顶部按钮
设置滚动监听判断ListView的滚动方向同时获取屏幕高度.ListView实际高度,判断是否需要展示返回顶部按钮 package com.zihao.activity; import java. ...
- android的电话监听
android的电话监听 新建一个项目,结构图如下: PhoneService: package com.demo.tingdianhua; import android.app.Service; i ...
- Android实现网络监听
一.Android Wifi常用广播 网络开发中主体会使用到的action: ConnectivityManager.CONNECTIVITY_ACTION WifiManager.WIFI_STAT ...
- Android中如何监听GPS开启和关闭
转自 chenming 原文 Android中如何监听GPS开启和关闭 摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...
- Android手机上监听短信的两种方式
Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...
- WPF - 监听判断键盘组合键的按下
对于键盘事件PreviewKeyDown.PreviewKeyUp.KeyDown.KeyUp,在其中检查当次事件是哪个按键触发的很简单,只需要判断KeyEventArgs类型的事件参数e的Key属性 ...
- Android零基础入门第34节:Android中基于监听的事件处理
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
- Android RecyclerView滑动监听,判断是否滑动到了最后一个item
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...
随机推荐
- 3. 量化交易策略 - https://github.com/3123958139/blog-3123958139/README.md
3. 量化交易策略 * 输入数据 - 只取最原始可靠的,如 * date * open * high * low * close * volume * 输出数据 - 根据数理统计取权重,把 o, h, ...
- CentOS/RHEL安装oracle 11G
系统:RHEL6.5 + oracle11G x86_64 (CentOS上安装与此大同小异) 使用本地yum源(提前下载pdksh包),具体过程参考(适用于RHEL/CentOS):http://w ...
- Semantic ui 学习笔记 持续更新
这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ ...
- iOS 加急申请每个开发者必须会
加急申请原来做过很多次,有成功,有拒绝(最终还是成功,一次不行,被拒绝后多来几下即可,直到成功).但是听朋友说了一件事情,很是不解:他们希望能快速审核上线,在淘宝里面找加速商店,首次上线12000元, ...
- C#通用类型转换 Convert.ChangeType
]; object innerValue = ChangeType(value, innerType); return Activator.CreateInstance ...
- Java中的LookAndFeel
Java'中的几种Look and Feel1.Metal风格 (默认)String lookAndFeel = "javax.swing.plaf.metal.MetalLookAndFe ...
- 关于在windows上的wamp集成环境和xampp上安装mongo扩展
今天来学习下mongodb,在装PHP扩展的时候本来是一个很轻松的事情,结果并不是我想想的那么简单. 我的集成环境是xampp的php版本是5.6的x86.我开启了安全模式,所以我需要mongo时ts ...
- 关于shell脚本时遇value too great for base (error token is "08")
今天在书写一个定时cp脚本时遇到了一个问题,value too great for base (error token is "08") 在网上查看到原来是以0开头的数字 系统会默 ...
- Linux服务器管理: 系统的进程管理后台进程的切换和相关命令
1.把进程放入到后台: [root@localhost/]#tar -zcf etc.tar.gz /etc & //这种方法是在后台运行的 [root@localhost ...
- Java实验2-数据库编程
目标:掌握Java数据库编程 内容: 学生选课系统包括如下数据库表 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Ccredi ...