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 ...
随机推荐
- ORACLE 启动过程
1 STARTUP NOMOUNT 1.读取环境变量下dbs目录下的参数文件(spfile/pfile) 查找参数文件的顺序如上面列表的,读取优先级: spfilechongshi.ora > ...
- SpringBoot学习之自动依赖
在前面使用SSM集成时,我们可以使用注解实现无配置化注入,但是这种依赖被进行“人工干预了的”,换句话就是说我们手动进行装配,那么此时还没有达到SpringBoot这种自动装配的效果,那么究竟Sprin ...
- 解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
废话不多说,无法正常运行原因就是win10不兼容中文版的vc,解决方法就是一句话,用英文版的msdev.exe替换中文版的msdev.exe,msdev.exe是vc的启动程序.直接上来教你怎么做.废 ...
- 函数的形参和实参之arguments对象
当函数调用函数时候传入的实参比函数声明时候制定的形参要少时候,剩余的形参就设置成了undefined.例如 function getPropertyNames(o,/*optional*/a){ va ...
- Linux的管理类命令及其使用方法
文件操作相关有一些命令可以帮助我们"修剪"之前看到的文件树. $touch a.txt 如果a.txt不存在,生成一个新的空文档a.txt.如果a.txt存在,那么只更改该文档的时 ...
- 15_Python模块化编程_Python编程之路
之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交 ...
- Python的一个解释凯撒密码的程序
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' { Title:CaserCode Author:naiquan Type:crypto Detai ...
- rhel7 配置普通用户使用sudo
rhel服务器版本安装之后,默认创建的用户不能使用sudo.使用sudo,会提示 user1 is not in the sudoers file. This incident will be rep ...
- 学习ASP.NET Core Razor 编程系列七——修改列表页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- python学习之路网络编程篇(第五篇)
paramiko简介 paramiko 是基于Python实现的SSH2远程安装连接,支持认证及秘钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能. paramiko安装 #!/bin/b ...