Я использую CaldroidFragment для моего приложения. Теперь я пытаюсь установить цвет фона конкретной даты с помощьюСоздайте фоновый ресурс с динамическим цветом во время выполнения в android
CaldroidFragment.setBackgroundResourceForDate(int backgroundRes,
java.util.Date date);
функция. Теперь, если я передаю ресурс из xml, например R.color.blue, как первый параметр, он работает, но мне нужно передать динамическое значение цвета в качестве фона во время выполнения. Я динамически генерирую цвет в пределах диапазона (что-то вроде интерполяции). Теперь я пытаюсь использовать функцию getResources(). GetColor() для преобразования моего цвета в ресурс.
private static final int COLOR_END = Color.parseColor("#BD4141");
private static final int COLOR_START = Color.parseColor("#69A864");
mCaldroidFragment.setBackgroundResourceForDate(
getResources().getColor(getInterPolateColor(2)),
new Date());
private int getInterPolateColor(int value) {
return Utility.interpolateColor(COLOR_START, COLOR_END, value/(float) 15);
}
public static int interpolateColor(final int startColor, final int endColor, final float proportion) {
final float[] hsva = new float[3];
final float[] hsvb = new float[3];
Color.colorToHSV(startColor, hsva);
Color.colorToHSV(endColor, hsvb);
for (int i = 0; i < 3; i++) {
hsvb[i] = interpolate(hsva[i], hsvb[i], proportion);
}
return Color.HSVToColor(hsvb);
}
private static float interpolate(final float a, final float b, final float proportion) {
return (a + ((b - a) * proportion));
}
Но он показывает следующее сообщение об ошибке
android.content.res.Resources$NotFoundException: Resource ID #0xff79ab60
at android.content.res.Resources.getValue(Resources.java:1123)
at android.content.res.Resources.getColor(Resources.java:805)
Теперь можно создать фоновый ресурс от значения цвета, который будет действовать как R.color.xxx, или любое решение, чтобы решить мою проблему.
setBackgroundResourceForDate() не может восстановить ошибку в моем случае –