I've been trying to import shape xml to customized View. like this,
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid
android:color="#f0600000"/>
<stroke
android:width="10dp"
android:color="#00FF00"/>
<corners
android:radius="15dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp"
/>
and in my customized view code, I try to call it from my external resources
private void initTestView(){
Resources res = this.getResources();
mDrawable = (ShapeDrawable)res.getDrawable(R.drawable.recshape);
}
but if this ruuning on emulator, it called error because mDrawable should be "GradidentDrawable". but what doesn't make it sense is the upper xml code is only for "ShapeDrawable". I don't understand why it happen, does anybody know why it happen?
Strangely enough, <shape>
XML resources map to GradientDrawable
, whereas ShapeDrawable
objects are there for programmatic creation. In general, I'd recommend just casting to Drawable
, unless you need to make runtime modifications to the shape parameters.
Note that it may be more efficient to use Nine Patch drawables instead, because in general, raster has better performance than vector.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With