如何动态改变椭圆形的颜色

时间:2015-05-13 14:29:03

标签: android background shape

需要在纯色椭圆的中心放置图标。它还需要允许动态改变椭圆的颜色。

可以通过JérémieLaval在椭圆like的顶部/中心显示图标:

<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="#42000000" />
    <padding android:left="8dp" android:top="8dp"
         android:right="8dp" android:bottom="8dp" />
</shape>

<FrameLayout
   android:layout_width="80dp"
   android:layout_height="80dp"
   android:layout_gravity="center"
   android:background="@drawable/aitemring">
   <ImageView
   android:src="@drawable/coffee"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:scaleType="center" />
</FrameLayout>

如何在代码中更改椭圆形状的颜色的问题(kets说得到新颜色#ff0000,或任何非预定义的颜色)?

2 个答案:

答案 0 :(得分:0)

您是否考虑过定义两个drawable并在需要更改颜色时交换它们?

您可以执行图层列表来创建形状并添加图标。

答案 1 :(得分:0)

根据大卫的提示,这有效:

<?xml version="1.0" encoding="UTF-8" ?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="#42000000" />
    </shape>


<ImageView
    android:id="+id/theIcon"
    android:src="@drawable/coffee"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="center"
    android:background="@drawable/aitemring" />

GradientDrawable shapeDrawable = (GradientDrawable)theIcon.getBackground();
    shapeDrawable.setColor(0xffff0000);