- fun Color.compositeOver(background: Color): Color
例えば #232323 のグレーに透明度15%の白を重ねたときの色(不透明のグレー)を作りたい場合は、このようになる。
- val gray = Color(0xFF232323)
- val white150 = Color.White.copy(alpha = 0.15f)
- val compositeColor = white150.compositeOver(gray)
- Card(
- backgroundColor = MaterialTheme.colors.surface.compositeOver(MaterialTheme.colors.background),
- ) {
- }
以下のコードでは、MaterialTheme の surface に透明度15%の白を指定しているので、左では影が変になっている。右は compositeOver を使って作った不透明の色(ベースの色が不透明のグレーだから不透明になる)を backgroundColor に指定しているので、意図通りの表示になっている。
- MaterialTheme(
- colors = lightColors(
- background = Color(0xFF232323),
- surface = Color.White.copy(alpha = 0.15f)
- )
- ) {
- Surface(color = MaterialTheme.colors.background) {
- Row(
- modifier = Modifier
- .padding(top = 8.dp)
- .fillMaxSize()
- ) {
- Card(
- modifier = Modifier
- .padding(start = 8.dp, bottom = 8.dp)
- .size(136.dp)
- ) {
- // 左のカード
- }
- Card(
- backgroundColor = MaterialTheme.colors.surface.compositeOver(MaterialTheme.colors.background),
- modifier = Modifier
- .padding(start = 8.dp, bottom = 8.dp)
- .size(136.dp)
- ) {
- // 右のカード
- }
- }
- }
- }
0 件のコメント:
コメントを投稿