用简单的方法,在android上实现手势放大缩小功能

Android ImageView 手势控制放大缩小 滑屏切换 package com.dawnpro.dfacmobile.cpzs; import java.io.InputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import 阅读详情
package com.example.eventtest;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGestureListener;
import android.graphics.Point;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	
	double nLenStart = 0;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {	
				
		int nCnt = event.getPointerCount();
		
		int n = event.getAction();
		if( (event.getAction()&MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN && 2 == nCnt)//<span style="color:#ff0000;">2表示两个手指</span>
		{
					
			for(int i=0; i< nCnt; i++)
			{
				float x = event.getX(i);
				float y = event.getY(i);
				
				Point pt = new Point((int)x, (int)y);
	
			}
			
			int xlen = Math.abs((int)event.getX(0) - (int)event.getX(1));
			int ylen = Math.abs((int)event.getY(0) - (int)event.getY(1));
			
			nLenStart = Math.sqrt((double)xlen*xlen + (double)ylen * ylen);
			
			
		}else if( (event.getAction()&MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP  && 2 == nCnt)
		{
			
			for(int i=0; i< nCnt; i++)
			{
				float x = event.getX(i);
				float y = event.getY(i);
				
				Point pt = new Point((int)x, (int)y);

			}
			
			int xlen = Math.abs((int)event.getX(0) - (int)event.getX(1));
			int ylen = Math.abs((int)event.getY(0) - (int)event.getY(1));
			
			double nLenEnd = Math.sqrt((double)xlen*xlen + (double)ylen * ylen);
			
			if(nLenEnd > nLenStart)//通过两个手指开始距离和结束距离,来判断放大缩小
			{
				Toast.makeText(getApplicationContext(), "放大", 3000).show();
			}
			else
			{
				Toast.makeText(getApplicationContext(), "缩小", 3000).show();
			}
		}
		
		
	
		return super.onTouchEvent(event);
	}


}


基础知识:

getAction()方法返回的是int类型,用到的只有低16位,其中:低八位是动作的类型,高8位是触摸点索引值的表示(单点为0,双点为1)

获得动作类型: int action = event.getAction() & ACTION_MASK 或者使用 getActionMasked()

获得触摸点索引类型: int pointerIndex = (event.getAction() & ACTION_POINTER_INDEX_MASK ) >> ACTION_POINTER_INDEX_SHIFT

或者使用 getActionIndex()

 

Android Studio 读取手机媒体图册实例——相册app(可实现缩略图、点击放大、手势放大缩小、左右滑动切换、画笔编辑保存) Android读取手机媒体图册实例——相册app(可实现缩略图、点击放大、手势放大缩小、左右滑动切换、画笔编辑保存) 阅读详情

相关推荐

Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能

首先推荐一下鸿洋大大的打造个性的图片预览与多点触控视频教程,这套教程教我们一步一步实现了多点触控实现对图片的平移和缩放的功能,这篇文章我将在鸿洋大大的基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释public

阿拉灯神灯的专栏 9861

Android中实现双指缩放的功能

Android中实现双指缩放的功能 安卓中实现将图片缩放的功能提供了一个很好的类:ScaleGestureDetector,本章就介绍使用canvas和ScaleGestureDetector类实现缩放的功能,如果要想详细了解ScaleGestureDetector请参考博文Android的ScaleGestureDetector缩放类详解 1. 先初始化缩放比和图片居中绘制的坐标点 float...

weixin_43796132的博客 5054

Android实现view双指平移、缩放、旋转 (附完整源码)

Android实现view双指平移、缩放、旋转 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 534

Android App开发----界面缩放功能的实现

Android API 提供了ScaleGestureDetector类用于处理缩放手势,它主要由两部分组成: 一、ScaleGestureDetector主类,主要用于设置监测的对象和监听器,还有获取手势的各种功能相关信息,比如手指触点的坐标、触点间的距离等等。 二、主类的内部接口ScaleGestureDetector.OnScaleGestureListener,用于处理手势,让你可以自己编写程序规定手势要执行什么样的功能。 关系图大致如下...

徘徊的风 2443

Android图片手势交互:放大缩小与移动的实现

是Android中用于检测缩放手势的一个工具类。这个类能够在用户进行多指缩放操作时,提供缩放开始、进行中和结束的监听。其主要作用是为开发者提供了三个重要时间点的回调,分别是onScale和onScaleEnd。以下是主要方法的简要介绍:: 当缩放开始时调用。可以在此方法中进行初始化操作,比如记录初始缩放比例。: 当用户正在缩放时调用。此方法提供了一系列参数,如缩放因子(scaleFactor)、焦点点坐标(focusX, focusY)等。: 当缩放结束时调用。

weixin_29840475的博客 432

Android实现图片手势放大缩小功能

此工程专门针对Android应用中实现手势控制图片缩放的完全攻略,更可多张图片分别切换详细查看,采用了Matrix矩阵的方法,实例讲解了包括触摸点设置与各种冲突的处理等方面,相当全面,需要的朋友可以参考下

Android控件全解手册 - 任意View缩放平移工具-实现思路和讲解

这个功能肯定需要监听用户的手势,我本来想的是直接重新控件的onTouchEvent方法的,不过前人用了一个`GestureDetector`这个类及其子类和一些相关监听。这个以前确实没用到过,简单看了一下后,这是个好东西啊,缩放,平移手势全帮你写好了,还是系统自带的方法,有了这个神器,实现平移缩放还不是分分钟的事!

空名先生 2157

android图片的放大缩小移动手势识别

通过手势对图片放大缩小移动,包含三个类,其中BitmapUtil可以读取drawable中的图片,等比列缩放,保存至本地。

android实现控件的手势缩放、移动以及双击还原

我分四部分介绍:        1.Imageview利用Matrix和OnScaleGestureListener实现手势缩放;        2.在第一部分的基础上实现图片跟随手指进行滑动;        3.在一、二的基础上利用GestureDetector的OnDoubleTap回调实现图片双击还原;        4.在一、二、三的基础上将ImageView扩展为FrameLay...

wozuihaole的博客 3416

superpowers-中文使用说明

《obra/superpowers:AI辅助开发的流程纪律工具集》 摘要:obra/superpowers是一套面向AI辅助软件开发的系统化流程规范,包含14个核心技能,强调"先理解后行动"的纪律性开发方法。该工具集定义了从头脑风暴到代码评审的完整工作流,要求严格遵循测试驱动开发、子代理隔离执行等原则。核心特色包括:1) 任何实现前必须完成设计和评审;2) 采用红-绿-重构的TDD循环;3) 复杂任务通过独立子代理串行处理;4) 所有产出需经过双重验证(规格合规+代码质量)。该工具集特别注重文档化和可验证性

