Jetpack Compose——Image使用Coli加载网络图片(包含GIF、SVG)
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)
效果如图:
Jetpack Compose——Image使用Coli加载网络图片(包含GIF、SVG)相关推荐
- Jetpack Compose Image加载网络图片
在Jetpack Compose中加载网络图片,现在只能使用 Coil这个库!!! 且accompanist在几个月之前就弃用了Guild和 Coli库 弃用Guild和Coli!!! 1.引入Col ...
- iOS开发swift版异步加载网络图片(带缓存和缺省图片)
iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下: ...
- 【转载】一行代码加载网络图片到ImageView——Android Picasso
原文链接:一句代码加载网络图片到ImageView--Android Picasso 注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...
- ios开发多线程篇--异步加载网络图片GCD
一.异步加载网络图片 1.ATS (1)简介 从iOS9.0开始,如果按照以前的方式写代码,在访问网络的时候 ,会报以下警告信息: App Transport Security has blocked ...
- 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )
文章目录 一.加载网络图片 二.加载静态图片 三.加载本地图片 四.完整代码示例 五.相关资源 一.加载网络图片 参考 [Flutter]Image 组件 ( Image 组件简介 | Image 构 ...
- Android Volley完全解析2:使用Volley加载网络图片
原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...
- android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片
Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...
在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...
- android imageview 设置网络图片,ImageView加载网络图片
android网络加载图片框架Android-Universal-Image-Loader功能非常强大,其开源地址https://github.com/nostra13/Android-Univers ...
最新文章
- android组件浮动在activity上_Jetpack Hilt 依赖注入框架上手指南
- 用1天快速上手org-mode(windows系统)
- 全文搜索引擎选 ElasticSearch 还是 Solr
- tensorBoard 初级实现
- asp.net网站安全常见问题与防范
- 利用license机制来保护Java软件产品的安全
- 漫谈单点登录(SSO)(淘宝天猫)(转载)
- MapReduce简介和过程浅析
- validate验证
- 闭包 进阶 javascript
- [css]通过transform缩放邮件客户端h5页面
- Bootstrap 按钮的使用
- 青春校园小说:天使会爱上恶魔【完】『看了绝对上瘾』(欢迎转载)
- 动画过渡transition
- 给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串 s,
- InstallShield Slient Uninstall
- python图例重复显示_python matplotlib图例重复
- 从来也科技首次入选Gartner RPA魔力象限报告,看国产RPA未来发展
- linux文件扫描并打印,Linux办公一条龙—Linux中扫描、打印的实现
- 终于下定决心经营自己的 GitHub 账号
热门文章
- 华为荣耀7i手动更改DNS,提高网页加载速度
- commandArgument用于绑定一个传递的参数
- 中科大实验室linux,中国科学技术大学信息网络实验室
- C语言:对从键盘输入的整数进行求和(scanf( )的高级用法)
- RocketMq的刷盘方式
- 艾诺威Aerohive AP120,TTL简单设置和Image(固件)损坏修复等
- c++资料匠心精作C++从0到1入门编程(三)- c++核心(基于STL的泛式编程)
- 听说这份试卷只有程序员能打满分...
- excel打开大文件很卡
- spring事务传播之NESTED