return new VectorDrawable();
…
}
}
//反射创建
private Drawable inflateFromClass(@NonNull String className) {
try {
Constructor<? extends Drawable> constructor;
synchronized (CONSTRUCTOR_MAP) {
constructor = CONSTRUCTOR_MAP.get(className);
if (constructor == null) {
final Class<? extends Drawable> clazz = mClassLoader.loadClass(className).asSubclass(Drawable.class);
constructor = clazz.getConstructor();
CONSTRUCTOR_MAP.put(className, constructor);
}
}
return constructor.newInstance();
} catch (NoSuchMethodException e) {
…
}
代码实现
由于创建shape
等需要设置各种属性来构建,比较符合build
设计模式,那我们首先封装build
模式的shapeBuilder
,这样做虽然代码比起直接使用apply{}
要多,但是可以让纯java
项目用起来很舒服&#