2014-11-19 3 views
0

Я использую библиотеку для увеличения и уменьшения изображения в ImageView. Я использую PhotoAttacher. Когда я нажимаю на ImageView, сначала ImageView загружается в полноэкранном режиме (в диалоговом окне), и это нормально. Но при загрузке в полноэкранном режиме функция масштабирования уже имеет место. Как я могу избежать масштабирования при первом щелчке по ImageView. Вот код:ImageView масштабируется при первом касании

image.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final Dialog nagDialog = new Dialog(DetailView.this, 
         android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
       nagDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
       nagDialog.setCancelable(false); 
       nagDialog.setContentView(R.layout.preview_image); 
       Button btnClose = (Button) nagDialog 
         .findViewById(R.id.btnIvClose); 

       ivPreview = (ImageView) nagDialog 
         .findViewById(R.id.iv_preview_image); 

       // Loading image from url in ImageView  
       Picasso.with(getApplicationContext()).load(path) 
         .placeholder(R.drawable.loading).into(ivPreview); 

       // Here definition of zoom function 
       PhotoViewAttacher mAttacher = new PhotoViewAttacher(ivPreview); 
       mAttacher.canZoom(); 

       btnClose.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View arg0) { 

         nagDialog.dismiss(); 
        } 
       }); 

       nagDialog.show(); 

      } 

     }); 

Странная вещь, когда я закрыть окно предварительного просмотра и снова нажмите на ImageView, то это не приближать первым.

ответ

0

Вы можете реализовать PhotoViewAttacher после того, как изображение будет загружено успешно.

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

Пример код:

Picasso.with(getApplicationContext()).load(path) 
        .placeholder(R.drawable.loading).into(ivPreview, new Callback(){ 
     @Override 
      public void onSuccess() 
      { 
       Log.d("Test picasso", "image loaded"); 
       PhotoViewAttacher mAttacher = new PhotoViewAttacher(ivPreview); 
       mAttacher.canZoom(); 
      } 

      @Override 
      public void onError() 
      { 
       Log.d("Test picasso", "image error"); 
      } 
    }); 

Имейте в виде, обратный вызов пары является strong reference и будет препятствовать вашей деятельности или фрагмент из сборщика мусора. Поэтому вы должны вызвать соседний вызов Picasso.cancelRequest (android.widget.ImageView), чтобы предотвратить временную утечку.

+1

где я должен ссылаться cancelRequest? После успеха? –

+0

Я думаю, что вы можете сделать внутри метода onDestroy(), прежде чем ваша деятельность фрагмента получит сбор мусора. – ztan

Смежные вопросы