目前手机应用已经越来越多的用到了手势,其中Launcher中大家比较熟悉的就是屏幕缩略图,那么简单的实现就需要了解之前的那篇博客,关于ViewGroup和View的触屏事件的描述,这里也用到了比较重要的两个方法。onInterceptTouchEvent()和onTouchEvent()。
熟悉Launcher的人都会知道源码中会有一个DragLayer类,这个DragLayer是覆盖在WorkSpace上面的一层拖动层,那么要实现两只手指呈“捏”的手势,形成屏幕缩略图就得从该类做文章,重写onInterceptTouchEvent()、onTouchEvent()。
@override
public boolean onInterceptTouchEvent(MotionEvent ev){
if(ev.getPointerCount() == 2&&当前Launcher的一些拖动和显示状态符合生成缩略图){
switch(ev.getAction()& MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_POINTER_DOWN:
twoPointDis = (int)distance(ev);
setLinearEquation(ev);
}
showThumbnail = true;
return true;
}
showThumbnail = false;
//接下来处理不是两手捏的触屏之外的事件。
}
@override
public boolean onTouchEvent(MotionEvent ev){
int action = ev.getAction();
int x = (int) ev.getX();
int y = (int) ev.getY();
if(showThumbnail && ev.getPointerCount() == 2){
int dis;
switch(ev.getAction()& MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_MOVE:
dis=distance(ev);
if((twoPointDis - dis)>生成缩略图最小阈值(80像素,捏的时候移动的距离)&& 当前Launcher的一些拖动和显示状态符合生成缩略图)
thumbnailShow();//包括生成时的动画
else if(((twoPointDis - dis)<-生成缩略图最小阈值(80像素,捏的时候移动的距离)&& 当前Launcher的一些拖动和显示状态符合生成缩略图)
//根据选择的缩略图某一屏返回到workspace
}
return true;
}
showThumbnail = false;
//接下来处理不是两手捏的触屏之外的事件。
}
private int setLinearEquation(MotionEvent ev){
float x0 = ev.getX(0);
float x1 = ev.getX(1);
float y0 = ev.getY(0);
float y1 = ev.getY(1);
slop = (y1-y0)/(x1-x0);
y = (int) (y0-slop*x0);
}
private int distance(MotionEvent ev){
if(ev.getPointerCount()>1){
float x = ev.getX(0)-ev.getX(1);
float y = ev.getY(0)-ev.getY(1)
return (int)Math.sqrt(x*x+y*y);
}else{
return 1;
}
}
分享到:
相关推荐
Android开发:多点触控测试精华代码,支持许多点
实现功能有:多点触控,分屏画图,保存图片,更改画笔颜色(一种,可扩展)
Qt实现多点触控与手势识别
qt5实现多点触控window10
多点触控测试多点触控测试
Unity 多点触控源码,多点触控插件,TouchScript
AutoJs源码-教程_多点触控(6)。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己...
QT5.X版本的多点触控使用双手指缩放图片源码,使用QTCreater编译即可,已在imx6的Linux4.1.15上调试通过,该功能需要触摸屏支持多点触控,如果不支持就不用浪费时间了,第二,需要你自己把触摸屏的驱动移植好,且...
实现对指定图片的多点触控 实现缩放功能 很好的实现对指定图片的放大缩小 里面加入了gallery 容器 实现多张图片的存储
多点触控多模式键盘方案 本方案的思路是通过多指触控方式的不同,将键盘的按键映射成不同的模式,从而扩充键盘按键,缩短键程,提交输入效率。比如,将单指触控+hjkl映射成方向键,四指触控+hjkl映射成窗口布局...
MTA 多点触控归因。 找出哪些渠道最有助于用户转换。楷模该软件包包含以下多点触控归因模型的实现: 沙普利马可夫邵和李的所谓简单概率模型邵和李的袋装逻辑回归附加危害(生存) 此外,还包括一些流行的启发式...
多点触控手势总结,有图有真相。描述了多点触控各种手势说明,有图示。
多点触控缩放图片及单点触控图片移动
Android中使用拖拉与多点触控功能实现图片的拖拉与缩放功能案例(内附APK)!
多点触控
使用ESP32模拟多点蓝牙触摸屏,可以通过android手机连接进行测试。
基于framework 4.5 以及surface runtime制作 如果要运行请安装surface runtime 以及.net 4.5等相关环境 支持 office xls word ppt 浏览 多点触控操作 在大屏运行效果更佳 (40寸以上)
最简单android 多点触控 图片放大,没有任何过多的代码,使用了自定义控件,MotionEvent.ACTION_POINTER_DOWN来标识第二点按下,setFrame来改变片的大小
单张图片预览中图片随手势缩放,平移,并且支持多点触控操作
多点触控缩放图像~ 解决网上某些demo的问题:图像缩小后反弹导致图像变形、缩放功能和onClick、onLongClick事件混乱等