手势缩放

基于2.3

 主要涉及类 import android.view.ScaleGestureDetector

接口ScaleGestureDetector.OnScaleGestureListener

ScaleGestureDetector类方法

getCurrentSpan()获取手势两点之间的距离

getScaleFactor()获取手势缩放的比例


使用:

定义ScaleGestureDetector类 在onTouch方法内调用mScaleGestureDetector.onTouchEvent(event)

 实现接口OnScaleGestureListener方法

        public boolean onScale(ScaleGestureDetector detector); 

        public boolean onScaleBegin(ScaleGestureDetector detector);

        public void onScaleEnd(ScaleGestureDetector detector);

在相关方法中做相应处理



比如简单的相机预览缩放:

    public boolean onScale(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
        float scale = detector.getScaleFactor();
        if (Float.isInfinite(scale) || Float.isNaN(scale))
            return true;
        zoomScale = zoomScale + (zoomScale * (scale - 1.0f) * 0.2f);
        
        mZoomValue = (int)zoomScale - 1;
        if(mZoomValue <= 0){
            mZoomValue = 0;
        }else if(mZoomValue >= mZoomMax){
            mZoomValue = mZoomMax;
        }
        
        setCameraParametersWhenIdle(UPDATE_PARAM_ZOOM);
        mHeadUpDisplay.setZoomIndex(mZoomValue);

        return false;
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
             mFocusRectangle.setVisibility(View.GONE);
             mFocusRectangle.reset();
             zoomScale = mZoomValue + 1;
        return true;
    }

    @Override
    public void onScaleEnd(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub

        mFocusRectangle.setVisibility(View.VISIBLE);
    }



需要注意onScaleBegin返回true才有后面的动作onScale

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值