Если у вас есть фиксированный набор цветов, из которых вы хотите выбрать, вы можете использовать список уровней для рисования .В XML это может выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/color_0"
android:maxLevel="0" />
<item
android:drawable="@drawable/color_1"
android:maxLevel="1" />
. . .
</level-list>
Затем вы можете сделать его нарисованным для ImageView и выбрать, какой цвет отображать, вызвав метод setImageLevel()
представления изображения..
РЕДАКТИРОВАТЬ
Вы запросили пример выполнения этого программно.Допустим, у вас есть следующий макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="0"
android:onClick="changeColor"
android:text="Change color" />
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:tag="color_0" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="1"
android:onClick="changeColor"
android:text="Change color" />
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:tag="color_1" />
</LinearLayout>
<!-- etc. -->
</LinearLayout>
Затем в своей деятельности определите свою функцию-обработчик примерно так:
public void changeColor(View view) {
String tag = "color_" + view.getTag();
View target = findViewById(android.R.id.content).findViewWithTag(tag);
int color = getColorFromUser();
target.setBackgroundColor(color); // or whatever you want to do
}
Можно включить в этот процесс некоторые проверкидля нулевых тегов, необнаруженных просмотров, отмены пользователем выбора цвета и т. д.