Compose Image简单使用

基础API:

fun Image( painter: Painter, // 要绘制的图片(还可以是ImageVector和ImageBitmap) contentDescription: String?, // 用来描述图片,等价于ImageView的contentDescription modifier: Modifier = Modifier, // 修饰符 alignment: Alignment = Alignment.Center, // 对齐方式,等价于ImageView的gravity,默认居中显示 contentScale: ContentScale = ContentScale.Fit, // 缩放方式,等价于ImageView的scaleType,默认是ContentScale.Fit,等价于ImageView的fitCenter alpha: Float = DefaultAlpha, // 透明度,等价于ImageViwe的alpha,默认为1.0 colorFilter: ColorFilter? = null // 颜色过滤器,可以对图片色值进行混合处理 )

基本用法

@Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier .size(width = 200.dp, height = 200.dp) //指定size为200dp .background(Color.White), // 白色背景 contentScale = ContentScale.Inside // Inside显示 ) } 效果如下:

示例

现在我们修改一下,修改对齐方式,并添加透明度 @Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier .size(width = 200.dp, height = 200.dp) .background(Color.White), contentScale = ContentScale.FillHeight, //填满高度 alignment = Alignment.CenterEnd, // 先居中对齐,再End对齐 alpha = 0.3F, // 透明度 ) } 效果如下:

示例

现在我们添加下颜色过滤器,如下: colorFilter = ColorFilter.lighting(multiply = Color.Red, add = Color.Blue) 效果如下:

示例

现在来让我们添加一个圆角背景,代码如下: @Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier .size(width = 100.dp, height = 100.dp) .background(Color.Transparent, RoundedCornerShape(16.dp)), // 添加圆角背景 contentScale = ContentScale.FillBounds, // 等价于ImageView的fixXY alignment = Alignment.Center, // 居中显示 colorFilter = ColorFilter.lighting(multiply = Color.Red, add = Color.Blue) ) } 效果如下:

示例

发现并没有生效,因为background针对的是背景,不是图片(图片是前景),那么我们将代码改成如下,来验证一下我们的猜想: @Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier .size(width = 100.dp, height = 100.dp) .background(Color.White, RoundedCornerShape(16.dp)), // 添加圆角背景,颜色改为白色,方便观察 contentScale = ContentScale.Inside, // 让图片不覆盖背景 alignment = Alignment.Center, // 居中显示 colorFilter = ColorFilter.lighting(multiply = Color.Red, add = Color.Blue) ) } 效果图:

示例

我们发现确实是对背景生效了。

那么怎么对图片生效呢,使用clip即可,如下: @Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier .size(width = 100.dp, height = 100.dp) .clip(RoundedCornerShape(16.dp)), // 裁剪为圆角矩形,radius为16dp contentScale = ContentScale.FillBounds, // 等价于ImageView的fitXY alignment = Alignment.Center, // 居中显示 colorFilter = ColorFilter.lighting(multiply = Color.Red, add = Color.Blue) ) } 效果如下:

示例

如果想制作圆形头像,直接使用Modifier.clip(CircleShape)即可,clip针对的是内容,对于Image来说,图片当然是内容了,如下: @Composable fun ImageDemo() { Image( painter = painterResource(id = R.mipmap.head), contentDescription = stringResource(id = R.string.str_image_description), modifier = Modifier.size(width = 100.dp, height = 100.dp) .clip(CircleShape), // 这是为圆形裁剪 contentScale = ContentScale.FillBounds, // 等价于ImageView的fitXY alignment = Alignment.Center, // 居中显示 ) } 效果如下:

100x100

如果Image不是正方形,则会裁剪为椭圆。 如下:

size(width = 100.dp, height = 80.dp) 100x80

总之,Image跟Android原生的ImageView区别不大,唯一好的地方在于可以直接使用Modifier.clip()来对图片进行裁剪,轻松实现圆形、圆角矩形头像等,一些原来的第三方库正在瑟瑟发抖...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 文件来描述应用程序的服务、网络和卷等配置。通过 Docker Compose,您可以轻松地管理和编排多个容器,以创建复杂的应用程序。 以下是使用 Docker Compose 的一般步骤: 1. 创建一个名为 `docker-compose.yml` 的 YAML 文件,并在文件中定义您的服务。每个服务都应该包括一个容器映像、容器名称、端口映射等配置。 例如,以下是一个简单的 `docker-compose.yml` 的示例: ```yaml version: '3' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=root ``` 上述示例中定义了两个服务:`web` 和 `db`。`web` 服务使用 Nginx 镜像,并将容器的 80 端口映射到主机的 8080 端口,还将主机上的 `./html` 目录挂载到容器的 `/usr/share/nginx/html` 目录。`db` 服务使用 MySQL 镜像,并设置了 `MYSQL_ROOT_PASSWORD` 环境变量。 2. 在终端中进入包含 `docker-compose.yml` 文件的目录,并运行以下命令来启动服务: ```bash docker-compose up ``` 此命令将会下载所需的容器镜像(如果不存在),然后创建和启动相应的容器。 3. 如果需要在后台运行服务,可以使用 `-d` 参数: ```bash docker-compose up -d ``` 4. 若要停止正在运行的服务,可以运行以下命令: ```bash docker-compose down ``` 这将停止并删除相关的容器。 这只是 Docker Compose 的基本用法,您可以根据需要在 `docker-compose.yml` 文件中添加更多的服务和配置。有关更详细的信息和其他用法,请参阅 Docker Compose 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值