Как добавить изображение в Android с помощью Jetpack Compose

Я пытаюсь добавить изображение в операцию с помощью Android Jetpack Compose, но выдает ошибку:

import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.Image


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Image(bitmap = imageFromResource(res = resources, resId =R.drawable.ic_launcher_background))
        }
    }
}


Это скриншот Android Studio


person Suraj Shende    schedule 08.03.2021    source источник


Ответы (3)


Любой из них может быть использован для получения ресурса изображения.

Используйте API painterResource для загрузки либо векторные рисунки, либо растровые форматы активов, такие как PNG. Вам не нужно знать тип рисуемого объекта, просто используйте painterResource.

import androidx.compose.ui.res.painterResource

        Image(painterResource(id = imageResource), contentDescription = contentDescription)

OR

import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.res.imageResource

        Image(ImageBitmap.imageResource(id = imageResource), contentDescription = contentDescription)

OR

import androidx.compose.ui.res.vectorResource

        Image(ImageVector.vectorResource(id = imageResource), contentDescription = contentDescription)
person Varsha Kulkarni    schedule 08.03.2021

в большинстве случаев локальную загрузку изображения можно выполнить с помощью painterResource в Image.

Например:

Image(painter = painterResource(id = R.drawable.ic_launcher_background), contentDescription = "")

или если вы хотите изменить цвет изображения, используйте Icon с painterResource.

Icon(painter = painterResource(id = R.drawable.ic_launcher_background), contentDescription = "", tint = Color.Red)

или если вы хотите загрузить с удаленный URL, используйте Coil

добавить зависимость:

implementation "dev.chrisbanes.accompanist:accompanist-coil:0.6.1"

а затем используйте его, как показано ниже:

 CoilImage(
                data = "https://www.instaily.com/images/android.jpg",
                contentDescription = "android",
                alignment = Alignment.TopCenter,
                modifier = Modifier
                    .fillMaxWidth()
                    .fillMaxHeight(.60f),
                contentScale = ContentScale.Crop,
                loading = {
                    Box(
                        modifier = Modifier.background(
                            shape = RoundedCornerShape(20.dp),
                            color = Teal200
                        )
                    )
                },
                error = {
                    Box(
                        modifier = Modifier.background(
                            shape = RoundedCornerShape(20.dp),
                            color = Teal200
                        )
                    )
                }
            )
person vikas kumar    schedule 09.03.2021

Это еще один альтернативный рабочий код для этой проблемы:

Код:

     Image(
          painter = painterResource(R.drawable.happy_meal_small),
          contentDescription = null
      )

Вывод:

введите здесь описание изображения

person Suraj Shende    schedule 08.03.2021