Создание формы с помощью drawable

Когда вы создаете проект приложения для Android, существует файл предустановок цвета фона, например:

<shape xmlns:android = "http://schemas.android.com/apk/res/android"
android:shape = "rectangle" >
   <gradient
      android:startColor = "#ffffff"
      android:centerColor = "#00ffff"
      android:endColor = "#000000"
      android:type = "linear"
      android:angle = "90"/>

Используя строковое значение android: startColor, android: centerColor, android: endColor, android: type, android: angle, как мы можем сделать этот градиент программно?

см. GradientDrawable

pskink 10.06.2018 09:23

Есть градиентные направляющие, но они не основаны на строковых значениях

Mium 10.06.2018 09:24

какие строковые значения? что ты имеешь в виду? вы проверяли документацию GradientDrawable?

pskink 10.06.2018 09:24

как "# 000000" # не 0f-a0-c1 ..

Mium 10.06.2018 09:25

Это не струны. Это цвета. Вы можете использовать цветовые ресурсы для их хранения.

Hyun I Kim 10.06.2018 09:26

вы проверяли документацию GradientDrawable? см. раздел "Public constructors"

pskink 10.06.2018 09:26

О, я думаю, что смогу это решить. Спасибо

Mium 10.06.2018 09:33
0
7
37
1

Ответы 1

Постарайтесь вдохновить этот код, я думаю, вы уловите основную идею:

GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{startColor, endColor});
drawable.setStroke(strokeIntLength, strokeColor);

GradientDrawable drawableSelected = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{startColorDark, endColorDark});
drawableSelected.setStroke(strokeIntLength, strokeColorDark);

StateListDrawable states = new StateListDrawable();
states.addState(new int[]{android.R.attr.state_selected, android.R.attr.state_pressed}, drawable);
states.addState(new int[]{android.R.attr.state_pressed}, drawableSelected);
states.addState(new int[]{android.R.attr.state_selected}, drawableSelected);
states.addState(new int[]{android.R.attr.state_checked}, drawableSelected);
states.addState(new int[]{}, drawable);

button.setBackgroundDrawable(states);

Другие вопросы по теме