2016-07-29 14 views
7

Po załadowaniu obrazu do ImageView z Glide, zmniejsza obraz. Kiedy obracam lub ponownie otwieram tę samą aktywność, ma ona odpowiedni rozmiar. Próbowałem już possible duplicate. Już przekazuję rozmiar poprawki do ImageView wewnątrz xml i starałem się również przesłonić rozmiar. centerCrop() i fitCenter() nie ma wpływu na kurczenie. Próbowałem również debugować rozmiar obrazu. Kiedy się kurczy lub nie, zwraca tę samą szerokość i wysokość.Glide zmniejsza obraz przy pierwszym obciążeniu

Widok:

<ImageView 
     android:id="@+id/thumbnail" 
     android:layout_width="@dimen/episode_detail_img_width" 
     android:layout_height="@dimen/episode_detail_img_height" 
     android:layout_marginTop="@dimen/episode_detail_img_margin_top" /> 

Glide

Glide.with(getActivity()) 
      .load(url) 
      .placeholder(R.drawable.thumb_placeholder) 
      .centerCrop() 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .into(thumbnail); 
+1

spróbować usunąć ten kod teraz: .placeholder (R.drawable.thumb_placeholder) .centerCrop() .diskCacheStrategy (DiskCacheStrategy.ALL) i pls jasne pamięci cache przed metę. –

+0

Gdy używam symbolu zastępczego, zmniejsza obraz. Wszystkie pozostałe opcje są dobre. Jakiś pomysł, dlaczego tak się stało? Na pewno mam odpowiednie zasoby dla każdego res. – parohy

+1

w porządku. umieścić obraz zastępczy większy niż ur ImageView wysokość i waga. lub dowolny kolor. –

Odpowiedz

11

I m polanie masz swoją odpowiedź. ale po prostu więcej informacji na temat twojego problemu:

Glide obliczyć wysokość ImageView i wight przed rozpoczęciem ładowania obrazu, ale gdy obraz się załaduje, wymień miejsce na uchwyt do ciągnięcia. więc jeśli twoja zastępcza wysokość lub ciężar jest niewielka, Glide prześle pobraną bitmapę z wymiarem zastępczym.

Tak więc, bez opóźnień w różnych rozmiarach i układzie ekranu, radzę użyć dużego wymiaru do rysowania w symbolach zastępczych.

I jeszcze jeden hack jest taki, użyj koloru w symbolach zastępczych. Kolor bcoz nie ma wysokości ani szerokości, więc renderuj w całym obszarze widoku.

+0

dzięki ... To bardzo mi pomogło – Mahi

+1

dzięki ... To jest dla mnie bardzo pomocne –

+1

Dzięki, kolor zastępczy działał! – Fahad

0

W porównaniu do Picassa, Glide jest znacznie bardziej wydajne pamięci mądry. Glide automatycznie ogranicza rozmiar obrazu to przechowuje w pamięci podręcznej i pamięci do wymiarów ImageView

Oczyść swój projekt i spróbować ten kod:

Glide 
    .with(context) 
    .load(url) 
    .override(400, 200) // resizes the image to these dimensions (in pixel).does not respect aspect ratio 
    .into(thumbnail); 
0

Zdefiniowano symbol zastępczy() metoda, która zostanie załadowana w czasie początkowym i gdy poślizg ładuje obraz w oparciu o podanym adresie URL, a następnie zastąpić schodzenia z załadowanego obrazu zastępczego obrazu. które pojawią się w imageView. ten załadowany obraz ustawiony na imageView na podstawie tych określonych metod.

jak:cropCenter(), fitCenter() itp

nie używać cropCenter() to przycina obraz z centrum i dopasować go do ImageView więc jakość obrazu zgaśnie.

użyj metody fitCenter().

<ImageView 
      android:id="@+id/conversation_team_photo" 
      android:layout_width="56dp" 
      android:layout_height="56dp" 
      android:scaleType="fitCenter" 
      /> 

i mam zdefiniowane łykowych sposób używać poślizg tutaj best way to use glide.

1

To może być fix przez:

1) dodać.dontAnimate()

2) znaleźć zastępczy, który odpowiada proporcji obrazka

Objaśnienie: https://github.com/bumptech/glide/issues/1295

Po raz pierwszy obraz wczytuje domyślne .crossFade() w rzutach i Twój proporcji zastępczy współczynnik nie odpowiada współczynnikowi załadowanych obrazów " . Po raz drugi obraz jest ładowany z pamięci podręcznej, a animacje są pomijane w tym przypadku, powodując po prostu prawidłowe załadowanie obrazu . Możesz wyłączyć animacje za pomocą .dontAnimate() lub wymusić animację wejścia w .animate (R.anim.fade_in) lub znaleźć symbol zastępczy , który pasuje do proporcji obrazu (np. Kwadrat w twoim przypadku, z powodu 512x512) .

+0

Dziękuję za fragment z dokumentów. Jest to użyteczne :) Ale chcieliśmy mieć animację na miejscu, więc flaga dontAnimate nie pomoże w tym przypadku. Jest to jeden ze starszych projektów, więc nie pamiętam ... ale ten sam współczynnik proporcji był w tym przypadku taki sam :) – parohy

Powiązane problemy