Android多点触摸交互处理,放大缩小图片
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"android:id="@+id/frame"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/img"android:background="@drawable/paoku00199"/></FrameLayout>
java
private float currentDistance=0;private float lastDistance=-1;private FrameLayout frame;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);frame= (FrameLayout) findViewById(R.id.frame);final ImageView img= (ImageView) findViewById(R.id.img);frame.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()){case MotionEvent.ACTION_DOWN: //触摸按下Log.i("MotionEvent","ACTION_DOWN");break;}switch (event.getAction()){case MotionEvent.ACTION_MOVE: //触摸移动Log.i("MotionEvent","ACTION_MOVE");FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) img.getLayoutParams();if(event.getPointerCount()==1) {//单个触摸点,并拖动图片System.out.println(String.format("X:%f,Y:%f", event.getX(), event.getY()));layoutParams.leftMargin = (int) event.getX()-10;layoutParams.topMargin = (int) event.getY()-10;img.setLayoutParams(layoutParams);}System.out.println("pointer count 触摸点个数"+event.getPointerCount());//触摸点个数//多个触摸点的坐标//手势放大缩小图片if (event.getPointerCount()>=2){System.out.println(String.format("多个触摸点的坐标X1:%f;Y1:%f", event.getX(0), event.getX(0)));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(lastDistance<0){lastDistance=currentDistance;}else {if(currentDistance-lastDistance>5){ //5px;有误差FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) img.getLayoutParams();System.out.println("放大");lp.width= (int) (1.1f*img.getWidth());lp.height=(int) (1.1f*img.getHeight());img.setLayoutParams(lp);lastDistance=currentDistance; //放大}else if (lastDistance-currentDistance>5){lastDistance=currentDistance; //缩小FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) img.getLayoutParams();lp.width= (int) (0.9f*img.getWidth());lp.height=(int) (0.9f*img.getHeight());img.setLayoutParams(lp);}}}break;}switch (event.getAction()){case MotionEvent.ACTION_UP: //触摸弹起Log.i("MotionEvent","ACTION_UP");break;}return true;//true:需要催发后续事件;false:不需要须发后续事件(只能执行一次)}});}
注意:
private float currentDistance=0;private float lastDistance=-1;
要onClick写在外面;
Android多点触摸交互处理,放大缩小图片相关推荐
- android+放大缩小图片+有jar嘛,Android相册支持点击放大图片,滑动切换图片,手势放大缩小...
[实例简介] 项目使用了开源框架Universal-Image-Loader 显示本地图库所有照片 点击放大,单击退出 双击放大缩小 支持左右滑动查看图片 支持手势放大缩小图片 [实例截图] [核心代 ...
- JavaFX鼠标滚动放大缩小图片
一.鼠标滚动放大缩小图片 package cn.util;import java.io.File; import javafx.application.Application; import java ...
- MTK 驱动(65)---Android 多点触摸协议(Multi-touch Protocol)
Android 多点触摸协议(Multi-touch Protocol) Android 多点触摸协议Multi-touch Protocol A协议 B协议 代码编写 Protocol A Prot ...
- Jquery鼠标滚轮放大缩小图片
使用Jquery鼠标点击图片,划动鼠标滚轮放大缩小图片. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- 鼠标滚轮放大/缩小图片
<img id=pic src=" http://community.csdn.net/images/CSDN_logo.GIF" width=105 height=31 b ...
- jquery---实现滚轮放大缩小图片
(1)滚轮控制放大缩小图片效果如图: 实现代码如下: <!DOCTYPE html> <html><head><meta charset="utf- ...
- 鼠标滚轮 放大缩小图片
js实现鼠标滚轮放大缩小图片 <script> //放大缩小图片 function sdZoom(o) { var zoom=parseInt(o.styl ...
- Markdown给图片添加超链接,点击图片后,跳转新页面。放大缩小图片。
公司用Markdown写了个项目说明 有个需求,就是点击图片,跳转到图片的链接(因为markdown不能放大缩小图片) 下面是超链接用法: ![alt属性文本](图片地址 ''图片title'') a ...
- android怎么监听多点触摸_Android多点触摸交互处理
触摸操作是安卓最基本的交互方法,掌握多点触摸的开发可增强应用交互体验.首先需要了解触摸事件的侦听和传递,同时,本文介绍了单点.多点触摸的使用方法,并在此基础上,使用多点触控完成了一个缩放照片的简单例子 ...
最新文章
- 头脑风暴-如何减少软件项目对于人的依赖性。
- Java开发必会的Linux命令
- Java 8 - 04 类型检查、类型推断以及限制
- DL之VGGNet:VGGNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- LeetCode Algorithm 剑指 Offer 55 - II. 平衡二叉树
- 怎样才能娶到比尔-盖茨的女儿
- SpringMVC异常处理 自定义异常
- Django运行服务报NameError: name ‘os‘ is not defined-已解决
- 你是否了解新媒体,新媒体简介
- C-COT -- 超越相关滤波:学习连续卷积算子(Continuous Convolution Operators)
- 2019年04月02日清明上海迪士尼游
- 计算机进入不了管理器,电脑没有桌面且任务管理器打不开怎么办
- win7 64位下如何安装配置mysql
- 数据降维处理(PCALAD)
- python:鸡尾酒疗法
- @CrossOrigin Enabling CORS
- qtscrcpy自定义按键_QtScrcpy电脑控制手机 苹果般丝滑华为多屏协同般体验 免安装使用...
- 无向图的最大团/最大独立集 算法总结
- tk芯片智能机刷机方法_安卓智能机(MTK)通用刷机教程(卡刷)
- 【VirtualAPP 双开系列07】第三方 APP Service、Provider 加载分析
热门文章
- 天昊生物16S扩增子绝对定量测序项目文章再次登陆《Science of the Total Environment》...
- metaProdigal:宏基因组序列中的基因和翻译起始位点预测
- Cell子刊:人类微生物组参考基因集中的单体基因
- QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)
- 综述 | 森林微生物组:多样性,复杂性和动态变化(IF:11.3)
- 史上最权威宏基因组软件评估—人工重组宏基因组基准数据集
- R语言使用randomForest包构建随机森林模型的步骤和流程、随机森林算法包括抽样样本(观察)和变量来创建大量的决策树(多个树,构成了森林,而且通过样本抽样和变量抽样,让多个树尽量不同)
- pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)
- R语言在可视化图像中添加文本(Adding Text to plot)
- python使用Spacy迁移学习库进行句法分析实战