实现如下图所示效果:
实现步骤:
1、为图片控件ImageView设置setOnTouchListener()
iv = (ImageView) findViewById(R.id.picture); iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; default: break; } return false; } });
ACTION_DOWN、ACTION_MOVE、ACTION_UP是事件中最常用的动作,分别代表手指落下、手指移动、手指抬起(离开)
2、我们只需处理ACTION_MOVE 就可以实现该功能,在实现功能之前我们先了解一下OnTouch方法的第二个参数MotionEvent, 从这个参数中我们不仅可以通过getAction()得到事件的类型,还有getX(),getY()可以获取手指在屏幕中的坐标。如果是多点触控可以通过getPointerCount()来获取当前触控点的个数,getX(int pointIndex)、getY(int pointIndex)来得到指定点的坐标。
3、代码不多,也不墨迹了直接上代码
package com.example.multipointtest; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; public class MainActivity extends Activity { ImageView iv; int currentDistance; int lastDistance = -1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: if(event.getPointerCount()>=2){ float xLength = event.getX(1) - event.getX(0); float yLength = event.getY(1) - event.getY(0); //利用勾股定理来得到两指之间的距离 currentDistance = (int) Math.sqrt(xLength*xLength + yLength*yLength); if(lastDistance < 0){ lastDistance = currentDistance; break; }else if(currentDistance-lastDistance>5){ //放大 LayoutParams lp = (LayoutParams) iv.getLayoutParams(); lp.height = (int)((float)iv.getMeasuredHeight()*1.05f); lp.width = (int)((float)iv.getMeasuredWidth()*1.05f); iv.setLayoutParams(lp); }else if(currentDistance-lastDistance<-5){ //缩小 LayoutParams lp = (LayoutParams) iv.getLayoutParams(); lp.height = (int)((float)iv.getMeasuredHeight()*0.95f); lp.width = (int)((float)iv.getMeasuredWidth()*0.95f); iv.setLayoutParams(lp); } lastDistance = currentDistance; } break; case MotionEvent.ACTION_UP: break; default: break; } return true; } }); } }
相关推荐
主要介绍了Android多点触控实现对图片放大缩小平移,惯性滑动等功能的相关资料,需要的朋友可以参考下
本篇将详细讲解如何在SurfaceView中实现多点触控,以及如何实现在触摸事件中的移动和放大缩小功能。 1. SurfaceView基础 SurfaceView不同于普通的View,它拥有自己的Surface对象,可以独立于UI线程进行渲染,避免...
本教程将基于提供的"android多点触控放大缩小图片demo"来深入讲解如何实现这一功能。 首先,我们要理解多点触控的基本原理。Android系统支持同时检测多个触摸事件,通过`MotionEvent`类来处理这些事件。当用户同时...
通过以上步骤和示例代码,你可以实现Android应用中的多点触控图片放大缩小功能。在实际开发中,可能还需要考虑性能优化、手势冲突等问题,但基本思路就是这些。记得在实现过程中不断测试和调整,以提供最佳的用户...
flash,多点触控开发 经过自己优化,基于BorderContainer,只要往里面的image里面放入图片即可实现多点触控的旋转放大缩小灯操作。
在Android应用开发中,用户交互体验是至关...总的来说,Android中的拖拉与多点触控功能为开发者提供了丰富的交互手段,能够实现更生动、直观的用户体验。理解并熟练运用这些功能,是Android应用开发者必备的技能之一。
双击后,可以通过改变ImageView的ScaleType和scaleX/scaleY属性来实现图片的放大和缩小。 自由移动则需要实现ImageView的平移功能。这通常通过监听MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP事件,计算手指...
以上就是Android多点触控缩放图片的核心知识点,实际应用中可能还需要考虑手势冲突、手势流畅度、图片质量等因素,但这个基础框架能帮助你开始实现基本的缩放功能。记得在实践中不断优化和完善,以提供更好的用户...
在Android开发中,图片展示是常见的需求之一,而如何实现图片的多点触控放大缩小功能则是一项重要的技术。在给定的标题“photoView图片多点触控放大缩小”中,我们关注的是一个名为`photoView`的组件,它是专门为...
在安卓(Android)平台上,开发多点触控功能是实现用户交互的重要部分,尤其是在创建复杂的触摸界面时。这个“安卓Android源码——多点触控实例源码.zip”压缩包包含了一个具体的多点触控应用的源代码,可以帮助...
通过下载并研究"Android 多点触控实例源码.zip",开发者不仅可以加深对Android多点触控机制的理解,还能学习到如何在实际项目中实现这些功能,提高应用的用户体验。同时,该源码也适合作为教学材料,帮助初学者快速...
本文将深入探讨如何实现对指定图片的多点触控缩放功能,以及如何利用gallery容器来存储和展示多张图片。 一、多点触控基础 多点触控(Multi-Touch)是指通过两个或更多个触点同时与屏幕进行交互的技术。在Android和...
本文将深入探讨如何在Android应用程序中实现图片的多点触控缩放功能。我们将讨论以下几个关键知识点: 1. **手势检测**: 在Android中,多点触控依赖于手势检测。我们可以通过监听MotionEvent事件来捕获用户的触摸...
在本文中,我们将深入探讨如何使用Qt开发框架来实现多点触控(Multi-Touch)功能和手势识别。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,包括Windows、Linux、macOS、Android和iOS等。它提供了丰富的API...
总之,"Android多点触控技术实战,对图片进行缩放和移动Demo"是一个很好的学习资源,通过实践可以深入了解Android的多点触控机制,以及如何在实际应用中实现图片的缩放和拖动功能。如果你在阅读和理解代码过程中遇到...
"Android 多点触控实例源码.zip"是一个包含实现多点触控功能的Android应用程序的源代码资源,对于开发者来说,这是一个学习和参考的宝贵资料。 源码中可能包含了以下几个关键知识点: 1. **MotionEvent**:在...
一、Android多点触控基础 1. MotionEvent类:在Android中,`MotionEvent`类是用于表示触摸屏幕事件的核心类。它包含了关于触摸事件的所有信息,如动作类型(ACTION_DOWN, ACTION_UP, ACTION_MOVE等)、坐标位置以及...
这个名为"Android 多点触控实例源码"的压缩包提供了实现这一功能的源代码,对于学习和理解Android多点触控编程具有极大的帮助。 1. **Android多点触控基础** - 触摸事件:Android系统通过`MotionEvent`类处理触摸...