您的位置:首页 > 其它

触摸控制字体大小(自定义TextView)

2016-10-26 19:29 148 查看
首先自定义一个类:继承自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);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: