首先自定义一个类:继承自TextView控件
public class ZoomTextView2 extends TextView {
private float oldDistance;
private float newDistance;
float textSize = this.getTextSize();
public ZoomTextView2(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public ZoomTextView2(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_POINTER_DOWN:
oldDistance = spacing(event);
break;
case MotionEvent.ACTION_MOVE:
if (event.getPointerCount() >= 2) {
newDistance = spacing(event);
zoomTex(newDistance/oldDistance);
oldDistance = newDistance;
}
break;
default:
break;
}
return true;
}
private void zoomTex(float f) {
textSize *= f;
this.setTextSize(px2sp(getContext(),textSize));
}
private int px2sp(Context context, float textSize2) {
// TODO Auto-generated method stub
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (textSize2/scaledDensity);
}
/**
* 两指之间距离
* @param event
* @return
*/
private float spacing(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x*x + y*y);
}
}