увеличение изображения в видоискателе - PullRequest
1 голос
/ 24 марта 2012

Я создал слайд-шоу изображений с помощью ViewFlipper.Я использовал imageFrame.setOnTouchListener (gestListener);чтобы прослушивать события касания пользователя, такие как одно касание, длительное нажатие

Но теперь я хочу увеличить / уменьшить текущее изображение в режиме слайд-шоу (ViewFlipper), при двойном нажатии пользователем.смог найти решение. Пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 26 марта 2012

Есть несколько способов сделать это, но простым способом является использование виджета платформы ZoomControls , который представляет собой простой виджет, состоящий из кнопки +/-. Вы можете прикрепить onZoomInClickListener и onZoomOutClickListener для обработки касаний к виджету ZoomControls.

В вашем обработчике вы можете масштабировать изображение. Вот пример кода, который использует ScaleAnimation для масштабирования:

iv = (ImageView) findViewById(R.id.imageview);
zc = (ZoomControls) findViewById(R.id.zoom_controls);
zc.setOnZoomInClickListener(new OnClickListener() {
    public void onClick(View v) {
        float oldZoom = currentZoom;
        currentZoom = currentZoom * 1.25;
        zc.setIsZoomOutEnabled(true);
        if (3.0 < currentZoom) {
            zc.setIsZoomInEnabled(false);
        }
        scaleAnim = new ScaleAnimation(oldZoom, currentZoom, oldZoom, currentZoom, 0, 0);
        scaleAnim.setFillAfter(true);
        iv.startAnimation(scaleAnim);
    }
});
zc.setOnZoomOutClickListener(new OnClickListener() {
    public void onClick(View v) {
        float oldZoom = currentZoom;
        currentZoom = currentZoom / 1.25;
        zc.setIsZoomInEnabled(true);
        if (0.33 > currentZoom) {
            zc.setIsZoomOutEnabled(false);
        }
        scaleAnim = new ScaleAnimation(oldZoom, currentZoom, oldZoom, currentZoom, 0, 0);
        scaleAnim.setFillAfter(true);
        iv.startAnimation(scaleAnim);
    }
});
...