实现如下图所示效果:
实现步骤:
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多点触控实现对图片放大缩小平移,惯性滑动等功能的相关资料,需要的朋友可以参考下
android多点触控放大缩小图片demo
flash,多点触控开发 经过自己优化,基于BorderContainer,只要往里面的image里面放入图片即可实现多点触控的旋转放大缩小灯操作。
Android的多点触控放大缩小图片,如果你感觉好,可以给我评论,不好也可留言。我好改进。
surfaceview 多点触控移动放大缩小.rar
Android中使用拖拉与多点触控功能实现图片的拖拉与缩放功能案例(内附APK)!
Android手势识别-多点触控。 包含在画布中的多点触控和利用多点触控实现图片的放大和缩小
本文通过一个自定义控件ZoomImageView,实现多点触控(移动,多点缩放),双击放大缩小,并在放大缩小过程自解决边界白边的情况,同时结合ViewPager的使用,并解决存在的事件冲突情况。
Android 多点触控实例。 多点触控图像,根据手势随意放大/缩小图像。
在Android上查看图片或者浏览网页时,我们往往有把图片或者网页放大或者缩小的的需求,这样就能够获得更多的细节信息 或者获得更多的全貌信息,多点触摸与绽放功能正是满足这种应用场景的技术。
多点控制实现放大缩小demo 单点控制移动,半透明Activity
图片轮播,并支持多点触控放大或缩小图片,以多点的中心点为中心缩放
在Android上查看图片或者浏览网页时,我们往往有把图片或者网页放大或者缩小的的需求,这样就能够获得更多的细节信息 或者获得更多的全貌信息,多点触摸与绽放功能正是满足这种应用场景的技术。
很有用的东西,两个android ui经常要用到的组件,一个是左右划屏,一个是多点触控放大缩小图片
Android高仿qq发送图片中编辑图片功能,支持图片涂鸦、擦除、改变画笔颜色和...多点触控放大缩小、移动;代码注释清除,扩展性强.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android图片浏览,图片放大缩小平移,使用多点触控和双击。 滚动,以平滑滚动甩。
SDL是Simple DirectMedia Layer 的缩写,是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要...本代码示例了在Android上SDL多点触控实现放大缩小的功能。
两个手指滑动缩放画面用于Android手机端,没有进行ios的测试
根据github上demo修改的,支持手势滑动,多点触控放大缩小,支持viewpager中放大所有,支持网络下载图片...完整并且完美的例子,很好用的...