如何在Android中以编程方式创建形状

如何在Android中以编程方式创建形状,android,android-layout,android-ui,Android,Android Layout,Android Ui,我有以下myRec.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape> <corners android:radius="1dp" android:bottom

我有以下myRec.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <corners android:radius="1dp"
                android:bottomRightRadius="0dp"
                android:bottomLeftRadius="4dp"
                android:topLeftRadius="4dp"
                android:topRightRadius="0dp"/>
            <stroke 
                android:color="@color/my_button_border"
                android:width="1dp" />
            <solid android:color="@android:color/transparent" />
        </shape>
     </item>
</selector>

。。。。并希望以编程方式创建相同的形状,以便我可以在运行时自由更改颜色。我怎样才能做到呢?提前非常感谢

查看类和类的子类,例如:

  • 路径形状
  • 矩形
  • 弧形
  • 卵形
  • 圆形
ShapeDrawable在构造函数中接收一个形状,然后您有很多函数来修改该形状。此外,您还可以检索与ShapeDrawable相关的绘画,以便更改颜色等内容

另外,看看这个小例子:


在这里,您可以看到一些不同的形状,以及一些效果,如CornerPathEffect,

使用shapedrawable、gradientdrawable和


它看起来很有前途,但有很多代码只用于简单的颜色更改。假设我想使用这个xml并在运行时加载它,但只想在运行时更改颜色,rgb颜色的范围相当大,无法在xml文件中的任何位置定义。有什么想法吗?非常感谢Carlosi,我不知道我是否得到了您所需要的,但是关于颜色,您可以阅读此内容(搜索
),也可以转到,而且,如果您尽可能多地在xml中输入内容也可以,因为它更易于维护,而且更易于MVC