Colorpicker改变9个单独的drawables?

时间:2012-01-19 07:16:59

标签: android colors background drawable color-picker

我有9个ImageViews,当onClick每次打开一个颜色选择器时,我希望颜色选择器改变一个drawable的颜色,该颜色与当时使用的onclick相同的视图相关。我不确定如何进行此操作?我在网上搜索过例子,但似乎无法找到任何相关内容。

1 个答案:

答案 0 :(得分:0)

如果您要从中选择一组固定的颜色,则可以使用level list drawable。在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的drawable,并通过调用图片视图的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
}

有人可能希望在此过程中包含一些检查空标记,未查看视图,用户取消颜色选择等等。