`
轻指飞扬
  • 浏览: 32639 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

运用Android多点触控实现图片放大缩小功能

阅读更多

实现如下图所示效果:

 

 

 

实现步骤:

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;
			}
		});
	}

}

 

 

  • 大小: 394.8 KB
分享到:
评论

相关推荐

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

    主要介绍了Android多点触控实现对图片放大缩小平移,惯性滑动等功能的相关资料,需要的朋友可以参考下

    surfaceview 多点触控移动放大缩小

    本篇将详细讲解如何在SurfaceView中实现多点触控,以及如何实现在触摸事件中的移动和放大缩小功能。 1. SurfaceView基础 SurfaceView不同于普通的View,它拥有自己的Surface对象,可以独立于UI线程进行渲染,避免...

    android多点触控放大缩小图片demo

    本教程将基于提供的"android多点触控放大缩小图片demo"来深入讲解如何实现这一功能。 首先,我们要理解多点触控的基本原理。Android系统支持同时检测多个触摸事件,通过`MotionEvent`类来处理这些事件。当用户同时...

    Android多点触控放大缩小图片

    通过以上步骤和示例代码,你可以实现Android应用中的多点触控图片放大缩小功能。在实际开发中,可能还需要考虑性能优化、手势冲突等问题,但基本思路就是这些。记得在实现过程中不断测试和调整,以提供最佳的用户...

    flex 多点触控组件,可实现图片放大缩小旋转

    flash,多点触控开发 经过自己优化,基于BorderContainer,只要往里面的image里面放入图片即可实现多点触控的旋转放大缩小灯操作。

    Android中使用拖拉与多点触控功能实现图片的拖拉与缩放功能案例

    在Android应用开发中,用户交互体验是至关...总的来说,Android中的拖拉与多点触控功能为开发者提供了丰富的交互手段,能够实现更生动、直观的用户体验。理解并熟练运用这些功能,是Android应用开发者必备的技能之一。

    基于ImageView的多点触控,双击放大缩小以及结合ViewPager的事件冲突

    双击后,可以通过改变ImageView的ScaleType和scaleX/scaleY属性来实现图片的放大和缩小。 自由移动则需要实现ImageView的平移功能。这通常通过监听MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP事件,计算手指...

    android多点触控缩放图片

    以上就是Android多点触控缩放图片的核心知识点,实际应用中可能还需要考虑手势冲突、手势流畅度、图片质量等因素,但这个基础框架能帮助你开始实现基本的缩放功能。记得在实践中不断优化和完善,以提供更好的用户...

    photoView图片多点触控放大缩小

    在Android开发中,图片展示是常见的需求之一,而如何实现图片的多点触控放大缩小功能则是一项重要的技术。在给定的标题“photoView图片多点触控放大缩小”中,我们关注的是一个名为`photoView`的组件,它是专门为...

    安卓Android源码——多点触控实例源码.zip

    在安卓(Android)平台上,开发多点触控功能是实现用户交互的重要部分,尤其是在创建复杂的触摸界面时。这个“安卓Android源码——多点触控实例源码.zip”压缩包包含了一个具体的多点触控应用的源代码,可以帮助...

    Android 多点触控实例源码.zip源码资源下载

    通过下载并研究"Android 多点触控实例源码.zip",开发者不仅可以加深对Android多点触控机制的理解,还能学习到如何在实际项目中实现这些功能,提高应用的用户体验。同时,该源码也适合作为教学材料,帮助初学者快速...

    多点触控 图片的缩放

    本文将深入探讨如何实现对指定图片的多点触控缩放功能,以及如何利用gallery容器来存储和展示多张图片。 一、多点触控基础 多点触控(Multi-Touch)是指通过两个或更多个触点同时与屏幕进行交互的技术。在Android和...

    Android 多点触控实例--图片的缩放

    本文将深入探讨如何在Android应用程序中实现图片的多点触控缩放功能。我们将讨论以下几个关键知识点: 1. **手势检测**: 在Android中,多点触控依赖于手势检测。我们可以通过监听MotionEvent事件来捕获用户的触摸...

    Android多点触控技术实战,对图片进行缩放和移动Demo

    总之,"Android多点触控技术实战,对图片进行缩放和移动Demo"是一个很好的学习资源,通过实践可以深入了解Android的多点触控机制,以及如何在实际应用中实现图片的缩放和拖动功能。如果你在阅读和理解代码过程中遇到...

    Android 多点触控实例源码.zip

    "Android 多点触控实例源码.zip"是一个包含实现多点触控功能的Android应用程序的源代码资源,对于开发者来说,这是一个学习和参考的宝贵资料。 源码中可能包含了以下几个关键知识点: 1. **MotionEvent**:在...

    Android 多点触控实例

    一、Android多点触控基础 1. MotionEvent类:在Android中,`MotionEvent`类是用于表示触摸屏幕事件的核心类。它包含了关于触摸事件的所有信息,如动作类型(ACTION_DOWN, ACTION_UP, ACTION_MOVE等)、坐标位置以及...

    Android 多点触控实例源码-IT计算机-毕业设计.zip

    这个名为"Android 多点触控实例源码"的压缩包提供了实现这一功能的源代码,对于学习和理解Android多点触控编程具有极大的帮助。 1. **Android多点触控基础** - 触摸事件:Android系统通过`MotionEvent`类处理触摸...

    Android高级应用源码-多点触控控制字体大小,源码中有详细注释,简单Demo.zip

    总的来说,这个Demo涵盖了Android多点触控事件的处理和UI动态更新,对于开发者来说,这是一个很好的学习实例,可以帮助他们理解如何在实际应用中实现类似的功能。通过研究源码,开发者不仅可以掌握多点触控的基本...

Global site tag (gtag.js) - Google Analytics