qq_22786633的博客 765

QTableView实现表格加载百万条数据

本文介绍用QTableView实现加载100万条数据显示到表格。 1.创建工程 用Qt Creator创建Qt Widgets Application项目,基类选择QWidget,创建好了,如图: 2.添加QTableView控件 在widget.ui中添加QTableView控件,和QPushButton,采用栅格布局,如图: 3.添加函数 头文件 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Wid

丁爸的博客 8270

Android浅学两点触摸

Android浅学两点触摸安卓手机两点触摸,获取两点之间的位置变化,判断是放大,缩小还是移动package com.multitouchactivity;import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.widget.TextView;publi

走到无路可退 336

京东商品多维特征提取:基于时空大模型的实时库存预测接口设计

在电商行业,库存管理是供应链的核心环节之一。库存水平过高会导致资金占用、仓储成本增加,而库存水平过低则可能引发缺货风险,影响客户满意度和平台声誉。京东作为中国领先的电商平台,拥有海量的商品数据和复杂的业务场景,传统的库存预测方法难以应对市场动态变化和业务需求。时空大模型作为一种融合时间序列分析和空间特征提取的前沿技术,能够捕捉商品多维特征在时空维度上的变化规律,为实时库存预测提供更精准的决策依据。

FB13713612741的博客 954

android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果

首先呢,还是一贯作风,我们先来看看众多应用中的示例:(这种效果是很常见的,可以说应用的必须品.)                             搜狐客户端                                    百度新闻客户端                              新浪微博                              凤凰新闻客

jj120522的专栏 5万+

MaxDEA如何计算超效率DEA

MaxDEA如何计算超效率DEA第一步,导入数据,设置输出和输出,点击OK;第二步,运行模型; 本文计算的是超效率DEA-BCC。 第一步,导入数据,设置输出和输出,点击OK; 第二步,运行模型; 在distance选项框中选择Radial:CCR(1978);BCC(1984)。 在Orientation中选择Non-oriented。其中,Input-oriented是投入最小;Outp...

王樰沫 1万+

Python验证码识别神器ddddocr:5分钟搞定网站登录自动化(附完整代码)

