Не удалось выполнить ZoomIn и Zoomout эффективно с помощью MikeOrtiz TouchImageView в Android?

Я новичок в Android. Вот уже заданный вопрос в SO Scrolling и zoomin и Zoomout. Проблема теперь решена. Это последняя версия File Последняя версия файла с масштабированием и прокруткой, но каждый раз, когда я получаю эту ошибку

 02-03 21:21:08.030: E/AndroidRuntime(17110): java.lang.UnsupportedOperationException: Scale must be greater than minScale and less than maxScale

всякий раз, когда я пытаюсь дотронуться до изображения пальцами, возникает исключение, и мое приложение падает. То же самое происходит, когда я пытаюсь непрерывно нажимать кнопку увеличения и уменьшения, я хочу, чтобы поведение этого изображения увеличивалось и уменьшалось, как webview.i я не хочу установите любые ограничения в этой функциональности. как я могу решить эту ошибку настроек touch и iamgeScale. Пожалуйста, помогите мне.

MainActivity.java:

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                  setContentView(R.layout.newxml);
        ImageView zoonIn = (ImageView)findViewById(R.id.btn_zoomIn1);
        ImageView zoonOut = (ImageView)findViewById(R.id.btn_zoomout1);

        final TouchImageView1 touch = (TouchImageView1)findViewById(R.id.imagezoom);

        Bitmap bImage = BitmapFactory.decodeResource(this.getResources(), R.drawable.app_icon);

        touch.setImageBitmap(bImage);
        touch.setMinZoom(0.5f);
        touch.setMaxZoom(5f);

        zoonIn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 float scale = touch.getCurrentZoom();
                 PointF centerPoint = touch.getCenterOfZoomedImage();
                Number zoomedValue =scale*1.25;
                        float value = zoomedValue.floatValue();
                touch.setZoom(value,centerPoint.x,centerPoint.y);
            }
        });


        zoonOut.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 float scale = touch.getCurrentZoom();
                 PointF centerPoint = touch.getCenterOfZoomedImage();
                    Number zoomedValue =scale/1.25;
                       float value = zoomedValue.floatValue();
                    touch.setZoom(value,centerPoint.x,centerPoint.y);
                }

        });

    }
}

Ошибка Logcat:

02-03 21: 21: 08.030: E / AndroidRuntime (17110): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 02-03 21:21:08.030: E/AndroidRuntime(17110): java.lang.UnsupportedOperationException: Масштаб должен быть больше, чем minScale и меньше чем maxScale 02-03 21:21:08.030: E/AndroidRuntime(17110): в com.example.imagetouchview.TouchImageView1.setZoom(TouchImageView1.java:369) 02-03 21:21:08.030: E/AndroidRuntime(17110): в com.example.imagetouchview.TouchImageView1.setZoom(TouchImageView1.java:354) 02-03 21:21:08.030: E/AndroidRuntime(17110): в com.example.imagetouchview.MainActivity$2.onClick(MainActivity.java:71) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.view.View.performClick(View.java:4211) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.view.View$PerformClick.run(View.java:17267) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.os.Handler.handleCallback(Handler.java:615) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.os.Handler.dispatchMessage(Handler.java:92) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.os.Looper.loop(Looper.java:137) 02-03 21:21:08.030: E/AndroidRuntime(17110): на android.app.ActivityThread.main(ActivityThread.java:4898) 02-03 21:21:08.030: E/AndroidRuntime(17110): на java.lang.reflect.Method.invokeNative(собственный метод) 02-03 21: 21: 08.030: E / AndroidRuntime (17110): на java.lang.reflect.Method.invoke(Method.java:511) 02-03 21:21:08.030: E/AndroidRuntime(17110): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 02-03 21:21:08.030: E/AndroidRuntime(17110): на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 02-03 21:21:08.030: E/AndroidRuntime(17110)): at dalvik.system.NativeStart.main(собственный метод) 02-03 21:21:19.400: I/Process(17110): отправка сигнала. PID: 17110 SIG: 9

1 ответ

Теперь очевидно: ваше значение увеличения больше установленного вами maxZoom.
5,9604645.
Попробуйте установить maxZoom на 6f. Перед настройкой минимального / максимального значения масштабирования необходимо тщательно продумать свой вариант использования.
Также необходимо учитывать различные варианты поведения и соответствующие значения, которые вы получите:

float scale = touch.getCurrentZoom ();
PointF centerPoint = touch.getCenterOfZoomedImage ();

Я предлагаю вам ознакомиться с тем, что может соответствовать вашим требованиям, и посмотреть по адресу: https://github.com/chrisbanes/PhotoView
Я использовал это, и это довольно просто и прозрачно с точки зрения библиотечных классов.

Другие вопросы по тегам