-->

Implement pinch-to-zoom with ScaleGestureDetector

Today i'm introduce for you Implement pinch-to-zoom with ScaleGestureDetector  on Android.

    + Layout activity_main.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"    android:layout_height="match_parent">

    <ImageView        android:id="@+id/img_view"        android:layout_width="wrap_content"        android:src="@drawable/large"        android:contentDescription="@string/app_name"        android:layout_height="wrap_content" />
</RelativeLayout>
   + Class MainActivity.java event touchevent.
package com.anhttvn.demoadmod;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    private ScaleGestureDetector scaleGestureDetector;
    private ImageView imgDemo;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgDemo = (ImageView)findViewById(R.id.img_view);
        scaleGestureDetector = new ScaleGestureDetector(
                this, new MySimpleOnScaleGestureListener(imgDemo));
    }
    @Override    public boolean onTouchEvent(MotionEvent event) {
        scaleGestureDetector.onTouchEvent(event);
        return true;
    }

    private class MySimpleOnScaleGestureListener
            extends ScaleGestureDetector.SimpleOnScaleGestureListener{

        ImageView viewMyImage;

        float factor;

        public MySimpleOnScaleGestureListener( ImageView iv) {
            super();
            viewMyImage = iv;
        }

        @Override        public boolean onScaleBegin(ScaleGestureDetector detector) {
            factor = 1.0f;
            return true;
        }

        @Override        public boolean onScale(ScaleGestureDetector detector) {

            float scaleFactor = detector.getScaleFactor() - 1;
            factor += scaleFactor;
            viewMyImage.setScaleX(factor);
            viewMyImage.setScaleY(factor);
            return true;
        }
    }

}
Disqus Comments