当前位置:网站首页>Jetpack Compose——Image使用Coli加载网络图片(包含GIF、SVG)
Jetpack Compose——Image使用Coli加载网络图片(包含GIF、SVG)
2022-08-09 13:12:00 【lplj717】
Image加载网络图片
首先添加依赖:
implementation("io.coil-kt:coil:1.4.0")
implementation("io.coil-kt:coil-compose:1.4.0")记得别忘记在manifest添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
简单使用:
Image(
modifier = Modifier
.size(200.dp, 150.dp),
painter = rememberImagePainter("https://img-blog.csdnimg.cn/20210823085620179.jpeg"),
contentDescription = null
)效果如图:

1,placeholder:占位图
在图片还没有完全显示之前所展示的本地资源图片
Image(
modifier = Modifier
.size(300.dp, 200.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
}),
contentDescription = null
)效果如图:

2,Transitions:过渡效果
提供了两种过渡效果:
CrossfadeTransition 淡入淡出
Transition.NONE 在Target没有动画的情况下立即设置可绘制对象
Image(
modifier = Modifier
.size(300.dp, 200.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
}),
contentDescription = null
)效果如图:

3,transformations:设置样式
CircleCropTransformation 圆形裁剪
RoundedCornersTransformation 圆角
GrayscaleTransformation 灰度
BlurTransformation 高斯模糊
@Composable
fun imageTest() {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(10.dp)
.verticalScroll(state = rememberScrollState())
) {
Image(
modifier = Modifier
.size(120.dp, 120.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
transformations(CircleCropTransformation())//圆形效果
}),
contentDescription = null
)
Spacer(modifier = Modifier.padding(2.dp))
Image(
modifier = Modifier
.size(120.dp, 120.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
transformations(RoundedCornersTransformation(0.8f))//圆角效果
}),
contentDescription = null
)
Spacer(modifier = Modifier.padding(2.dp))
Image(
modifier = Modifier
.size(120.dp, 120.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
transformations(GrayscaleTransformation())//灰度效果
}),
contentDescription = null,
contentScale = ContentScale.Crop
)
Spacer(modifier = Modifier.padding(2.dp))
Image(
modifier = Modifier
.size(120.dp, 120.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
transformations(BlurTransformation(LocalContext.current, 0.1f, 2f))//高斯效果
}),
contentDescription = null,
contentScale = ContentScale.Crop
)
}
}效果如图:

Compose加载GIF图片
首先添加依赖:
implementation("io.coil-kt:coil-gif:1.4.0")使用:
Image(
modifier = Modifier
.size(300.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/e6bb95f89399404195212196fdaf3964.gif",
builder = {
decoder(GifDecoder())//添加GIF解码
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
}),
contentDescription = null
)效果如图:

但是这里会出现一个问题:如果图片是jpg等格式的是没办法加载出来的,解决方案:
自己构建一个图片加载器赋值给imageLoader
//自己构建图片加载器
val imageLoaderM = ImageLoader.Builder(LocalContext.current)
.componentRegistry {
add(GifDecoder())
}
.build()
Image(
modifier = Modifier
.size(300.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/e6bb95f89399404195212196fdaf3964.gif",
imageLoader = imageLoaderM,
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
}),
contentDescription = null
)
Spacer(modifier = Modifier.padding(2.dp))
Image(
modifier = Modifier
.size(300.dp),
painter = rememberImagePainter(
data = "https://img-blog.csdnimg.cn/20210823085620179.jpeg",
imageLoader = imageLoaderM,
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
}),
contentDescription = null
)效果如图:(可以加载出来)

Compose加载SVG图片
首先添加依赖
implementation("io.coil-kt:coil-svg:1.4.0")使用:
//自己构建图片加载器
val imageLoaderM = ImageLoader.Builder(LocalContext.current)
.componentRegistry {
add(GifDecoder())//添加GIF图片解码
add(SvgDecoder(LocalContext.current))//添加SVG图片解码
}
.build()
Image(
modifier = Modifier
.size(300.dp),
painter = rememberImagePainter(
data = "https://coil-kt.github.io/coil/images/coil_logo_black.svg",
imageLoader = imageLoaderM,
builder = {
placeholder(R.drawable.head_icon)//占位图
crossfade(true)//淡出效果
}),
contentDescription = null
)效果如图:

边栏推荐
- Spark读取多目录
- Q_06_02 类型模型
- pytest 之 fixture的定义及作用域
- 问题系列-如何修改或更新localhost里的值
- 面试攻略系列(三)-- 高级开发工程师面试问些啥?
- Record the system calls and C library functions used in this project-2
- The sword refers to Offer 56 - II. Number of occurrences of a number in an array II (bit operation)
- 二叉树的遍历(py)
- tkiner组件之滚动文本框(scrolledtext )相关操作
- opencv-matchTemplate 之使用场景为大图里面找小图
猜你喜欢

render解析
![行程和用户[阅读理解法]](/img/4b/77bba3c488b5410fdec5c3894c7421.png)
行程和用户[阅读理解法]

Ledong Fire Rescue Brigade was invited to carry out fire safety training for cadres

tkiner组件之滚动文本框(scrolledtext )相关操作

Spark读取多目录

gin's middleware and routing grouping

GET POST PUT DELETE request in GIN

01_iTween_第一天--小球抛物线

蓝桥历届真题-跑步锻炼

Final assignment of R language data analysis in a university
随机推荐
Q_06_03 表达式
2个有序数组排序
error Trailing spaces not allowed no-trailing-spaces 9:14 error Unexpected trailing comma
微服务+微信小程序实现社区服务
微信实现扫码支付(native)
Draw a histogram with plot_hist_numeric()
Sql之各种Join
力扣学习路径
tkiner-canvas显示图片
企业公众号开通微信支付
面试攻略系列(四)-- 你不知道的大厂面试
TCP三次握手和四次挥手及拥塞控制
富媒体在客服IM消息通信中的秒发实践
javscript基础易错点集合
RobotFramework 之 Setup和Teardown
FFmpeg multimedia file processing (FFMPEG logging system)
NC161 二叉树的中序遍历
Spark读取多目录
处理JSON,fastjson、json-lib简单使用
Q_04_07 进一步探索