korunos
korunos

Reputation: 798

ScaleGestureDetector for whole view

I fail while I try to implement the ScaleGestureDetector to the whole View.

I have a ImageView which fills the whole Screen. On top of that I have different small Images. Now i want to implement the ScaleGestureDetector to zoom the whole view not just one ImageView.

My Code:

    public class TouchMoveImage extends Activity implements View.OnTouchListener, ScaleGestureDetector.OnScaleGestureListener {

    private ImageView skizze;
    private ImageView feuerloescher;

    private float scale = 1.f;

    ScaleGestureDetector scaleGestureDetector;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.touchmoveimage);

        skizze = (ImageView) findViewById(R.id.skizze);
        feuerloescher = (ImageView) findViewById(R.id.feuerloescherID);

        scaleGestureDetector = new ScaleGestureDetector(this, new MyOnScaleGestureListener());

public boolean onTouchEvent(MotionEvent event) {
        scaleGestureDetector.onTouchEvent(event);
        return true;
    }

    @Override
    public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
        float scaleFactor = scaleGestureDetector.getScaleFactor();

        scaleFactor *= scaleGestureDetector.getScaleFactor();

        //Lass sie nicht zu klein oder zu groß werden
        scaleFactor = Math.max(0.1f, Math.min(scaleFactor, 5.0f));
        return true;
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) {
        return false;
    }

    @Override
    public void onScaleEnd(ScaleGestureDetector scaleGestureDetector) {

    }

    public class MyOnScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {

        @Override
        public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
            scale *= scaleGestureDetector.getScaleFactor();



            //Lass sie nicht zu klein oder zu groß werden
            scale = Math.max(0.1f, Math.min(scale, 5.0f));

            return true;
        }

    }

But this isn't working. What I'm doing wrong?

Upvotes: 1

Views: 641

Answers (1)

Vadim Ostanin
Vadim Ostanin

Reputation: 69

Your activity already implements OnScaleGestureListener So you may create a detector like this:

scaleGestureDetector = new ScaleGestureDetector( this, this );

Upvotes: 1

Related Questions