Jak to zrobić, używając Glide? Chcę użyć obrazu cache
, aby użyć go również innym razem. Z góry dziękuję.Ustaw obraz tła na układ względny za pomocą przesuwania w systemie Android.
Odpowiedz
Możesz załadować obraz w taki sposób RelativeLayout. Po prostu pokazuję ci trudną część, która ustawia obraz na drugim planie.
Dla wersji Glide przed 4.X
Glide.with(this).load(imageViewPath).asBitmap().into(new SimpleTarget<Bitmap>(relLayoutWidth, relLayoutHeight) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
Drawable drawable = new BitmapDrawable(context.getResources(), resource);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
yourRelativeLayout.setBackground(drawable);
}
}
});
do buforowania, odnoszą się do tej strony: Caching and Cache Invalidation.
Aktualizacja dla Gide'a V4 naprzód:
GlideApp.with(this).load(R.drawable.backgroundimage).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
yourRelativeLayout.setBackground(resource);
}
}
});
Myślę, że najlepszym sposobem, aby osiągnąć to działa z własnej implementacji ViewTarget, ponieważ ta klasa ma specyficzne metody mają być obsługiwane przez Glide automatycznie w różnych scenariuszach.
Streszczenie implementacji dla ViewGroup (LinearLayout, RelativeLayout itd.).
public abstract class ViewGroupTarget<Z> extends ViewTarget<ViewGroup, Z> implements GlideAnimation.ViewAdapter {
public ViewGroupTarget(ViewGroup view) {
super(view);
}
/**
* Returns the current {@link android.graphics.drawable.Drawable} being displayed in the view using
* {@link android.widget.ImageView#getDrawable()}.
*/
@Override
public Drawable getCurrentDrawable() {
return view.getBackground();
}
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using
* {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param drawable {@inheritDoc}
*/
@Override
public void setDrawable(Drawable drawable) {
view.setBackground(drawable);
}
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using
* {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param placeholder {@inheritDoc}
*/
@Override
public void onLoadStarted(Drawable placeholder) {
view.setBackground(placeholder);
}
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using
* {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param errorDrawable {@inheritDoc}
*/
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
view.setBackground(errorDrawable);
}
/**
* Sets the given {@link android.graphics.drawable.Drawable} on the view using
* {@link android.widget.ImageView#setImageDrawable(android.graphics.drawable.Drawable)}.
*
* @param placeholder {@inheritDoc}
*/
@Override
public void onLoadCleared(Drawable placeholder) {
view.setBackground(placeholder);
}
@Override
public void onResourceReady(Z resource, GlideAnimation<? super Z> glideAnimation) {
this.setResource(resource);
}
protected abstract void setResource(Z resource);
}
Konkretna realizacja, w tym przypadku dla LinearLayout.
public class LinearLayoutTarget extends ViewGroupTarget<Bitmap> {
private Context context;
public LinearLayoutTarget(Context context, LinearLayout linearLayout) {
super(linearLayout);
this.context = context;
}
/**
* Sets the {@link android.graphics.Bitmap} on the view using
* {@link android.widget.ImageView#setImageBitmap(android.graphics.Bitmap)}.
*
* @param resource The bitmap to display.
*/
@Override
protected void setResource(Bitmap resource) {
view.setBackground(new BitmapDrawable(context.getResources(), resource));
}
}
Do pracy z.
Glide.with(this.getApplicationContext())
.load(R.drawable.your_image)
.asBitmap()
.into(new LinearLayoutTarget(this.getApplicationContext(), (LinearLayout) yourLinearLayoutInstanceHere));
A nawet bardziej prosta praca bez bitmapy.
Konkretna realizacja.
public class LinearLayoutTarget extends ViewGroupTarget<Drawable> {
public LinearLayoutTarget(LinearLayout linearLayout) {
super(linearLayout);
}
/**
* Sets the {@link android.graphics.Bitmap} on the view using
* {@link android.widget.ImageView#setImageBitmap(android.graphics.Bitmap)}.
*
* @param resource The bitmap to display.
*/
@Override
protected void setResource(Drawable resource) {
view.setBackground(resource);
}
}
Do pracy z.
Glide.with(this.getApplicationContext())
.load(R.drawable.your_image)
.into(new LinearLayoutTarget((LinearLayout) yourLinearLayoutInstanceHere));
Właściwie powinien to być 'ViewGroupTarget
- 1. Ustaw kolor tła widoku Układ na gradient w systemie Android?
- 2. Android: Ustaw kolor tła i półprzezroczysty obraz tła na Aktywność
- 3. Android Układ obraz tła i kolor
- 4. Układ względny w ScrollView
- 5. Android względny układ align rodzic prawo
- 6. Android obraz tła do ekranu
- 7. Ustaw obraz tła w scenorysie
- 8. Układ względny ignorujący setMargin()
- 9. Android - zestaw układ tła programowo
- 10. Zmień układ systemu Android z Względny na liniowy
- 11. Ustaw kolor tła: Android
- 12. Zestaw liniowy układ tła dynamicznie
- 13. Kopiuj-wklej obraz w systemie Android za pomocą schowka Menedżer
- 14. Jak przesunąć obraz tła za pomocą css
- 15. Jak ustawić obraz tła z folderu zasobów w systemie Android?
- 16. Android - SimpleCursorAdapter.ViewBinder - Ustaw kolor tła
- 17. Android: ustaw tło układu za pomocą ścieżki obrazu
- 18. programowo ustaw edycję tekstu w systemie Android?
- 19. Obraz tła Android w pliku XML
- 20. Układ dolnego paska w systemie Android
- 21. Jak ustawić obraz tła w Xcode za pomocą Swift?
- 22. Ustaw szerokość przycisku w systemie Android
- 23. Ustaw obraz src na inny obraz jquery
- 24. Ustaw Gradient tła na przycisku w Swift
- 25. jak desaturate obraz tła div za pomocą css?
- 26. Jak zmienić obraz tła za pomocą animacji jQuery?
- 27. Jak ustawić obraz tła panelu za pomocą huśtawki?
- 28. Jak utworzyć niestandardowy układ powiadomień w systemie Android?
- 29. Ustaw tablicę ciągów na pogrubioną czcionkę w systemie Android
- 30. Pobierz plik/obraz za pomocą AFNetworking w systemie iOS?
Dlaczego potrzebne jest 'Build.VERSION.SDK_INT> = Build.VERSION_CODES.JELLY_BEAN'? – jaynp
@ dal102 który był dla mojej konkretnej potrzeby aplikacji –
Bez tego otrzymasz ostrzeżenie 'Połączenie wymaga poziomu API 16 (bieżące min wynosi XX): android.view.View # setBackground' -> więc to rozwiązanie będzie działać tylko na JELLY_BEAN i wyższy API – thorin86