android图片处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于ImageView实现缩放功能。3imageview中的图片是有服务端下载来的。。我在获得图片后则根据图片大小去设定imageview的高度和宽度。然后在设定缩放的监听image.setOnTouchListener后面采用matrix来控制缩放。断点方法都有进来。缩放的比例也有获得。但是图片就是不进行缩放。代码如下:Java代码1.privatestaticfinalintNONE=0;2.privatestaticfinalintDRAG=1;3.privatestaticfinalintZOOM=2;4.5.intmode=NONE;6.7.Matrixmatrix=newMatrix();8.MatrixsaveMatrix=newMatrix();9.10.PointFstart=newPointF();11.PointFmid=newPointF();12.floatoldDist=1f;13.14.@Override15.publicbooleanonTouch(Viewv,MotionEventevent){16.17.ImageViewview=(ImageView)v;18.19.switch(event.getAction()&MotionEvent.ACTION_MASK){20.21.caseMotionEvent.ACTION_DOWN:22.saveMatrix.set(matrix);23.start.set(event.getX(),event.getY());24.mode=NONE;25.break;26.27.caseMotionEvent.ACTION_POINTER_1_DOWN:28.oldDist=spacing(event);29.if(oldDist10f){30.saveMatrix.set(matrix);31.midPoint(mid,event);32.mode=ZOOM;33.}34.break;35.caseMotionEvent.ACTION_POINTER_1_UP:36.mode=NONE;37.break;38.caseMotionEvent.ACTION_MOVE:39.if(mode==DRAG){40.matrix.set(saveMatrix);41.matrix.postTranslate(event.getX()-start.x,event.getY()-start.y);42.}43.elseif(mode==ZOOM){44.45.floatnewDist=spacing(event);46.if(newDist10f){47.matrix.set(saveMatrix);48.floatscale=newDist/oldDist;49.matrix.postScale(scale,scale,mid.x,mid.y);50.}51.}52.break;53.}54.view.setImageMatrix(matrix);55.returntrue;56.}57.privatevoidmidPoint(PointFponit,MotionEventevent){58.59.floatx=event.getX(0)+event.getX(1);60.floaty=event.getY(0)+event.getY(1);61.62.ponit.set((int)x/2,(int)y/2);63.}64.65.privatefloatspacing(MotionEventevent){66.67.floatx=event.getX(0)-event.getX(1);68.floaty=event.getY(0)-event.getY(1);69.70.returnFloatMath.sqrt(x*x+y*y);71.}添加0image.setScaleType(ScaleType.MATRIX);AndroidimageView图片按比例缩放2011-07-1010:03:07我来说两句收藏我要投稿android:scaleType可控制图片的缩放方式,示例代码如下:ImageViewandroid:id=@+id/imgandroid:src=@drawable/logoandroid:scaleType=centerInsideandroid:layout_width=60dipandroid:layout_height=60dipandroid:layout_centerVertical=true/说明:centerInside表示按比例缩放图片,使得图片长(宽)的小于等于视图的相应维度。注意:控制的图片为资源而不是背景,即android:src=@drawable/logo,而非android:background=@drawable/logo,我就笨笨地犯了这个低级错误,导致错怪人家scaleType不起作用。程序中动态加载图片也类似,如:应该imgView.setImageResource(R.drawable.*);而非imgView.setBackgroundResource(R.drawable.*);附:更详细的scaleType说明:CENTER/center在视图中心显示图片,并且不缩放图片CENTER_CROP/centerCrop按比例缩放图片,使得图片长(宽)的大于等于视图的相应维度CENTER_INSIDE/centerInside按比例缩放图片,使得图片长(宽)的小于等于视图的相应维度FIT_CENTER/fitCenter按比例缩放图片到视图的最小边,居中显示FIT_END/fitEnd按比例缩放图片到视图的最小边,显示在视图的下部分位置FIT_START/fitStart把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置FIT_XY/fitXY把图片不按比例缩放到视图的大小显示MATRIX/matrix用矩阵来绘制下一页Android之实现手势缩放的ImageView分类:Android2013-01-0717:002228人阅读评论(3)收藏举报方法一:将以下代码写到MulitPointTouchListener.java中,然后对你相应的图片进行OnTouchListener。例如:imageView.setOnTouchListener(newMulitPointTouchListener());在xml中要将ImageView的缩放格式改成Matrix例如:android:scaleType=matrix这样就可以实现图片的缩放了下面是MulitPointTouchListener.java代码:[java]viewplaincopyprint?1.publicclassMulitPointTouchListenerimplementsOnTouchListener{2.privatestaticfinalStringTAG=Touch;3.//Thesematriceswillbeusedtomoveandzoomimage4.Matrixmatrix=newMatrix();5.MatrixsavedMatrix=newMatrix();6.7.//Wecanbeinoneofthese3states8.staticfinalintNONE=0;9.staticfinalintDRAG=1;10.staticfinalintZOOM=2;11.intmode=NONE;12.13.//Remembersomethingsforzooming14.PointFstart=newPointF();15.PointFmid=newPointF();16.floatoldDist=1f;17.18.@Override19.publicbooleanonTouch(Viewv,MotionEventevent){20.21.ImageViewview=(ImageView)v;22.//Log.e(view_width,23.//view.getImageMatrix()..toString()+*+v.getWidth());24.//Dumptoucheventtolog25.dumpEvent(event);26.27.//Handletoucheventshere...28.switch(event.getAction()&MotionEvent.ACTION_MASK){29.caseMotionEvent.ACTION_DOWN:30.31.matrix.set(view.getImageMatrix());32.savedMatrix.set(matrix);33.start.set(event.getX(),event.getY());34.//Log.d(TAG,mode=DRAG);35.mode=DRAG;36.37.38.//Log.d(TAG,mode=NONE);39.break;40.caseMotionEvent.ACTION_POINTER_DOWN:41.oldDist=spacing(event);42.//Log.d(TAG,oldDist=+oldDist);43.if(oldDist10f){44.savedMatrix.set(matrix);45.midPoint(mid,event);46.mode=ZOOM;47.//Log.d(TAG,mode=ZOOM);48.}49.break;50.caseMotionEvent.ACTION_UP:51.caseMotionEvent.ACTION_POINTER_UP:52.mode=NONE;53.//Log.e(view.getWidth,view.getWidth()+);54.//Log.e(view.getHeight,view.getHeight()+);55.56.break;57.caseMotionEvent.ACTION_MOVE:58.if(mode==DRAG){59.//...60.matrix.set(savedMatrix);61.matrix.postTranslate(event.getX()-start.x,event.getY()62.-start.y);63.}elseif(mode==ZOOM){64.floatnewDist=spacing(event);65.//Log.d(TAG,newDist=+newDist);66.if(newDist10f){67.matrix.set(savedMatrix);68.floatscale=newDist/oldDist;69.matrix.postScale(scale,scale,mid.x,mid.y);70.}71.}72.break;73.}74.75.view.setImageMatrix(matrix);76.returntrue;//indicateeventwashandled77.}78.79.privatevoiddumpEvent(MotionEventevent){80.Stringnames[]={DOWN,UP,MOVE,CANCEL,OUTSIDE,81.POINTER_DOWN,POINTER_UP,7?,8?,9?};82.StringBuildersb=newStringBuilder();83.intaction=event.getAction();84.intactionCode=action&MotionEvent.ACTION_MASK;85.sb.append(eventACTION_).append(names[actionCode]);86.if(actionCode==MotionEvent.ACTION_POINTER_DO

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功