手势操作实现文字缩放

来源:互联网 发布:淘宝让朋友刷有风险吗 编辑:程序博客网 时间:2024/06/05 10:52

public class NewTextView extends TextView {
private float tvSize;
private float oldDis;

public NewTextView(Context context) {    super(context);}public NewTextView(Context context, AttributeSet attrs) {    super(context, attrs);}public NewTextView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);}@Overridepublic boolean onTouchEvent(MotionEvent event) {    if (tvSize == 0) {        tvSize = this.getTextSize();    }    //event.getActionMasked()当多点触屏时使用    switch (event.getActionMasked()) {        case MotionEvent.ACTION_POINTER_DOWN:            oldDis = getDis(event);            break;        case MotionEvent.ACTION_MOVE:            if (event.getPointerCount() == 2) {                float newDis = getDis(event);                zoom(newDis, oldDis);                oldDis = newDis;            }            break;    }    return true;}/** * 获取两个手指之间的距离 * * @return */private float getDis(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));}/** * 对文字进行缩放 * * @param */private void zoom(float newDis, float oldDis) {    tvSize *= newDis / oldDis;    if (tvSize < 28 || tvSize > 68) {        Toast.makeText(getContext(), "不能再缩放了", Toast.LENGTH_SHORT).show();    } else {        this.setTextSize(px2sp(getContext(), tvSize));    }}/** * @param context * @param pxValue * @return */public static int px2sp(Context context, float pxValue) {    float fontScale = context.getResources().getDisplayMetrics().scaledDensity;    return (int) (pxValue / fontScale + 0.5f);}

}

原创粉丝点击