Когда вы создаете проект приложения для 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?
как "# 000000" # не 0f-a0-c1 ..
Это не струны. Это цвета. Вы можете использовать цветовые ресурсы для их хранения.
вы проверяли документацию GradientDrawable? см. раздел "Public constructors"
О, я думаю, что смогу это решить. Спасибо
Постарайтесь вдохновить этот код, я думаю, вы уловите основную идею:
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);
см.
GradientDrawable