失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 手势图片

手势图片

时间:2019-03-02 09:35:29

相关推荐

手势图片

在Android中实现手势对于图片的操作,首先需要对MotionEvent以及Matrix两个类有所了解实现对手势的识别以及图片变动的操作。

在实现该功能时候需要在xml中要将图片的缩放格式改成Matrix才行.

下面代码主要实现两个demo,一个是关于matrix的简单测试以及图片的手势缩放与移动demo.。。

XML代码如下:

<?xmlversion="1.0"encoding="UTF-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_height="fill_parent"android:layout_width="fill_parent"android:id="@+id/linearLayout1"android:weightSum="1"><ImageViewandroid:layout_width="wrap_content"android:id="@+id/imag"android:layout_height="wrap_content"android:src="@drawable/a"android:layout_gravity="center"android:scaleType="matrix"></ImageView><ImageViewandroid:layout_width="wrap_content"android:id="@+id/imag1"android:scaleType="matrix"android:layout_height="wrap_content"></ImageView></LinearLayout>

实现代码:packagehfut.gmm;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Matrix;importandroid.graphics.Paint;importandroid.graphics.PointF;importandroid.os.Bundle;importandroid.util.DisplayMetrics;importandroid.util.FloatMath;importandroid.util.Log;importandroid.view.GestureDetector;importandroid.view.MotionEvent;importandroid.view.View;importandroid.view.GestureDetector.OnGestureListener;importandroid.view.View.OnTouchListener;importandroid.view.animation.AnimationUtils;importandroid.widget.ImageView;publicclassImg_controlextendsActivityimplementsOnTouchListener {//implements OnTouchListener {privateImageView imgview;privateImageView img;privateMatrix matrix=newMatrix();privateMatrix savedMatrix=newMatrix();staticfinalintNONE =0;staticfinalintDRAG =1;staticfinalintZOOM =2;intmode = NONE;// Remember some things for zoomingPointF start =newPointF();PointF mid =newPointF();floatoldDist = 1f;//private GestureDetector gesture;@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.img_control);imgview=(ImageView)this.findViewById(R.id.imag1);imgview.setAnimation(AnimationUtils.loadAnimation(this, R.anim.newanim));img=(ImageView)this.findViewById(R.id.imag);Matrix mt=img.getImageMatrix();//mt.postRotate(30);mt.postScale(0.5f,0.5f);mt.postScale(1.5f,1.5f);mt.postRotate(30,130,100);mt.postTranslate(100,10);img.setImageMatrix(mt);//imgview.setLongClickable(true);imgview.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.a));imgview.setOnTouchListener(this);imgview.setLongClickable(true);}privatefloatspacing(MotionEvent event) {floatx = event.getX(0) - event.getX(1);floaty = event.getY(0) - event.getY(1);returnFloatMath.sqrt(x * x + y * y);}privatevoidmidPoint(PointF point, MotionEvent event) {floatx = event.getX(0) + event.getX(1);floaty = event.getY(0) + event.getY(1);point.set(x /2, y /2);}@OverridepublicbooleanonTouch(View v, MotionEvent event) {// TODO Auto-generated method stub/*Log.d("Infor", "类别:"+event.getAction());Log.d("Infor", "mask:"+event.getActionMasked());Log.d("Infor", "index:"+event.getActionIndex());Log.d("Infor", "points:"+event.getPointerCount());*/Log.d("Infor","size:"+event.getSize());if(event.getActionMasked()==MotionEvent.ACTION_POINTER_UP)Log.d("Infor","多点操作");switch(event.getActionMasked()){caseMotionEvent.ACTION_DOWN:matrix.set(imgview.getImageMatrix());savedMatrix.set(matrix);start.set(event.getX(),event.getY());Log.d("Infor","触摸了...");mode=DRAG;break;caseMotionEvent.ACTION_POINTER_DOWN://多点触控oldDist=this.spacing(event);if(oldDist>10f){Log.d("Infor","oldDist"+oldDist);savedMatrix.set(matrix);midPoint(mid,event);mode=ZOOM;}break;caseMotionEvent.ACTION_POINTER_UP:mode=NONE;break;caseMotionEvent.ACTION_MOVE:if(mode==DRAG){//此实现图片的拖动功能...matrix.set(savedMatrix);matrix.postTranslate(event.getX()-start.x, event.getY()-start.y);}elseif(mode==ZOOM){// 此实现图片的缩放功能...floatnewDist=spacing(event);if(newDist>10){matrix.set(savedMatrix);floatscale=newDist/oldDist;matrix.postScale(scale, scale, mid.x, mid.y);}}break;}imgview.setImageMatrix(matrix);returnfalse;}}

如果觉得《手势图片》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。