Android通过ImageView设置手指滑动控件缩放
ImageView设置手指滑动缩放效果,具体实现步骤大家通过本文学习下吧!
实现步骤
1,imageview设置scaletype为android:scaleType=”matrix”
2,设置imageview的setOnTouchListener,重写里面的代码
3,新建一个matrix,
matrix.postScale(scale,scale,缩放中心,缩放中心); image.setImageMatrix(matrix);
这样image的大小就会改变了.
需要注意的几点是imageview一定要设置scaletype为matrix,否则图片不能进行缩放.而且Bitmap也可以通过Matrix改变大小.
也可以用自定义控件imageview,重写里面的onTouchEvent,本文就是用的自定义控件得到方式实现的.
代码
自定义控件的代码,主要是重写的onTouchEvent的代码
packagecom.test.administrator.imageviewscale; importandroid.content.Context; importandroid.graphics.Matrix; importandroid.graphics.PointF; importandroid.renderscript.Float2; importandroid.renderscript.Float4; importandroid.util.AttributeSet; importandroid.util.FloatMath; importandroid.view.MotionEvent; importandroid.widget.ImageView; /** *CreatedbyAdministratoron2016/3/21. */ publicclassMyImageViewextendsImageView{ privatePointFcenterPoint; privatefloatfirstdistance; privateMatrixmatrix; publicMyImageView(Contextcontext){ super(context); initParams(); } privatevoidinitParams(){ matrix=newMatrix(); setImageMatrix(matrix); } publicMyImageView(Contextcontext,AttributeSetattrs){ super(context,attrs); initParams(); } publicMyImageView(Contextcontext,AttributeSetattrs,intdefStyleAttr){ super(context,attrs,defStyleAttr); initParams(); } @Override publicbooleanonTouchEvent(MotionEventevent){ intcount=event.getPointerCount(); if(count==1){ switch(event.getAction()){ caseMotionEvent.ACTION_DOWN: System.out.println("actiondown1----"); break; caseMotionEvent.ACTION_MOVE: System.out.println("actionmove1----"); break; caseMotionEvent.ACTION_UP: System.out.println("actionup1----"); break; default: break; } }elseif(count==2){ switch(event.getAction()&MotionEvent.ACTION_MASK){ caseMotionEvent.ACTION_POINTER_DOWN: firstdistance=getDistance(event); centerPoint=getCenterPoint(event); System.out.println("actiondown2==="); break; caseMotionEvent.ACTION_MOVE: floatdistance=getDistance(event); floatscale=distance/firstdistance; matrix.postScale(scale,scale,centerPoint.x,centerPoint.y); setImageMatrix(matrix); System.out.println(scale+"===="); firstdistance=distance; System.out.println("actionmove2==="); break; caseMotionEvent.ACTION_UP: break; default: break; } } returntrue; } /** *获取两个点的中心点坐标 *@paramevent */ privatePointFgetCenterPoint(MotionEventevent){ PointFpoint=newPointF(); point.x=(event.getX()+event.getX(1))/2; point.y=(event.getY()+event.getY(1))/2; returnpoint; } /** *两根手指时手指间的距离 *@paramevent */ privatefloatgetDistance(MotionEventevent){ floatx1=event.getX(); floaty1=event.getY(); floatx2=event.getX(1); floaty2=event.getY(1); floatdistance=(float)Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); returndistance; } }
imageview的代码
总结
以上所述是小编给大家介绍的Android通过ImageView设置手指滑动控件缩放,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!