手勢縮放

基於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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章