1、首先选择一张需要的图片,通过左侧的Resource Manage选择“+”并选择Import Drawables
选择一张图片
并调整以下两个内容
这两个内容的作用借用谷歌官方的Android开发教程的内容:
*Android 设备具有不同的屏幕尺寸(手机、平板电脑和电视等),而且这些屏幕也具有不同的像素尺寸。也就是说,有可能一部设备的屏幕为每平方英寸 160 个像素,而另一部设备的屏幕在相同的空间内可以容纳 480 个像素。如果不考虑像素密度的这些变化,系统可能会按比例缩放图片,这可能会导致图片模糊或占用大量内存空间,或者图片大小不当。
如果所调整的图片超出了 Android 系统可处理的图片大小,系统会抛出内存不足错误。对于照片和背景图片(如当前图片 androidparty.png),应将其放在 drawable-nodpi 文件夹中,这样会停止调整大小行为*
2、在项目中,所有资源都保存在/res目录下,具有以下例如的结构:
MyProject/
src/
MyActivity.kt
res/
drawable/
graphic.png
mipmap/
icon.png
values/
strings.xml
在项目中,R 类是 Android 自动生成的类,其中包含了项目中所有资源的 ID。所以我们可以使用R.drawable.picture_name的方式找到图片资源。
接下来构建组合函数GreetingImage()首先在函数中定义变量image它所对应的就是我们所需要的图片
val image = painterResource(R.drawable.androidparty)
接着构建组合内容image
Image( painter = image, contentDescription = null, contentScale = ContentScale.Crop, alpha = 0.6F )
这里的实参contentDescription与Talk Back内容有关,这是一个为了使更多用户使用我们的程序所有的一些提示,这里我们并不需要所以设置为null
ContentScale中提供各种各样的参数来调整图片大小比例
alpha规定了图片透明度
最后使用Box布局并添加上之前的”GreetingText”函数
3、最终效果
完整代码
package com.example.happybirthdayimport android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.Imageimport androidx.compose.foundation.layout.Boximport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.paddingimport androidx.compose.material3.MaterialThemeimport androidx.compose.material3.Surfaceimport androidx.compose.material3.Textimport androidx.compose.runtime.Composableimport androidx.compose.ui.Modifierimport androidx.compose.ui.layout.ContentScaleimport androidx.compose.ui.res.painterResourceimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dpimport androidx.compose.ui.unit.spimport com.example.happybirthday.ui.theme.HappyBirthdayThemeclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { HappyBirthdayTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { GreetingImage("Happy Birthday,Human") } } } }}@Composablefun GreetingText(message: String, modifier: Modifier = Modifier) { Text( text = message, fontSize = 100.sp, lineHeight = 113.sp)}@Composablefun GreetingImage(message: String, modifier: Modifier = Modifier) { val image = painterResource(R.drawable.androidparty) Box { Image( painter = image, contentDescription = null, contentScale = ContentScale.Crop, alpha = 0.5F ) GreetingText( message = message, modifier = Modifier .fillMaxSize() .padding(8.dp) ) }}@Preview(showBackground = false)@Composablefun GreetingPreview() { HappyBirthdayTheme { GreetingImage("Happy Birthday,Human") }}
本文由博客一文多发平台 OpenWrite 发布!