Stellen Sie sicher, dass Sie auf der neuesten Version sind
implementation 'com.github.bumptech.glide:glide:4.10.0'
Kotlin:
Glide.with(this)
.asBitmap()
.load(imagePath)
.into(object : CustomTarget<Bitmap>(){
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
imageView.setImageBitmap(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// this is called when imageView is cleared on lifecycle call or for
// some other reason.
// if you are referencing the bitmap somewhere else too other than this imageView
// clear it here as you can no longer have the bitmap
}
})
Bitmap-Größe:
Wenn Sie die Originalgröße des Bildes verwenden möchten, verwenden Sie den Standardkonstruktor wie oben. Andernfalls können Sie die gewünschte Größe für die Bitmap übergeben
into(object : CustomTarget<Bitmap>(1980, 1080)
Java:
Glide.with(this)
.asBitmap()
.load(path)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Alte Antwort:
Mit compile 'com.github.bumptech.glide:glide:4.8.0'
und unten
Glide.with(this)
.asBitmap()
.load(path)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
});
Für compile 'com.github.bumptech.glide:glide:3.7.0'
und unter
Glide.with(this)
.load(path)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Jetzt sehen Sie möglicherweise eine Warnung SimpleTarget is deprecated
Grund:
Der Hauptgrund für die Ablehnung von SimpleTarget besteht darin, Sie vor den Möglichkeiten zu warnen, mit denen Sie dazu verleitet werden, den API-Vertrag von Glide zu brechen. Insbesondere werden Sie nicht gezwungen, die von Ihnen geladene Ressource nicht mehr zu verwenden, sobald das SimpleTarget gelöscht wurde. Dies kann zu Abstürzen und grafischer Beschädigung führen.
Das SimpleTarget
Standbild kann verwendet werden, solange Sie sicherstellen, dass Sie die Bitmap nicht verwenden, sobald die Bildansicht gelöscht wurde.
4.9.0
.asBitmap()
sollte nach gesetzt werden,with(this)
wenn es ungelöst ist.Ich bin mit Glide nicht vertraut genug, aber es sieht so aus, als ob Sie, wenn Sie die Zielgröße kennen, Folgendes verwenden können:
Es sieht so aus, als könnten Sie bestehen
-1,-1
und ein Bild in voller Größe erhalten (nur basierend auf Tests, kann es nicht dokumentiert sehen).Hinweis
into(int,int)
gibt a zurückFutureTarget<Bitmap>
, daher müssen Sie dies in eine Try-Catch-BlockabdeckungExecutionException
und einwickelnInterruptedException
. Hier ist eine vollständigere Beispielimplementierung, die getestet wurde und funktioniert:Nach dem Vorschlag von Monkeyless im Kommentar unten (und dies scheint auch der offizielle Weg zu sein ) können Sie a verwenden
SimpleTarget
, optional gekoppelt mitoverride(int,int)
, um den Code erheblich zu vereinfachen. In diesem Fall muss jedoch die genaue Größe angegeben werden (alles unter 1 wird nicht akzeptiert):wie von @hennry vorgeschlagen, wenn Sie das gleiche Bild benötigen, verwenden Sie
new SimpleTarget<Bitmap>()
quelle
Target.SIZE_ORIGINAL
sowohl die Breite als auch die Höhe der Bitmap anstelle von -1 zu übergebenSimpleTarget
new SimpleTarget<Bitmap>(){....}
Es sieht so aus, als ob das Überschreiben der
Target
Klasse oder einer der Implementierungen wieBitmapImageViewTarget
und das Überschreiben dersetResource
Methode zum Erfassen der Bitmap der richtige Weg sein könnte ...Dies ist ungetestet. :-)
quelle
AKTUALISIEREN
Jetzt müssen wir verwenden
Custom Targets
BEISPIELCODE
Die vor allem Antwort ist richtig, aber veraltet
denn in neuer Version von Glide
implementation 'com.github.bumptech.glide:glide:4.8.0'
Sie finden unten Fehler im Code
.asBitmap()
ist nicht verfügbar inglide:4.8.0
ist veraltetSimpleTarget<Bitmap>
Hier ist die Lösung
quelle
Dies hat bei mir funktioniert: https://github.com/bumptech/glide/wiki/Custom-targets#overriding-default-behavior
quelle
Wenn Sie Bitmap-Variablen ein dynamisches Bitmap-Bild zuweisen möchten
Beispiel für
kotlin
Die obigen Antworten haben bei mir nicht funktioniert
.asBitmap
sollte vor dem sein.load("http://....")
quelle
UPDATE FÜR NEUE VERSION
ALTE ANTWORT
Die Antwort von @ outlyer ist korrekt, aber es gibt einige Änderungen in der neuen Glide-Version
Meine Version: 4.7.1
Code:
Hinweis: Dieser Code wird im UI-Thread ausgeführt. Sie können also AsyncTask, Executor oder andere Elemente für die Parallelität verwenden (z. B. @ outlyers Code). Wenn Sie die Originalgröße erhalten möchten, geben Sie Target.SIZE_ORIGINA als meinen Code ein. Verwenden Sie nicht -1, -1
quelle
Neuere Version:
quelle