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设置手指滑动控件缩放,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!