@act262
2017-03-26T13:50:44.000000Z
字数 1443
阅读 1376
Android
xml文件中的对应的各项Drawable
从Resources加载资源,解析生成每个对应的Drawable
Drawable.java
public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs,Theme theme) throws XmlPullParserException, IOException {final Drawable drawable;final String name = parser.getName();switch (name) {case "selector":drawable = new StateListDrawable();break;case "animated-selector":drawable = new AnimatedStateListDrawable();break;case "level-list":drawable = new LevelListDrawable();break;case "layer-list":drawable = new LayerDrawable();break;case "transition":drawable = new TransitionDrawable();break;case "ripple":drawable = new RippleDrawable();break;case "color":drawable = new ColorDrawable();break;case "shape":drawable = new GradientDrawable();break;case "vector":drawable = new VectorDrawable();break;case "animated-vector":drawable = new AnimatedVectorDrawable();break;case "scale":drawable = new ScaleDrawable();break;case "clip":drawable = new ClipDrawable();break;case "rotate":drawable = new RotateDrawable();break;case "animated-rotate":drawable = new AnimatedRotateDrawable();break;case "animation-list":drawable = new AnimationDrawable();break;case "inset":drawable = new InsetDrawable();break;case "bitmap":drawable = new BitmapDrawable();break;case "nine-patch":drawable = new NinePatchDrawable();break;default:throw new XmlPullParserException(parser.getPositionDescription() +": invalid drawable tag " + name);}drawable.inflate(r, parser, attrs, theme);return drawable;}
在根据xml文件的跟节点解析到对应的Drawable后再由其具体的inflate来解析属性。