Android多点触摸缩放图片-android学习之旅(四)
获取多触摸点
核心代码:
获取触摸点的个数和位置
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println("down");
break;
case MotionEvent.ACTION_UP:
System.out.println("触摸点的个数:"+event.getPointerCount());
System.out.println(String.format("x1:%f y1:%f x2:%f y2:%f",event.getX(0),event.getY(0),event.getX(1),event.getY(1)));
// System.out.println("up");
// FrameLayout.LayoutParams lp = (LayoutParams) image.getLayoutParams();
// lp.leftMargin = (int)event.getX();
// lp.rightMargin = (int)event.getY();
// image.setLayoutParams(lp);
// System.out.println(String.format("x:%f,y:%f", event.getX(),event.getY()));
break;
case MotionEvent.ACTION_MOVE:
System.out.println("move");
break;
两个手指缩放android机器人图片
frame.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
System.out.println("down");
break;
case MotionEvent.ACTION_UP:
if (event.getPointerCount()>=2) {
float offsetx = event.getX(0)-event.getX(1);
float offsety = event.getY(0)-event.getY(1);
currentDistance = (float) Math.sqrt(offsetx*offsetx+offsety*offsety);
if (lastDisatance < 0) {
lastDisatance = currentDistance;
}else {
if (currentDistance-lastDisatance > 5) {
FrameLayout.LayoutParams lp = (LayoutParams) image.getLayoutParams();
lp.width = (int) (1.1f*image.getWidth());
lp.height = (int) (1.1f*image.getHeight());
image.setLayoutParams(lp);
lastDisatance = currentDistance;
}else if (lastDisatance-currentDistance > 5) {
FrameLayout.LayoutParams lp = (LayoutParams) image.getLayoutParams();
lp.width = (int) (0.9f*image.getWidth());
lp.height = (int) (0.9f*image.getHeight());
image.setLayoutParams(lp);
lastDisatance = currentDistance;
}
}
}
// System.out.println("触摸点的个数:"+event.getPointerCount());
// System.out.println(String.format("x1:%f y1:%f x2:%f y2:%f",event.getX(0),event.getY(0),event.getX(1),event.getY(1)));
// System.out.println("up");
// FrameLayout.LayoutParams lp = (LayoutParams) image.getLayoutParams();
// lp.leftMargin = (int)event.getX();
// lp.rightMargin = (int)event.getY();
// image.setLayoutParams(lp);
// System.out.println(String.format("x:%f,y:%f", event.getX(),event.getY()));
break;
case MotionEvent.ACTION_MOVE:
System.out.println("move");
break;
default:
break;
}
return false;
}
});
Android多点触摸缩放图片-android学习之旅(四)的更多相关文章
- Android拖动和缩放图片
Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...
- Linux与Android 多点触摸协议【转】
本文转载自:http://blog.csdn.net/xubin341719/article/details/7833277 一.Linux与Android 多点触摸协议 为了使用功能强大的多点触控设 ...
- Linux & Android 多点触摸协议
Linux & Android 多点触摸协议 Android4.0多点触摸入门 1 KERNEL 对于触摸屏的驱动我们简单的划分为两个主要的部分,一个是注册,另一个是上报. 1.1 注册 单点 ...
- Android多点触摸放大缩小图片
1.Activity package com.fit.touchimage; import android.app.Activity; import android.graphics.Bitmap; ...
- Linux/Android多点触摸协议
链接点击打开链接 关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-touch-pr ...
- Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据.这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息. 使用说明 单点触摸信息是以ABS承载 ...
- 搞定android多点触摸模拟
原理在android 创建多点触摸虚拟设备,然后往设备写模拟数据可以
- Linux/Android多点触摸协议【转】
本文转载自: 链接点击打开链接 关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-t ...
- Android 等比例缩放图片
// 缩放图片 public static Bitmap zoomImg(String img, int newWidth ,int newHeight){ // 图片源 Bitmap bm = Bi ...
随机推荐
- [APIO2011]
来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------ A.[Apio2011]方格染色 ...
- bzoj3294[Cqoi2011]放棋子 dp+组合+容斥
3294: [Cqoi2011]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 755 Solved: 294[Submit][Status] ...
- Linux中LCD设备驱动-framebuffer(帧缓冲)【】
转自:https://blog.csdn.net/linux_devices_driver/article/details/7079442 1.framebuffer 帧缓冲 帧缓冲(fram ...
- drools 手动创建kmoudle.xml文件
@Test public void test() { KieServices kieServices = KieServices.Factory.get(); KieResources resourc ...
- 小白的Python之路_day2
Python 的逻辑运算符具有短路原则,例如: or 运算符前面只要是 True,后面都不需要看了,结果就是 True. Python 中表示为真必须用 True,如果用 true 则会当成是变量, ...
- js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法
对于js页面来说,未使用服务端控件,点击下载按钮时不会触发服务端事件,且不会提交数据到服务端页面后台进行数据处理,所以要下载文件比较困难.且使用jQ的post来请求一般处理程序也不能实现文件的下载,根 ...
- OpenCV设置摄像头分辨率及全屏显示
OpenCV3.0下 设置摄像头分辨率为1920*1440,并全屏显示图像窗口. int _tmain(int argc, _TCHAR* argv[]) { Mat frame; VideoCapt ...
- MeshCollider双面化脚本
由于MeshCollider组件可以挂载多个,所以不需要Mesh重新合并了. 除了反转法线还需要反转所有三角面的顺序 脚本如下: using System.Collections; using Sys ...
- 转:Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序
一.原理Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与显示器.键盘和鼠标等输入输出设备的交互,每个有GUI的应用程序都通过网络协议 ...
- 含有分类变量(categorical variable)的逻辑回归(logistic regression)中虚拟变量(哑变量,dummy variable)的理解
版权声明:本文为博主原创文章,博客地址:,欢迎大家相互转载交流. 使用R语言做逻辑回归的时候,当自变量中有分类变量(大于两个)的时候,对于回归模型的结果有一点困惑,搜索相关知识发现不少人也有相同的疑问 ...