[关闭]
@act262 2017-03-26T13:50:44.000000Z 字数 1443 阅读 1117

Drawable体系

Android


drawable hierarchy

xml文件中的对应的各项Drawable

Resources加载资源,解析生成每个对应的Drawable

Drawable.java

  1. public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs,
  2. Theme theme) throws XmlPullParserException, IOException {
  3. final Drawable drawable;
  4. final String name = parser.getName();
  5. switch (name) {
  6. case "selector":
  7. drawable = new StateListDrawable();
  8. break;
  9. case "animated-selector":
  10. drawable = new AnimatedStateListDrawable();
  11. break;
  12. case "level-list":
  13. drawable = new LevelListDrawable();
  14. break;
  15. case "layer-list":
  16. drawable = new LayerDrawable();
  17. break;
  18. case "transition":
  19. drawable = new TransitionDrawable();
  20. break;
  21. case "ripple":
  22. drawable = new RippleDrawable();
  23. break;
  24. case "color":
  25. drawable = new ColorDrawable();
  26. break;
  27. case "shape":
  28. drawable = new GradientDrawable();
  29. break;
  30. case "vector":
  31. drawable = new VectorDrawable();
  32. break;
  33. case "animated-vector":
  34. drawable = new AnimatedVectorDrawable();
  35. break;
  36. case "scale":
  37. drawable = new ScaleDrawable();
  38. break;
  39. case "clip":
  40. drawable = new ClipDrawable();
  41. break;
  42. case "rotate":
  43. drawable = new RotateDrawable();
  44. break;
  45. case "animated-rotate":
  46. drawable = new AnimatedRotateDrawable();
  47. break;
  48. case "animation-list":
  49. drawable = new AnimationDrawable();
  50. break;
  51. case "inset":
  52. drawable = new InsetDrawable();
  53. break;
  54. case "bitmap":
  55. drawable = new BitmapDrawable();
  56. break;
  57. case "nine-patch":
  58. drawable = new NinePatchDrawable();
  59. break;
  60. default:
  61. throw new XmlPullParserException(parser.getPositionDescription() +
  62. ": invalid drawable tag " + name);
  63. }
  64. drawable.inflate(r, parser, attrs, theme);
  65. return drawable;
  66. }

在根据xml文件的跟节点解析到对应的Drawable后再由其具体的inflate来解析属性。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注