2016-10-14 2 views
0

Я увеличиваю изображение на двойном касании до некоторых определенных точек. при двойном касании он прекрасно масштабируется, но я хочу реализовать функциональность уменьшения масштаба, когда при двойном нажатии пользователя изображение будет увеличено, но когда он снова дважды коснется, увеличенное изображение должно вернуться к исходному размеру , как это можно сделать? Любая помощь будет оценена Вот мой кодКак проверить, что изображение в настоящее время увеличено или нет в андроиде?

ImageView iv; 
private Matrix matrix = new Matrix(); 
Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.demoimg), size.x, size.y, true); 
iv.setImageBitmap(bmp); 
original_matrix = iv.getImageMatrix(); 
iv.setOnTouchListener(new View.OnTouchListener() { 
     private GestureDetector gestureDetector = new GestureDetector(SecondActivity.this, new GestureDetector.SimpleOnGestureListener() { 
      @Override 
      public boolean onDoubleTap(MotionEvent e) { 

       float scalefactor = Math.max(1.1f, Math.min(3.0f, 4.0f)); 
       float x = e.getX(); 
       float y = e.getY(); 
       matrix.setScale(scalefactor, scalefactor, x, y); 
       iv.setImageMatrix(matrix); 
       return super.onDoubleTap(e); 


      } 

     }); 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      /* Toast.makeText(getApplicationContext(), "On Touch Event Called", 
        Toast.LENGTH_LONG).show();*/ 
      gestureDetector.onTouchEvent(event); 
      return true; 
     } 
    }); 
+0

Эффект zomm работает? –

+0

Да, он отлично масштабируется ... теперь я хочу уменьшить масштаб двойным нажатием. я имею в виду, что может быть чек, который будет проверять, если его увеличение в currenlty, а затем двойное нажатие, вернется к исходному положению – User

+0

выше код не работает с моим футляром .. не увеличено –

ответ

0

Лучшая практика заключается в расширении ImageView и сделать свой customImageView.

В вашем customImageView сохраняются исходный размер вашего изображения и дорожка текущего состояния изображения (увеличено/уменьшено), а затем в вашем xml используйте свой customImageView вместо android imageView.

Вы можете поместить свой метод масштабирования в свой customImageView. Затем у вас есть customImageView, который знает, как увеличить масштаб, вернуться к исходному размеру и текущему состоянию.

+0

i получил свою точку зрения, но мое замешательство заключается в том, как сохранить отслеживание текущего состояния изображения? – User

+0

Добавьте логическое поле в свой customImageView, например «isZoomedIn», с ложным значением по умолчанию, а затем всякий раз, когда был вызван метод масштабирования, проверьте, чтобы, если его ложное изображение должно быть увеличено, и оно должно быть изменено, чтобы оно было установлено как true, и всякий раз, когда его истинный изображение должно быть уменьшено, и оно должно быть установлено как ложное. –

+0

Хм я пробовал это, но, сделав это, мое изображение теперь не приближается к вечеру :( – User