Масштабирование изображения в режиме просмотра

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

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

Ответ 1

Существует несколько способов сделать это, но простой способ - использовать платформу виджет 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);
    }
});