2014-02-13 9 views
7

Я загружаю изображения в ImageView с библиотекой Picasso, а затем с помощью библиотеки PhotoView для добавления масштабирования и панорамирования и т. Д. В ImageView.Picasso и PhotoView Library загружают изображение в ImageView weird

Но когда Picasso загрузил изображение в первый раз, он отображает изображения, как это:

enter image description here

Но как только я касаюсь изображения он правильно размещает

enter image description here

Но если я закрою свое приложение, он внезапно не покажет изображение и не будет.

Мои MainActivity: http://pastebin.com/5H4zAgH

библиотеки я использую:

ответ

25

У меня была такая же проблема с неуместной изображения при использовании Пикассо и Photoview вместе.

Чтобы решить эту проблему, я использую обратный вызов при загрузке изображения с помощью Picasso с использованием into(view, callback) вместо into(view). Как только изображение будет загружено успешно, я создаю объект PhotoViewAttacher или вызываю метод update().

Вот вам пример кода:

Callback imageLoadedCallback = new Callback() { 

    @Override 
    public void onSuccess() { 
     if(mAttacher!=null){ 
      mAttacher.update(); 
     }else{ 
      mAttacher = new PhotoViewAttacher(mImageView); 
     } 
    } 

    @Override 
    public void onError() { 
     // TODO Auto-generated method stub 

    } 
}; 

Picasso.with(mContext) 
.load(mImageUrl) 
.into(mImageView,imageLoadedCallback); 

Я надеюсь, что это помогает. С уважением.

+0

Именно то, что я искал! – dasmikko

+0

Кажется, что лучше работать, если я обновляю атташера каждый раз, а не обновляю его. –

+0

Что делать, если я хочу использовать viewpager? – randy

19

У меня также была та же проблема. Я решил это, используя PhotoView вместо ImageView и удалил PhotoViewAttacher из моего кода.

В файле макета (если вы используете макет):

<uk.co.senab.photoview.PhotoView 
    android:id="@+id/your_photo_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    ... /> 

И в вашем коде:

PhotoView photoView = (PhotoView) findViewById(R.id.your_photo_view); 
Picasso.with(context) 
     .load(file) 
     ... 
     .into(photoView); 

Теперь все должно быть правильным (по крайней мере для меня это!);

+0

работал идеально для меня :) – Max

+0

Спасибо! Гораздо чище, чем решение обратного вызова! – Keysersoze

+0

Спасибо, это сработало для меня тоже :) – Ashwin

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