摘要:
目标 1、启动时能够自动加载皮肤包 2、能动态进行皮肤切换 3、能支持在线下载皮肤 思路 利用Android App加载资源的流程,来加载第三方皮肤包。 皮肤包加载流程 1、C++层读取资源文件(类似于一个数据库表,有属性名、id和对应资源/路径的对应关系) private static nativ 阅读全文
摘要:
你是不是也遇到过设置width = "match_parent"无效,然后设置dialog的window也无法全屏的情况? 你是不是经常在自定义Dialog的时候遇到该情况?例如你的Dialog继承于AppcompatDialog。 那么此时,你试添加如下几个属性,是否能解决你的问题了? <!--是 阅读全文
摘要:
setState为什么要设计成异步? 1、用于提升性能 2、多个setState被放到队列中,最终合并成一个setState,再来渲染DOM setState如何获取异步结果? 1、this.setState(更新的state对象,回调函数) 2、在componentDidUpdate()回调函数中 阅读全文
摘要:
引言 上文CoordinateLayout的实现原理描述了CoordinateLayout如何实现Behavoir的绑定和事件转发。CoordinateLayout除了该能力外,还支持子View之间相互依赖,当A控件发生改变时能立即通知到B控件的Behavoir。这只需要我们在B的Behavior中 阅读全文
摘要:
引言 在android中为我们提供了NestedScrollingChild接口和NestedScrollingParent接口,我们只需要实现这两个接口,即可完成解决嵌套滑动冲突。此外,安卓还提供了NestedScrollView,它默认提供了许多解决嵌套滑动冲突的实现,本文将从零描述Nested 阅读全文
摘要:
引言 CoordinateLayout的主要用法: 1、作为顶层应用的装饰或者chrome布局 2、作为一个能响应特定的一个或多个子视图交互的容器 也就是说,CoordinateLayout本身不具备布局的能力,它只是作为一个将Behavior和子View绑定的容器,将收到的事件几乎原封不动的分发给 阅读全文
摘要:
本文主要介绍了ViewPager和ViewPager2的懒加载方法。 阅读全文
摘要:
引言 本文将描述RxJava的设计原理,为了简化,本文并非完全参照RxJava的源码,也不讨论使用RxJava的作用,而从实现角度分析RxJava。本文不讨论RxJava的设计来源,具体请参考“函数式编程”的无副作用。 原理 RxJava使用简单示例 我们来看一个RxJava的一个简单使用示例: O 阅读全文
摘要:
引言 本节主要描述Kotlin的高阶函数,以及also,run,let,apply等写法和其原理 声明高阶函数 声明高阶函数就像声明一个变量一样,没有具体的实现,当然它也可以被作为另一个函数的形参,传递给其他函数使用 var m1:() -> Unit // 定义了一个无返回值。无参数的函数 var 阅读全文
摘要:
引言 在Kotlin中,我可以声明普通类、数据类、静态类,它也有抽象类和接口,其中abstract关键字只能作用在普通类。 类和对象 普通类 Kotlin中的普通类通过class关键字定义,这种类默认都是final类型的,无法被继承。如果希望被继承,需要在前面增加open关键字 class Pers 阅读全文