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 可对多个属性值进行动画 在 Android 原生中, 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 如何换肤

Gradle 自定义 plugin 以及项目优化实践

Gradle 是什么?

  • 它是一款强大的构建工具,而不是语⾔
  • 它使用了 Groovy 这个语言,创造了一种 DSL,但它本身不是语⾔

groovy 是什么

Groovy 是一种动态语言,它和 Java 类似(算是 Java 的升级版,但是又具备脚本语言的特点),都在 Java 虚拟机中运行。当运行 Groovy 脚本时它会先被编译成 Java 类字节码,然后通过 JVM 虚拟机执行这个 Java 字节码类

Gradle 的 Project 和 Tasks

每次构建(build)至少由一个 project 构成,一个 project 由一到多个 task 构成。每个 task 代表了构建过程当中的一个原子性操作,比如编译,打包,生成javadoc,发布等等这些操作

Gradle 的构建流程