Adr*_*nto 18 android image-processing drawimage kotlin android-jetpack-compose
我可以使用
val image = +imageResource(R.drawable.header)
并用于DrawImage(image)从 Drawable Resource 加载图像,
但是如何将字符串 url 加载到DrawImage(image)? 中。我试过使用 Glide,但它需要加载到 imageView 中。同时DrawImage(image)不接受来自 imageView 的输入。
谢谢。
着眼1.0.x于实现它的最佳方法是使用Coil-Compose库。
添加您build.gradle的依赖项
dependencies {
implementation("io.coil-kt:coil-compose:1.3.1")
}
Run Code Online (Sandbox Code Playgroud)
然后只需使用:
Image(
painter = rememberImagePainter("your url"),
contentDescription = "My content description",
)
Run Code Online (Sandbox Code Playgroud)
这会加载url传入的 with rememberImagePainter,然后使用标准Image可组合显示生成的图像。
从互联网加载图像的另一种选择。
将线圈依赖添加到build.gradle:
dependencies {
implementation "io.coil-kt:coil-compose:1.3.2") // 1.3.2
}
Run Code Online (Sandbox Code Playgroud)
简单使用:
import androidx.compose.foundation.Image
import coil.compose.rememberImagePainter
Image(
painter = rememberImagePainter("https://picsum.photos/300/300"),
contentDescription = stringResource(R.string.image_content_desc)
)
Run Code Online (Sandbox Code Playgroud)
不要忘记添加互联网权限(AndroidManifest.xml)
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)
更多定制在这里:Jetpack Compose - Coil Document
从 url 加载位图并使用asImageAsset()位图扩展方法的解决方案:
@Composable
fun loadPicture(url: String): UiState<Bitmap> {
var bitmapState: UiState<Bitmap> by state<UiState<Bitmap>> { UiState.Loading }
Glide.with(ContextAmbient.current)
.asBitmap()
.load(url)
.into(object : CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
bitmapState = UiState.Success(resource)
}
override fun onLoadCleared(placeholder: Drawable?) { }
})
return bitmapState
}
Run Code Online (Sandbox Code Playgroud)
像这样使用 Image() 函数:
val loadPictureState = loadPicture(url)
if (loadPictureState is UiState.Success<Bitmap>)
Image(loadPictureState.data.asImageAsset())
else
Text("Loading...")
Run Code Online (Sandbox Code Playgroud)
此代码段使用来自JetNews官方 Google Jetpack Compose 示例中的Glide库和UiState辅助函数
由于某种原因,Jetpack compose 中仍未添加其支持。但目前,你可以使用这个类
https://gist.github.com/nglauber/8a3c39db47813483d788fb2914f0f21f#file-image-kt
要使用它,您需要这样调用它:
Image(
<your image url>,
144.dp,
96.dp
)
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里查看我是如何使用它的。 https://github.com/ranjeetsinha13/gobble/blob/f8d9bca4b010adf5b4aa59cc6e56f8612ee1de09/app/src/main/java/com/rs/gobble/ui/fragments/SearchFragment.kt#L120
| 归档时间: |
|
| 查看次数: |
6852 次 |
| 最近记录: |