Compose LayoutModifier 原理解析

LayoutModifier 作用是修改 Composable 的尺寸和位置偏移 LayoutModifier 只是一个接口,在实际开发中我们会使用 Modifier.layout() 自定义测量和位置偏移处理,先大致了解一下 layout 源码 1 2 3 4 5 6 7 8 9 10 11 12

Compose 动画终章进阶篇

AnimatedVisibility 对单个控件做显示和隐藏的动画效果 在上一个章节我们学习了 Transition 动画,这一节学习它更加上层的 Api,但其实内部本质上使用的也是 Transition, 先看一下 AnimatedVisibility 的源码,

Compose转场动画之 Transition

前言 在上两篇文章中,我们了解了 Compose 中动画的各种 animationSpec 的使用和 anim.xxx 的方法参数使用说明,这节开始学习 Transition 的使用 Transition 可对多个属性值进行动画 我们先通过一个例子来

Compose之衰减型动画

前言 回顾上篇文章我们学习了 compose 中的 animateTo 、 snapTo 如何使用,和 animationSpec 的参数配置等等,这篇文章,我们学习 Animatable 中另外一个方法 animateDecay animateDecay 衰减型动画, 它只有一个实现类 DecayAnimationSpecImpl 有了

Compose 动画基础篇之各种 Spec

从这一节开始,我们开始讲解 compose 最基础的动画 Api 使用,最基础也是最重要的部分,掌握这些基础的配置,会对后面的高阶动画的使用配置更加的得心应手 状态转

线程池参数详解

这里直接拿 OKHttp 源码中的线程池举例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public synchronized ExecutorService executorService() {
    if (executorService == null) {
      executorService = new ThreadPoolExecutor(
          									0, // 核心线程
                            Integer.MAX_VALUE,  // 最大线程
                            60,					// 空闲线程闲置时间
                            TimeUnit.SECONDS,	// 闲置时间单位
                            new SynchronousQueue<Runnable>(), // 线程等待队列
                            Util.threadFactory("OkHttp Dispatcher", false) // 线程创建工厂
      );
    }
    return executorService;
}

HOOK 插件式一键换肤流程分析

换肤流程

首先实现插件式换肤需要知道以下几个流程:

  • 在默认情况下通过 setContentView 设置的资源布局(XML)是如何加载到界面上的
  • 在 Android 5.0 之前的版本和 5.0 之后的版本按钮是不一样的样式,系统是如何做到换肤的
  • 自定义换肤框架,如何知道我们自己的 APK 哪些控件是需要换肤的
  • 如何切换 【皮肤插件 / 默认】的肤色
  • 如何加载资源包插件
  • 重启 APP、进入其他 Activty 如何换肤