代碼如下:
佈局文件
<ImageView
android:id="@+id/imgzoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:scaleType="matrix"
android:src="@drawable/myphoto" />
Java文件
public class MainActivity extends Activity {
private ImageView mImgzoom;
private float beforeScale=1.0f;//之前的伸縮值
private float nowScale;//當前的伸縮值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
myScale();
}
private void initView() {
mImgzoom = (ImageView) findViewById(R.id.imgzoom);
}
private void myScale(){
final ScaleGestureDetector scaleGestureDetector=new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
@Override
public boolean onScale(ScaleGestureDetector detector) {
nowScale=detector.getScaleFactor()*beforeScale;
//設置縮放的範圍
if (nowScale>3||nowScale<0.1){
beforeScale=nowScale;
return true;
}
Log.i("Scale","nowScale="+nowScale);
Matrix matrix=new Matrix();
matrix.setScale(nowScale,nowScale);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.myphoto);//獲取圖片
bitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);//轉化成bitmap格式
mImgzoom.setImageBitmap(bitmap);
beforeScale=nowScale;//保存上一次的縮放值!
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;//記得改成ture;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
});
mImgzoom.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
scaleGestureDetector.onTouchEvent(event);
return true;
}
});
}
}