本文详细介绍了如何使用Python开源库ddddocr快速实现验证码识别,结合Selenium完成网站登录自动化。ddddocr作为轻量级OCR工具,支持多种验证码类型,识别速度快且准确率高,特别适合自动化测试和爬虫开发。文章包含完整代码示例,从环境配置到实战应用,帮助开发者5分钟内实现验证码破解。

sprite的博客 798

安卓手势处理(三)之实现图片的放大和缩小

这一篇来实现下面的效果: 其实上面的效果可以用ScaleGestureDetector很容易实现,不过在这里我想自己动手实现一下这个简单的功能,然后在后面用GestureDetector来实现更全面的效果,并且封装成一个可支持手势放大缩小的Imageview。 ImageView的缩小放大是基于Matrix的,这个类其实是一个矩阵,放大、缩小、位移、旋转其实就是矩阵变换操作。具体可以看这篇文章:...

whoami_I的博客 1351

python基础语法与数据结构

本文摘要: Python基础语法包含输入输出、函数、变量、数据类型及运算符等内容。输入函数input()获取键盘输入并以字符串存储,输出函数print()可格式化输出数据。函数通过def定义,可带参数和返回值,提高代码复用性。变量无需声明类型,可动态赋值。数据类型包括数字、字符串、布尔及复合类型,可通过type()查看。运算符包含算术、赋值等类型,其中复合赋值运算符如+=可简化运算。类型转换函数如int()、str()等可实现显式类型转换。这些基础语法构成Python编程的核心要素。

MM602388的博客 432

Android手势放大缩小组件

每天学一点2020.4.22(Android-1)Android手势放大缩小组件1. 在Activity中使用在Fragment中使用 Android手势放大缩小组件 这次是我第一次分享每天所学到的东西。今天所要分享的是在Android中实现对组件进行缩放(包括ImageView,TextView等组件)。实现该功能主要依靠ScaleGestureDetector类,该类主要是用于识别一些特定的手...

qq_42866851的博客 1373

支付宝域名如何加入白名单(扫码老是弹窗)

支付宝扫码之后,遇到非支付宝官方网页,请确认是否继续访问弹窗,问题解决办法。本章教程提供解决办法,亲测有效。

猿小白的博客 9188

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 551

Android 图片点击放大缩小手势操作以及解决Viewpager左右滑动与ImageView手势冲突导致左右滑动失效问题

在我的项目中,有点击图片banner后放大浏览的功能。我的做法就是创建一个专门的图片显示Activity,布局里面用ViewPage,这样就能控制图片的左右滑动,并且控制首先显示第几张图片。 功能是ok的,显示也是正常的。但我花费了好几天的时间来实现、完善这个功能。 ShowMoreImageActivity /** * 图片放大 */ public class ShowMoreImageActivity extends BaseActivity { @FindId(R.id.vp)

u014714188的博客 1879

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android图片的手动放大缩小

利用缩放因子进行图片的放大缩小,效果图如下 在实现过程中如出现直接崩溃的情况:在全局配置文件中加入android:largeHeap=&amp;quot;true&amp;quot;即可解决问题,在文章最后有现成代码 步骤: 1.布局文件 android:scaleType=&amp;quot;matrix&amp;quot;记得加上,不然没有效果 2.控件实例化及处理机制的取代 3.进行逻辑处理,并利用Matrix进行图片处理其中nowScale 及...

计蒙不吃鱼的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android实现图片的手动放大缩小(附带源码)

Android实现图片的手动放大缩小(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1895

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android实现在线预览图片,手势放大缩小

android实现在线预览图片,手势放大缩小 简要描述 首先对文件类型进行判断。WPS不支持在线预览图片,当文件是doc、xls、pdf等,调用WPS。图片时,调用预览图片方法 1.判断文件类型方法 2.新建一个Activity类,并且继承Activity,来实现对图片的预览 Intent intent=new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

就是不掉头发 41万+

android 手势放缩_AIR Android:放大与缩小手势

放大与缩小手势(1)放大与缩小手势对应TransformGestureEvent. GESTURE_ZOOM事件类型,使用时要求两个手指触摸屏幕,同时向外或向内做放缩动作,如图3-2所示。图3-2 放缩手势放缩手势操作起来简单且直观,在触摸屏设备上的应用范围很广,比如浏览网页时控制页面上的字体大小,查看地图时控制地图的缩放级别等。下面的实例程序GestureZoom演示了如何使用ZOOM手势来控制...

weixin_39726408的博客 595
上一篇: linux cp -f还是提示的解决方案
下一篇: android 长度单位 dp dip sp px pt
hellochenlian
博客等级 码龄17年 629粉丝 295原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellochenlian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值