
Andoid架构
lovewaterman
这个作者很懒,什么都没留下…
展开
-
2.2.1 组件化gradle语法
本节主要内容讲解Gradle语法和常用的基础配置。在项目工程创建一个配置文件config.gradle:ext { username = "Android" isModule = false androidId = [ compileSdkVersion: 29, buildToolsVersion: ...原创 2020-03-21 22:31:33 · 318 阅读 · 0 评论 -
2.1.2 Android动态换肤
首先代码基于上一节的内容来实现的,先看一下效果:看一下代码的目录结构:ISkinable:/** * @author Eason * @createtime 2020/3/19 * @desc 皮肤切换的接口,所有需要修改日/夜间模式的都要实现这个接口 */public interface ISkinable { //在接口中的变量都默认是public st...原创 2020-03-20 19:49:37 · 366 阅读 · 0 评论 -
2.1.1 手写动态换肤框架及高可扩展性换肤应用
我们先分析一下源码:1. 思考xml布局文件是如何parse解析成控件加载到根布局的用到的类有:分析点有2条: protected void onCreate(Bundle savedInstanceState) { //分析1: super.onCreate(savedInstanceState)最终会走到AppCompatActivity.onCrea...原创 2020-03-19 20:05:47 · 484 阅读 · 1 评论 -
1.3.2.3 Binder架构设计
本片文章要实现Binder通信:模拟QQ三方登录功能。客户端界面BinderDemo:QQ登录页面:登录成功则回到客户端页面,并带回登录用户信息,如下图:先贴出服务端程序代码,即BinderQQ,目录结构如下:AIDL文件:// ILoginInterface.aidlpackage com.source.binderqq;// Decl...原创 2020-03-18 19:33:56 · 169 阅读 · 0 评论 -
1.3.1.1-3 Handler Message源码分析及手写实现
要想理解Handler源码,必须要知道下面这个些类:ActivityThread:/** * @author Eason * @createtime 2020/3/17 * @desc 程序的入口函数 */public final class ActivityThread { public static void main(String[] args)...原创 2020-03-17 19:18:24 · 269 阅读 · 1 评论 -
1.1.4 集中式登录架构设计
方式二:预编译,利用AspectJ本文先用AS 3.6.1 ,gradle 5.6.4-all试试看AspectJ的使用核心就是它的编译器,它就做了一件事,将AspectJ的代码在编译期插入目标程序当中,运行时跟在其它地方没什么两样,因此要使用它最关键的就是使用它的编译器去编译代码ajc。ajc会构建目标程序与AspectJ代码的联系,在编译期将AspectJ代码插入被切出的P...原创 2020-03-17 14:53:47 · 219 阅读 · 0 评论 -
1.1.3 AOP面向切面架构设计
实际是通过预编译的方式和运行时动态代理来实现程序的功能。方式一:动态代理方式二:预编译本节先讲解方式一定义:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性...原创 2020-03-17 14:40:21 · 144 阅读 · 0 评论