自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 2.2.1 组件化gradle语法

本节主要内容讲解Gradle语法和常用的基础配置。在项目工程创建一个配置文件config.gradle:ext { username = "Android" isModule = false androidId = [ compileSdkVersion: 29, buildToolsVersion: ...

2020-03-21 22:31:33 283

原创 2.1.2 Android动态换肤

首先代码基于上一节的内容来实现的,先看一下效果:看一下代码的目录结构:ISkinable:/** * @author Eason * @createtime 2020/3/19 * @desc 皮肤切换的接口,所有需要修改日/夜间模式的都要实现这个接口 */public interface ISkinable { //在接口中的变量都默认是public st...

2020-03-20 19:49:37 314

原创 2.1.1 手写动态换肤框架及高可扩展性换肤应用

我们先分析一下源码:1. 思考xml布局文件是如何parse解析成控件加载到根布局的用到的类有:分析点有2条: protected void onCreate(Bundle savedInstanceState) { //分析1: super.onCreate(savedInstanceState)最终会走到AppCompatActivity.onCrea...

2020-03-19 20:05:47 412 1

原创 1.3.2.3 Binder架构设计

本片文章要实现Binder通信:模拟QQ三方登录功能。客户端界面BinderDemo:QQ登录页面:登录成功则回到客户端页面,并带回登录用户信息,如下图:先贴出服务端程序代码,即BinderQQ,目录结构如下:AIDL文件:// ILoginInterface.aidlpackage com.source.binderqq;// Decl...

2020-03-18 19:33:56 141

原创 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 229 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 185

原创 1.1.3 AOP面向切面架构设计

实际是通过预编译的方式和运行时动态代理来实现程序的功能。方式一:动态代理方式二:预编译本节先讲解方式一定义:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性...

2020-03-17 14:40:21 117

原创 1.2.5Path、贝塞尔曲线与计算规则——仿QQ未读消息拖拽粘性效果的实现

参考文章:https://www.jianshu.com/p/ed2721286778先看下效果:代码如下,详细的步骤说明都在代码注释当中了:布局文件:<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:...

2020-03-06 17:15:45 188

原创 1.2.5Path、贝塞尔曲线与计算规则

这节主要讲解path的基本使用和如何绘制贝塞尔曲线Path概念:路径,可用于绘制直线、曲线构成的几何路径,还可以用于根据路径绘制文字常用API:移动、连线、闭合,添加图形等Path的基本使用/** * Path概念:路径,可用于绘制直线、曲线构成的几何路径,还可以用于根据路径绘制文字 * 常用API:移动、连线、闭合,添加图形等 */public class Path...

2020-03-06 16:21:43 261

原创 1.2.4Canvas-实际案例操作-旋转、扩散、聚合、水波纹效果

sss

2020-03-06 12:13:44 529

原创 1.2.3Canvas高阶使用技巧-变换,状态保存,离屏缓冲,粒子特效

本片文章讲解Canvas的高级使用,可以参考这篇文章:https://www.cnblogs.com/tianzhijiexian/p/4300988.htmlCanvas所提供的各种方法根据功能来看大致可以分为几类:第一是以drawXXX为主的绘制方法;第二是以clipXXX为主的裁剪方法;第三是以scale、skew、translate和rotate组成的Canvas变换方法;...

2020-03-05 19:03:21 275 1

原创 1.2.2Paint-混合模式Xfermode和颜色过滤ColorFilter

本片文章讲解Xfermode混合模式和ColorFilter颜色过滤注意本节代码先关闭硬件加速。Xfermode一、setXfermode(Xfermode xfermode)Xfermode国外有大神称之为过渡模式,这种翻译比较贴切但恐怕不易理解,大家也可以直接称之为图像混合模式,因为所谓的“过渡”其实就是图像混合的一种,这个方法跟我们上面讲到的setColorFilter蛮相似的...

2020-03-05 17:15:02 512 1

原创 1.2.1Paint画笔高级应用(Paint基本使用和5种Shader)

画笔Paint的基本使用 mPaint = new Paint();//初始化 mPaint.setColor(Color.RED);//设置颜色 mPaint.setARGB(255, 255, 255, 255); mPaint.setAlpha(200); mPaint.setAntiAlias(true); mPaint.setStyle(Paint.Style.STROK...

2020-03-04 19:36:03 377

原创 1.1.2UI绘制流程(测量, 布局, 绘制)——空

暂时先空着,后续完善

2020-03-04 17:45:21 128

原创 1.1.1UI绘制流程及原理——View的绘制流程

这一片文章主要讲View的绘制流程,具体指的是如何找的绘制入口。具体该如何绘制将在下一篇文章内讲解。基于API-23的源码讲解part2:View的绘制流程首先讲一下APP的启动过程:1. 点击桌面APP图标时,Launcher的startActivity()方法,通过Binder通信,调用system_server进程中AMS服务的startActivity方法,发起启动请求...

2020-03-04 17:39:43 163

原创 1.1.1UI绘制流程及原理——View是如何被添加到屏幕窗口上

本片文章讲解:UI绘制流程-源码讲解(基于API28的源码分析)文章大纲:part1:View是如何被添加到屏幕窗口上part2:View的绘制流程本片先讲part1:View是如何被添加到屏幕窗口上,part2:放在下一篇文章讲解。part1:View是如何被添加到屏幕窗口上首先,MainActivity中调用了setContentView(R.layout.act...

2020-03-04 13:22:40 743

MVC_MVP_MVVM_demos

MVC MVP MVVM

2016-12-02

LoginDemo_part1

MVC MVP MVVM

2016-12-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除