Преобразование градиента CSS в Android-градиент (XML) - PullRequest
0 голосов
/ 24 июня 2018

Я хотел бы конвертировать CSS-градиент в файл xml-градиента (фигуры) для Android

например,

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:endColor, android:startColor, android:centerColor Как я могу определить этот% и различные цвета, представленные в CSS

есть ли какой-нибудь онлайн-инструмент, из которого я могу сгенерировать XML-файл, введя ввод CSS.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я бы порекомендовал посмотреть на этот связанный вопрос: Использование градиентаDrawable с более чем тремя установленными цветами

Используя объект 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);

Вопрос, который я связал, и официальная документация содержит более подробную информацию о том, как его использовать.

0 голосов
/ 27 июня 2018

Я использовал это в прошлом, чтобы нарисовать градиент в фоновом режиме


        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% эквивалент здесь и добавьте его с заданным RGB-кодом

например, # f99185 52% станет # f9918585, так как 52% в гексе составляет 85

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...