android 图片浏览时 两手指控制缩放 、移动
来源:互联网 发布:淘宝小石头运动正品 编辑:程序博客网 时间:2024/05/03 01:22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/image_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="matrix"
android:src="@drawable/test" >
</ImageView>
</LinearLayout>
=======================================
public class Main extends Activity {
private static final int NONE = 0;private static final int DRAG = 1;
private static final int ZOOM = 2;
private int mode = NONE;
private float oldDist;
private Matrix matrix = new Matrix();
private Matrix savedMatrix = new Matrix();
private PointF start = new PointF();
private PointF mid = new PointF();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView view = (ImageView) findViewById(R.id.image_view);
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ImageView view = (ImageView) v;
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix); //把原始 Matrix对象保存起来
start.set(event.getX(), event.getY()); //设置x,y坐标
mode = DRAG;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event); //求出手指两点的中点
mode = ZOOM;
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY()
- start.y);
} else if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
view.setImageMatrix(matrix);
return true;
}
//求两点距离
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
//求两点间中点
private void midPoint(PointF point, MotionEvent event) {
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}});
}
- android 图片浏览时 两手指控制缩放 、移动
- 手指控制图片移动
- android仿快图浏览,图片缩放移动效果
- android单手指控制图片的缩放及旋转
- IOS手指控制图片的缩放
- IOS自定义图片浏览器,支持浏览多张图片,点击,双击,两手指缩放操作,并显示加载进度条
- Android手势缩放图片以及图片黏贴在手指随手势移动
- 手机移动端js插件手指缩放图片
- 【Android】一个浏览图片的Android库的实现,可以移动、缩放图片以及滑动切换
- 图片手指缩放
- Android matrix 控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- Android之matrix类控制图片的旋转、缩放、移动
- Android matrix 控制图片的旋转、缩放、移动
- unity 手指移动物体旋转两个手指控制物体大小缩放
- 查看servlet版本,jsp版本
- windows下添加svn服务
- W5300E01-ARM 交叉编译器(Cross Compiler)用户手册 (版本1.0)(三)
- Oracle中返回结果集的存储过程分享
- Struts2源码分析--请求处理(一)
- android 图片浏览时 两手指控制缩放 、移动
- _vimrc
- Java注释
- 如何做一个优秀的eader
- OpenGL ES之glUniform函数
- tcnative-1.dll tomcat 异常
- 2012年第二季度惠普PC销量下滑严重,联想大幅增长25.2%逼近惠普
- web知识---复习笔记一
- virtuemart Paypal (new API) problems