返回介绍

2. 展望未来

发布于 2024-12-23 21:07:35 字数 1784 浏览 0 评论 0 收藏 0

在 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 (矢量) 有关。

然后我粗略的看了方法名,有几个关键词: Tint 着色, Cache 缓存,有兴趣的同学可以搜下相关资料,这里就不再深入了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文