Android ViewPager с масштабируемым ImageView - PullRequest
8 голосов
/ 16 декабря 2011

У меня есть ViewPager, созданный ImageViews, реализованный так:

@Override
    public Object instantiateItem(View collection, int position) {
        ImageView iv = new ImageView(ctx);
        if (pageList.size() > position)
            iv.setImageBitmap(pageList.get(position));
        else
            iv.setImageResource(R.drawable.loading);

        iv.setOnTouchListener(this);
        ((ViewPager) collection).addView(iv, 0);
        System.out.println("POS: " + position);
        return iv;
    }

Есть ли шанс, что ImageView можно будет масштабировать двойным нажатием (и проведите пальцем по изображению) или увеличить масштаб?

Ответы [ 3 ]

6 голосов
/ 16 января 2012

Возможно, вот как я это сделал.

Мой элемент макета верхнего уровня - FrameLayout, который позволяет накладывать несколько видов друг на друга.У FrameLayout есть два дочерних элемента: ViewPager и ImageView, которые я буду использовать для показа увеличенного изображения.

ImageView обычно скрыт.Я слушаю сенсорные события на изображениях внутри ViewPager и, основываясь на них, показываю, скрываю и панорамирую ImageView.Это работает довольно хорошо.Я могу дать более подробную информацию, если это будет необходимо.

2 голосов
/ 09 июня 2015

Я использовал класс TouchImageView Майка Ортиса. Это не идеально. Но это круто, потому что вы можете добавить это очень легко! Двойная анимация масштабирования может быть забавной. Пинч-зум может быть вызван двойным касанием, что странно.

Это работает очень хорошо, если вы поместите его прямо в ViewPager (через класс адаптера). При увеличении вы можете свободно перемещаться влево и вправо, не вызывая смену страницы , если только вы не находитесь прямо на краю, что действительно круто!

https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/ortiz/touch/TouchImageView.java

0 голосов
/ 09 июня 2015

используйте эту библиотеку в github: https://github.com/matabii/scale-imageview-android.

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