将CSS渐变转换为Android渐变(XML)

时间:2018-06-23 21:28:46

标签: android css gradient

我想将CSS渐变转换为android xml渐变(形状)文件

例如

background-image: linear-gradient(to right, #ff8177 0%, #ff867a 0%, #ff8c7f 21%, #f99185 52%, #cf556c 78%, #b12a5b 100%);

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:angle="0"
        android:endColor="#b12a5b"
        android:startColor="#ff867a"
        android:type="linear" />
</shape>

我对CSS不太了解。我只知道android,并且只有三个颜色参数android:endColorandroid:startColorandroid:centerColor,我该如何定义%和css中显示的各种颜色

是否有任何在线工具,我可以在其中通过提供CSS输入来生成xml文件。

2 个答案:

答案 0 :(得分:0)

我以前曾用它在背景中绘制渐变


        View    layout  =   findViewById(R.id.mainLayout);

        GradientDrawable    gradientDrawable    =   new GradientDrawable(
                GradientDrawable.Orientation.TOP_BOTTOM,
                new int[]   {0xff45c0cc,0xff0054a6}
        );
        gradientDrawable.setCornerRadius(0f);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            layout.setBackground(gradientDrawable);
        }

我从给定的css中了解到的是#f99185-52%表示52%的透明度,在我给定的代码示例int []中有一个十六进制代码,您可以使用6位GRBcode并附加52%的不透明度等价于here并附加给定的RGBcode

例如 #f99185 52%将变为#f9918585,因为52%的十六进制为85

答案 1 :(得分:0)

我建议您查看以下相关问题:Using a gradientDrawable with more than three colors set

使用LinearGradient对象,您可以使用多种颜色和百分比刻度来定义渐变。

例如(从我链接的问题中借来的):

LinearGradient linearGradient = new LinearGradient(0, 0, width, height,
        new int[] { 
            0xFF1e5799, 
            0xFF207cca, 
            0xFF2989d8, 
            0xFF207cca }, //substitute the correct colors for these
        new float[] {
            0, 0.40f, 0.60f, 1 },
        Shader.TileMode.REPEAT);

我链接的问题和official documentation包含有关如何使用它的更多详细信息。