Versuchen Sie, Fresco DraweeView zu verwenden, um Galeriebilder zu laden, aber einige der Bilder laden nicht
Posted: 28 Feb 2025, 08:06
Ich versuche einen benutzerdefinierten Galerie -Bildauswahler zu erstellen, mit dem Bilder aus der Galerie geladen werden müssen. Ich benutze Fresko anstelle von Glide, um es leichter als Gleit zu gleiten und versuche mein Bestes, um damit herumzuarbeiten. Aber beim Laden der Bilder werden sie manchmal nicht angezeigt, und manchmal kann es angezeigt werden, wenn ich den Bildhalter auf und ab scrolle und den Bildhalter aktualisiere. Das Problem sollte also nicht bei der URI sein, aber mit der Fresco -Drawee -Ansicht
für Debugging -Zwecke habe ich auch versucht, einen ControllerListener hinzuzufügen, aber wie es scheint, wird die OnFailure -Funktion nicht aufgerufen. seltsam. < /p>
Dies ist der Code, den ich verwende: < /p>
für Debugging -Zwecke habe ich auch versucht, einen ControllerListener hinzuzufügen, aber wie es scheint, wird die OnFailure -Funktion nicht aufgerufen. seltsam. < /p>
Dies ist der Code, den ich verwende: < /p>
Code: Select all
override fun bind(data: Media) {
binding.run {
media = data
isSelected = selectedUriList.contains(data.uri)
if (isSelected) {
selectedNumber = selectedUriList.indexOf(data.uri) + 1
}
showZoom = builder.showZoomIndicator && media is Media.Image
showDuration = builder.showVideoDuration && media is Media.Video
if (data is Media.Video) {
binding.duration = data.durationText
}
binding.ivImage.hierarchy = GenericDraweeHierarchyBuilder(binding.ivImage.resources)
.setPlaceholderImage(R.color.loading_placeholder)
.setFailureImage(R.color.red)
.build()
val imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(data.uri.toString()))
.setResizeOptions(ResizeOptions(100,100))
.setProgressiveRenderingEnabled(true)
.disableMemoryCache()
.build()
val controller = Fresco.newDraweeControllerBuilder()
.setOldController(ivImage.controller)
.setImageRequest(imageRequest)
.setAutoPlayAnimations(true)
.setControllerListener(object: BaseControllerListener() {
override fun onFailure(id: String?, throwable: Throwable?) {
Log.e("FrescoError", "Image failed to load: ${throwable?.message}")
}
})
.build()
ivImage.controller = controller
}
}
< /code>