網頁直播源碼Android圖片的手動放大縮小

代碼如下:
佈局文件

<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;
            }
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章