DEV Community

myougaTheAxo
myougaTheAxo

Posted on

グラデーション完全ガイド — linearGradient/radialGradient/sweepGradient/背景

この記事で学べること

グラデーション(linearGradient、radialGradient、sweepGradient、テキストグラデーション)を解説します。


Brush.linearGradient

@Composable
fun GradientExamples() {
    Column(Modifier.padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp)) {
        // 水平グラデーション
        Box(
            Modifier
                .fillMaxWidth()
                .height(80.dp)
                .background(
                    Brush.horizontalGradient(listOf(Color(0xFF6200EA), Color(0xFF03DAC5))),
                    RoundedCornerShape(12.dp)
                )
        )

        // 斜めグラデーション
        Box(
            Modifier
                .fillMaxWidth()
                .height(80.dp)
                .background(
                    Brush.linearGradient(
                        colors = listOf(Color(0xFFFF5722), Color(0xFFFFC107), Color(0xFF4CAF50)),
                        start = Offset.Zero,
                        end = Offset(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY)
                    ),
                    RoundedCornerShape(12.dp)
                )
        )

        // 放射状グラデーション
        Box(
            Modifier
                .size(150.dp)
                .background(
                    Brush.radialGradient(
                        colors = listOf(Color.White, Color(0xFF2196F3)),
                        radius = 300f
                    ),
                    CircleShape
                )
        )

        // 扇形グラデーション
        Box(
            Modifier
                .size(150.dp)
                .background(
                    Brush.sweepGradient(
                        listOf(Color.Red, Color.Yellow, Color.Green, Color.Cyan, Color.Blue, Color.Red)
                    ),
                    CircleShape
                )
        )
    }
}
Enter fullscreen mode Exit fullscreen mode

グラデーションボタン

@Composable
fun GradientButton(text: String, onClick: () -> Unit) {
    val gradient = Brush.horizontalGradient(
        listOf(Color(0xFF6200EA), Color(0xFFBB86FC))
    )

    Box(
        modifier = Modifier
            .fillMaxWidth()
            .clip(RoundedCornerShape(12.dp))
            .background(gradient)
            .clickable(onClick = onClick)
            .padding(vertical = 14.dp),
        contentAlignment = Alignment.Center
    ) {
        Text(text, color = Color.White, fontWeight = FontWeight.Bold, fontSize = 16.sp)
    }
}

// グラデーションテキスト
@Composable
fun GradientText(text: String) {
    Text(
        text = text,
        style = TextStyle(
            fontSize = 32.sp,
            fontWeight = FontWeight.Bold,
            brush = Brush.linearGradient(
                listOf(Color(0xFFFF5722), Color(0xFF9C27B0))
            )
        )
    )
}
Enter fullscreen mode Exit fullscreen mode

まとめ

API 用途
Brush.linearGradient 線形グラデーション
Brush.radialGradient 放射状グラデーション
Brush.sweepGradient 扇形グラデーション
Brush.horizontalGradient 水平グラデーション
  • Brushでグラデーション背景/枠線/テキスト
  • linearGradientで方向指定のグラデーション
  • radialGradientで中心から外周へ
  • テキストにもbrushパラメータで適用可能

8種類のAndroidアプリテンプレート(カスタムUI対応)を公開しています。

テンプレート一覧Gumroad

関連記事:


I publish 8 Android app templates on Gumroad.

Browse templatesGumroad

Top comments (0)