Вы можете построить LayerDrawable
по коду вместо xml.
Просто новый LayerDrawable
и вызов его метода addLayer
для добавления Drawable
s, и все свойства, которые вы устанавливаете из xml, также могут быть установлены в коде, такие как setLayerInset
методы.
Например, определите чертеж:
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="-12">
<shape
android:shape="rectangle">
<solid
android:color="?android:colorBackground"/>
</shape>
</rotate>
Получить отрисовку из кода:
Drawable myDrawable;
Resources res = getResources();
try {
myDrawable = Drawable.createFromXml(res, res.getXml(R.xml.my_drawable));
} catch (Exception ex) {
Log.e("Error", "Exception loading drawable");
}
Создайте LayerDrawable
и добавьте в него слой:
LayerDrawable layerDrawable = new LayerDrawable();
layerDrawable.addLayer(userDrawable); // userDrawable is from the user upload image
layerDrawable.addLayer(myDrawable);