При быстрой прокрутке lazycolumn не удается загрузить изображение и даже заполнитель. Пробовал использовать Coil, но проблема та же самая с Box {Image}, SubComposeAsyncImage, AsyncImage. Изображение всех трех вариантов не загружается с сервера.
@Composable
fun CharactersList(
modifier: Modifier = Modifier,
viewModel: MainActivityViewModel = hiltViewModel()
) {
val lazyPagingItems = viewModel.pagingDataFlow.collectAsLazyPagingItems()
LazyColumn(
modifier = modifier
.fillMaxSize()
.background(Color.White),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
items(
lazyPagingItems.itemCount,
key = lazyPagingItems.itemKey { it.id ?: 0 }) {
val item = lazyPagingItems[it]
if (item != null) {
CharacterListItem(item)
}
}
val loadState = lazyPagingItems.loadState
if (loadState.append is LoadState.Loading) {
item {
CircularProgressIndicator(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
)
}
}
}
}
@Composable
fun CharacterListItem(item: Result) {
Column(modifier = Modifier.background(Color.Black)) {
AsyncImage(
model = ImageRequest.Builder(
LocalContext.current)
.data(item.image)
.crossfade(true).crossfade(true)
.diskCachePolicy(CachePolicy.ENABLED)
.memoryCachePolicy(CachePolicy.ENABLED)
.build(),
contentDescription = null,
modifier = Modifier
.align(alignment = Alignment.CenterHorizontally)
.padding(top = 10.dp, bottom = 10.dp)
.size(80.dp)
.clip(CircleShape)
.aspectRatio(1f),
placeholder = painterResource(R.drawable.ic_launcher_background)
)
// ManualImageLoader(item.image)
//
// SubcomposeAsyncImage(
// model = item.image,
// contentDescription = null,
// modifier = Modifier
// .padding(vertical = 10.dp)
// .size(80.dp)
// .clip(CircleShape),
// loading = {
// // This is ALREADY centered inside the image area by Coil
// CircularProgressIndicator(modifier = Modifier.scale(0.5f))
// }
// )
Text(
modifier = Modifier
.fillMaxWidth()
.padding(top = 10.dp, bottom = 10.dp),
textAlign = TextAlign.Center,
text = item.name.toString(),
fontSize = TextUnit(12f, TextUnitType.Sp),
color = Color.White
)
}
}
@Composable
fun ManualImageLoader(imageUrl: String?) {
val painter = rememberAsyncImagePainter(imageUrl)
val state = painter.state
Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxWidth()) {
Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.padding(top = 10.dp, bottom = 10.dp)
.size(80.dp)
.clip(CircleShape)
.aspectRatio(1f)
)
if (state is AsyncImagePainter.State.Loading) {
CircularProgressIndicator()
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -scrolling
LazyColumn не может загрузить изображение с быстрой прокруткой ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1772233777
Anonymous
При быстрой прокрутке lazycolumn не удается загрузить изображение и даже заполнитель. Пробовал использовать Coil, но проблема та же самая с Box {Image}, SubComposeAsyncImage, AsyncImage. Изображение всех трех вариантов не загружается с сервера.
@Composable
fun CharactersList(
modifier: Modifier = Modifier,
viewModel: MainActivityViewModel = hiltViewModel()
) {
val lazyPagingItems = viewModel.pagingDataFlow.collectAsLazyPagingItems()
LazyColumn(
modifier = modifier
.fillMaxSize()
.background(Color.White),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
items(
lazyPagingItems.itemCount,
key = lazyPagingItems.itemKey { it.id ?: 0 }) {
val item = lazyPagingItems[it]
if (item != null) {
CharacterListItem(item)
}
}
val loadState = lazyPagingItems.loadState
if (loadState.append is LoadState.Loading) {
item {
CircularProgressIndicator(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
)
}
}
}
}
@Composable
fun CharacterListItem(item: Result) {
Column(modifier = Modifier.background(Color.Black)) {
AsyncImage(
model = ImageRequest.Builder(
LocalContext.current)
.data(item.image)
.crossfade(true).crossfade(true)
.diskCachePolicy(CachePolicy.ENABLED)
.memoryCachePolicy(CachePolicy.ENABLED)
.build(),
contentDescription = null,
modifier = Modifier
.align(alignment = Alignment.CenterHorizontally)
.padding(top = 10.dp, bottom = 10.dp)
.size(80.dp)
.clip(CircleShape)
.aspectRatio(1f),
placeholder = painterResource(R.drawable.ic_launcher_background)
)
// ManualImageLoader(item.image)
//
// SubcomposeAsyncImage(
// model = item.image,
// contentDescription = null,
// modifier = Modifier
// .padding(vertical = 10.dp)
// .size(80.dp)
// .clip(CircleShape),
// loading = {
// // This is ALREADY centered inside the image area by Coil
// CircularProgressIndicator(modifier = Modifier.scale(0.5f))
// }
// )
Text(
modifier = Modifier
.fillMaxWidth()
.padding(top = 10.dp, bottom = 10.dp),
textAlign = TextAlign.Center,
text = item.name.toString(),
fontSize = TextUnit(12f, TextUnitType.Sp),
color = Color.White
)
}
}
@Composable
fun ManualImageLoader(imageUrl: String?) {
val painter = rememberAsyncImagePainter(imageUrl)
val state = painter.state
Box(contentAlignment = Alignment.Center, modifier = Modifier.fillMaxWidth()) {
Image(
painter = painter,
contentDescription = null,
modifier = Modifier
.padding(top = 10.dp, bottom = 10.dp)
.size(80.dp)
.clip(CircleShape)
.aspectRatio(1f)
)
if (state is AsyncImagePainter.State.Loading) {
CircularProgressIndicator()
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79898080/lazycolumn-fails-to-load-image-with-fast-scrolling[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия