主Activiy
package com.example.doubledch;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
ZoomTextView
类
package com.example.doubledch;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.TextView;
/**
* Created by Administrator on 2016/11/2 0002.
*/
public class ZoomTextView extends TextView{
private float mOldDistans;
private float mNewOldDistans;
float textsize =this.getTextSize();
public ZoomTextView(Context context) {
super(context);
}
public ZoomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ZoomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()){
//ACTION_POINTER_DOWN 多点触控按下
case MotionEvent.ACTION_POINTER_DOWN:
mOldDistans = spacing(event);
break;
case MotionEvent.ACTION_MOVE:
if(event.getPointerCount()>=2){
mNewOldDistans = spacing(event);
zoomTex(mNewOldDistans/mOldDistans);
mOldDistans=mNewOldDistans;
}
break;
}
return true;
}
private void zoomTex(float v) {
textsize *=v;
this.setTextSize(px2sp(getContext(),textsize));
}
private int px2sp(Context context, float textsize2) {
float scaleDensty=context.getResources().getDisplayMetrics().scaledDensity;
return (int) (textsize2/scaleDensty);
}
/*
//两指之间的距离
*/
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x*x+y*y);
}
}