- CompoundButton 源码分析
- LinearLayout 源码分析
- SearchView 源码解析
- LruCache 源码解析
- ViewDragHelper 源码解析
- BottomSheets 源码解析
- Media Player 源码分析
- NavigationView 源码解析
- Service 源码解析
- Binder 源码分析
- Android 应用 Preference 相关及源码浅析 SharePreferences 篇
- ScrollView 源码解析
- Handler 源码解析
- NestedScrollView 源码解析
- SQLiteOpenHelper/SQLiteDatabase/Cursor 源码解析
- Bundle 源码解析
- LocalBroadcastManager 源码解析
- Toast 源码解析
- TextInputLayout
- LayoutInflater 和 LayoutInflaterCompat 源码解析
- TextView 源码解析
- NestedScrolling 事件机制源码解析
- ViewGroup 源码解析
- StaticLayout 源码分析
- AtomicFile 源码解析
- AtomicFile 源码解析
- Spannable 源码分析
- Notification 之 Android 5.0 实现原理
- CoordinatorLayout 源码分析
- Scroller 源码解析
- SwipeRefreshLayout 源码分析
- FloatingActionButton 源码解析
- AsyncTask 源码分析
- TabLayout 源码解析
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2. 展望未来
在 v7 包的 SearchView 里,有一个声明并初始化了的变量,但并没有用到过:
private final AppCompatDrawableManager mDrawableManager; //在构造方法里初始化 mDrawableManager = AppCompatDrawableManager.get();
或许后续版本会用到吧! 抱着好奇的心去看了 AppCompatDrawableManager 源码,但并没有注释说明这个类是干什么用的,看名字只知道是管理 Drawable 的。 既然这样,那就来看下 AppCompatDrawableManager 能干些什么吧。
一步一步来,先看看它初始化的时候干了些什么,查看 get() 方法:
public static AppCompatDrawableManager get() {
//使用了懒汉式
if (INSTANCE == null) {
INSTANCE = new AppCompatDrawableManager();
installDefaultInflateDelegates(INSTANCE);
}
return INSTANCE;
}
private static void installDefaultInflateDelegates(@NonNull AppCompatDrawableManager manager) {
final int sdk = Build.VERSION.SDK_INT;
// 只在 Android 5.0 以下的系统
if (sdk < 21) {
// 在需要的时候使用 VectorDrawableCompat 进行自动处理
manager.addDelegate("vector", new VdcInflateDelegate());
if (sdk >= 11) {
// AnimatedVectorDrawableCompat 只能在 API v11+ 使用
manager.addDelegate("animated-vector", new AvdcInflateDelegate());
}
}
}
从这里,我们可以看出跟 Vector (矢量) 有关。
- VectorDrawable 能创建一个基于 xml 描述的矢量图。
- AnimatedVectorDrawable 使用
ObjectAnimator和AnimatorSet为 VectorDrawable 创建动画。
然后我粗略的看了方法名,有几个关键词: Tint 着色, Cache 缓存,有兴趣的同学可以搜下相关资料,这里就不再深入了。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论