Класс ContentScale
Класс ContentScale задаёт,
как масштабировать изображение внутри области,
которую занимает
Image.
Значение передают в параметр contentScale.
По умолчанию стоит Fit:
картинка целиком помещается в область
с сохранением пропорций.
Синтаксис
ContentScale.Crop
Значения
| Значение | Описание |
|---|---|
Crop |
Масштаб с сохранением пропорций так, чтобы область заполнилась целиком. Лишнее по краям обрезается. |
Fit |
Масштаб с сохранением пропорций так, чтобы картинка целиком вошла в область. Могут остаться пустые поля. |
FillBounds |
Растянуть картинку на всю область без сохранения пропорций. |
FillHeight |
Подогнать высоту под область, ширина считается по пропорциям. |
FillWidth |
Подогнать ширину под область, высота считается по пропорциям. |
Inside |
Как Fit, но не увеличивать картинку
больше исходного размера.
|
None |
Без масштаба, исходный размер в пикселях. |
Пример
Давайте обрежем картинку значением Crop
в квадрате фиксированного размера:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.size
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Image(
painter = painterResource(R.drawable.picture),
contentDescription = "abcde",
modifier = Modifier.size(120.dp),
contentScale = ContentScale.Crop,
)
}
}
}
На экране картинка заполнит квадрат, края обрежутся по центру области.
Смотрите также
-
функция
Image,
куда передаютcontentScale -
функция
painterResource,
которая загружаетPainterдляImage -
метод
size,
который задаёт ширину и высоту области -
класс
Alignment,
который сдвигает картинку внутри области