欢迎来到天天文库
浏览记录
ID:37539139
大小:18.28 KB
页数:7页
时间:2019-05-24
《麦子学院Android开发教程ImageView通过matrix实现手势缩放》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、IT在线教育平台——麦子学院http://www.maiziedu.com本文章来给各位同学介绍一下Android开发之ImageView通过matrix实现手势缩放操作方法,我们知道安卓中ImageView本身有scaleType属性,通过设置android:scaleType=matrix可以用很少的代码就实现缩放功能了,下面我们来看看。关于ImageView的手势缩放,有很多种方法,绝大多数开源自定义缩放都是修改了ondraw函数来实现的。但是ImageView本身有scaleType属性,通过设置android:scaleType="matrix"可以用很少的代码就实现
2、缩放功能。缩放的优点是实现起来简单,同时因为没有反复调用ondraw函数,缩放过程中不会有闪烁现象。MATRIX矩阵可以动态缩小放大图片来显示,缩小图片:代码如下//获得Bitmap的高和宽intbmpWidth=bmp.getWidth();intbmpHeight=bmp.getHeight();//设置缩小比例doublescale=0.8;//计算出这次要缩小的比例scaleWidth=(float)(scaleWidth*scale);scaleHeight=(float)(scaleHeight*scale);//产生resize后的Bitmap对象Matrixma
3、trix=newMatrix();matrix.postScale(scaleWidth,scaleHeight);BitmapresizeBmp=Bitmap.createBitmap(bmp,0,0,bmpWidth,bmpHeight,matrix,true);下面将一个自定义的实现了手势缩放的ImageView代码拷贝如下:代码如下packagecom.jcodecraeer.stargallerry;importandroid.content.Context;importandroid.graphics.Matrix;IT在线教育平台——麦子学院http://www.
4、maiziedu.comimportandroid.graphics.PointF;importandroid.util.AttributeSet;importandroid.util.FloatMath;importandroid.view.MotionEvent;importandroid.widget.ImageView;publicclassImageTouchViewextendsImageView{privatePointFstartPoint=newPointF();privateMatrixmatrix=newMatrix();privateMatrixcurr
5、entMaritx=newMatrix();privateintmode=0;//用于标记模式privatestaticfinalintDRAG=1;//拖动privatestaticfinalintZOOM=2;//放大privatefloatstartDis=0;privatePointFmidPoint;//中心点/***默认构造函数*@paramcontext*/publicImageTouchView(Contextcontext){super(context);}/***该构造方法在静态引入XML文件中是必须的*@paramcontext*@paramparamAt
6、tributeSetIT在线教育平台——麦子学院http://www.maiziedu.com*/publicImageTouchView(Contextcontext,AttributeSetparamAttributeSet){super(context,paramAttributeSet);}publicbooleanonTouchEvent(MotionEventevent){startPoint.set(www.maiziedu.com).ACTIONDOWNswitch(event.getAction()&MotionEvent.ACTION_MASK){caseM
7、otionEvent.ACTION_DOWN:mode=DRAG;currentMaritx.set(this.getImageMatrix());//记录ImageView当期的移动位置startPoint.set(event.getX(),event.getY());//开始点break;caseMotionEvent.ACTION_MOVE://移动事件if(mode==DRAG){//图片拖动事件floatdx=event.getX()-startPoint.x;//x轴移动距离fl
此文档下载收益归作者所有