Щипок зум для пользовательского просмотра - PullRequest
43 голосов
/ 07 марта 2011

Я создал свой пользовательский вид и хочу применить масштабирование пинч для своего пользовательского вида.Как это сделать?

Ответы [ 4 ]

80 голосов
/ 15 марта 2011

Эта статья в блоге разработчиков Android очень хорошо освещает эту тему (прокрутите вниз до раздела GestureDetectors ):

Осмысление Multitouch

Если вы просто хотите реализовать пинч-масштабирование, вам понадобится всего несколько строк кода:

private ScaleGestureDetector mScaleDetector;
private float mScaleFactor = 1.f;

public MyCustomView(Context mContext){
    //...
    //Your view code
    //...
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    // Let the ScaleGestureDetector inspect all events.
    mScaleDetector.onTouchEvent(ev);
    return true;
}

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

    canvas.save();
    canvas.scale(mScaleFactor, mScaleFactor);
    //...
    //Your onDraw() code
    //...
    canvas.restore();
}

private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        mScaleFactor *= detector.getScaleFactor();

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

        invalidate();
        return true;
    }
}

Остальная часть статьи посвящена обработке других жестов, а не использованиюих реализация, вы можете использовать GestureDetector так же, как ScaleGestureDetector используется в коде выше.

8 голосов
/ 08 января 2013

Поместите свой взгляд внутрь ZoomView.

Пользовательский вид доступен здесь https://github.com/Polidea/android-zoom-view это просто, бесплатно и очень весело!

0 голосов
/ 16 января 2019

Эта библиотека позволяет применять масштабирование и панорамирование для пользовательских видов.Это сработало для моих нужд:

https://github.com/natario1/ZoomLayout

0 голосов
/ 29 апреля 2017

используйте это:

Реализация ImageView для Android, которая поддерживает масштабирование с помощью различных сенсорных жестов.

https://github.com/chrisbanes/PhotoView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...