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