0

I am having a Relative layout where I am adding multiple ImageViews dynamically(user selects image from gallery) and I want to scale move and zoom a particular ImageView on which the user is performing scale move and zoom. Other ImageViews should be as it in layout. I have created ZoomableImageView class, but when i touch the ImageView the event is not detected.

ZoomableImageView.java

public class ZoomableImageView extends ImageView {

    private static final String TAG = "zoomableimageview";
    private float mScaleFactor = 1.f;


    private ScaleGestureDetector mScaleDetector;

    public ZoomableImageView(Context context) {

        this(context, null);

    }

    public ZoomableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Toast.makeText(context, "View Created", 1000).show();
        mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());

    }   
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Toast.makeText(getContext(), "ondraw", 1000).show();
        canvas.save();
        canvas.scale(mScaleFactor, mScaleFactor);
        canvas.restore();
    }
    private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {

            Toast.makeText(getContext(), "Detector", 1000).show();

            mScaleFactor *= detector.getScaleFactor();

            // Don't let the object get too small or too large.
            mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));

            ZoomableImageView.this.invalidate();
            return true;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        mScaleDetector.onTouchEvent(event);

        return true;
    }


}
Mohammed Rampurawala
  • 3,033
  • 2
  • 22
  • 32

0 Answers0