分享

如何实现让用户使用两点触摸缩放来更改显示文字大小

 杰出天下 2012-10-26
public class InOutTouchListener implements OnTouchListener {
        float oldDist = 0, newDist = 0;
        WebView wv;
        Context context;

        public InOutTouchListener(Context con) {
                context = con;
        }

        public boolean onTouch(View v, MotionEvent event) {
                if (v instanceof WebView) {
                        wv = (WebView) v;
                        switch (event.getAction() & MotionEvent.ACTION_MASK){
                                // 开始
                                case MotionEvent.ACTION_POINTER_DOWN:
                                        oldDist = spacing(event);
                                        break;

                                // 拖动
                                case MotionEvent.ACTION_MOVE:
                                        newDist = spacing(event);
                                        break;

                                // 结束
                                case MotionEvent.ACTION_UP:
                                case MotionEvent.ACTION_POINTER_UP:
                                        if (oldDist != 0 || newDist != 0 || oldDist != newDist) {
                                                float d = newDist - oldDist;
// 一次滑动的长度控制在100像素之内,如果还想进一步放大或者缩小,就挪开手指,重新来滑动
                                                if (d > 100) {
// 取zoomIn()的值,如果返回true就表示还可以缩放, 如果返回false就表示不能再缩放了
                                                        boolean flag = wv.zoomIn();
                                                        if (!flag) {
                                                                Toast.makeText(context, "不能再放大了...", 2000).show();
                                                        }
                                                } else if (d < -100) {
                                                        boolean flag = wv.zoomOut();
                                                        if (!flag) {
                                                                Toast.makeText(context, "不能再缩小了...", 2000).show();
                                                        }
                                                }
                                                newDist = 0;
                                                oldDist = 0;
                                        }
                                        break;
                        }
                }
                return false;
        }

        // 计算距离
        private float spacing(MotionEvent event) {
                float x = event.getX(0) - event.getX(1);
                float y = event.getY(0) - event.getY(1);
                return FloatMath.sqrt(x * x + y * y);
        }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多