Я хотел бы отобразить GIF-файл, но он не загружается из R.drawable.
Насколько я понимаю, чертежи «дорабатываются» в процессе компиляции. Так как мне понадобится МНОГО гифок, загрузить и настроить их плотность одну за другой в загрузчике ResourceManager будет невозможно. Более того, когда количество ресурсов станет большим, я больше не смогу его компилировать.
Посмотрев в Интернете, я смог создать модуль под названием «общий» просто для того, чтобы разместите свои GIF-изображения, и я загрузил туда свои файлы.
общий > scr > основной > активы > папка > sample.gif
дерево файлов проекта
Пока все хорошо, я могу получить доступ к своим статическим изображениям, используя FilePath.
Теперь я хочу отобразить GIF-изображения, но не могу этого сделать.
Код на данный момент:
Код: Выделить всё
@ExperimentalCoilApi
@Composable
fun GifImage(filePath: String, modifier: Modifier = Modifier) {
val inputStream: InputStream = LocalContext.current.assets.open("dex/$filePath").
val bufferedSource = inputStream.source().buffer()
val imageLoader = ImageLoader.Builder(LocalContext.current).build().
var loadingState by remember { mutableStateOf(false) }
val painter = rememberAsyncImagePainter(
imageLoader = imageLoader,
model = ImageRequest.Builder(LocalContext.current)
.data(bufferedSource)
.decoderFactory(
if (Build.VERSION.SDK_INT >= 28) ImageDecoderDecoder.Factory()
else GifDecoder.Factory())
.size(Size.ORIGINAL)
.build(),
onSuccess = {
loadingState = true
}
)
if (loadingState){
Image(
painter = painter,
contentDescription = null
)
} else {
Text("Loading")
}
}
Если я загрузил свой gif как рисованный, я использую
.data(R.drawable.filename)
он работает, но не с filePath, который раньше работал со статическим изображение (.png)
Скриншот
Подробнее здесь: https://stackoverflow.com/questions/789 ... -localpath
Мобильная версия