Android进阶
文章平均质量分 59
lovewaterman
这个作者很懒,什么都没留下…
展开
-
2.2.1 组件化gradle语法
本节主要内容讲解Gradle语法和常用的基础配置。在项目工程创建一个配置文件config.gradle:ext { username = "Android" isModule = false androidId = [ compileSdkVersion: 29, buildToolsVersion: ...原创 2020-03-21 22:31:33 · 283 阅读 · 0 评论 -
2.1.2 Android动态换肤
首先代码基于上一节的内容来实现的,先看一下效果:看一下代码的目录结构:ISkinable:/** * @author Eason * @createtime 2020/3/19 * @desc 皮肤切换的接口,所有需要修改日/夜间模式的都要实现这个接口 */public interface ISkinable { //在接口中的变量都默认是public st...原创 2020-03-20 19:49:37 · 314 阅读 · 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 · 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 阅读 · 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 · 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 阅读 · 0 评论 -
1.1.3 AOP面向切面架构设计
实际是通过预编译的方式和运行时动态代理来实现程序的功能。方式一:动态代理方式二:预编译本节先讲解方式一定义:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性...原创 2020-03-17 14:40:21 · 117 阅读 · 0 评论 -
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 阅读 · 0 评论 -
1.2.5Path、贝塞尔曲线与计算规则
这节主要讲解path的基本使用和如何绘制贝塞尔曲线Path概念:路径,可用于绘制直线、曲线构成的几何路径,还可以用于根据路径绘制文字常用API:移动、连线、闭合,添加图形等Path的基本使用/** * Path概念:路径,可用于绘制直线、曲线构成的几何路径,还可以用于根据路径绘制文字 * 常用API:移动、连线、闭合,添加图形等 */public class Path...原创 2020-03-06 16:21:43 · 261 阅读 · 0 评论 -
1.2.4Canvas-实际案例操作-旋转、扩散、聚合、水波纹效果
sss原创 2020-03-06 12:13:44 · 529 阅读 · 0 评论 -
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 阅读 · 0 评论 -
1.1.2UI绘制流程(测量, 布局, 绘制)——空
暂时先空着,后续完善原创 2020-03-04 17:45:21 · 128 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Android中MVC、MVP、MVVM模式的运用 (续)
这篇文章主要是来展示实际开发之中自己写的Code。Demo是用一个简单的登陆来演示的。效果图如下:LoginDemo包结构:MainActivity.Javapublic class MainActivity extends AppCompatActivity { private EditText etUserName, etPwd; private ProgressDialog d原创 2016-12-02 14:40:55 · 448 阅读 · 0 评论 -
RxAndroid入门-传智播客
01_监听回调RxJava在Android中的应用主要内容:RxJava是什么,能解决什么问题对比其他技术理解为什么要选择RxJavaRxJava相关APIRxJava在Android中的典型使用场景RxJava在Android中与其他框架的融合RxJava是什么,能解决什么问题github介绍: a library for composing asynchronous and e原创 2016-12-21 18:18:40 · 474 阅读 · 0 评论 -
svg矢量图实现android多形状图形框架-动脑学院
位图:可以看到像素点 png jpg… 矢量图:算法生成的 依据路径 SVG:SVG 是使用 XML 来描述二维图形和绘图程序的语言。矩形:<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg原创 2016-12-22 20:10:32 · 1001 阅读 · 0 评论 -
深入剖析Android内存泄露原理
Android 内存泄露分析1. 什么是内存泄露OOM:outOfMemery dvm只有10M,如加载大图片,堆内存空间。2. JVM垃圾回收机制和算法3. 常见的内存泄露场景非静态内部类的错误使用 内部类对象对外部类对象有一个隐式的强引用 解决方案:不要这样使用线程,可以使用线程池,或在在Activity结束的时候,把Thread的任务给结束掉。Java中的四种引用类型强引用 Us原创 2016-12-26 17:53:46 · 1175 阅读 · 0 评论 -
从ListView到RecyclerView
Android5.0 之后推出的。集合了ListView和GridView的功能,还自带了瀑布流效果。Menu:RecyclerView:布局填充器LayoutManager适配器AdaptermRecyclerView.setLayoutManager(LayoutManager layout)LayoutManager LinearLayoutManagerStaggeredGrid原创 2016-12-28 17:29:52 · 327 阅读 · 0 评论 -
性能优化之内存泄露
动脑学院 Ricky老师 2017年11月27日录制什么是内存泄露? 内存不在GC的掌控之内了。了解几个问题 垃圾回收机制 GC 某对象不再有任何的引用才会进行回收。GC回收机制的原理 GC Root,可以作为GC Root引用点的是 JavaStack中的引用对象方法区中静态引用指向的对象方法区中常量引用指向的对象Native方法中JNI引用的对象Thread–活着的线程原创 2016-12-30 10:42:58 · 420 阅读 · 0 评论 -
Android动态换肤开源库Colorful发布
文章转载:http://www.2cto.com/kf/201509/442034.html介绍:最近本人需要用到夜间模式,但是经过一番搜索似乎并没有看到好的开源实现,看到有一个类似的库MultipleTheme,但是需要自定义所有要实现换肤功能的View,感觉比较麻烦。而Prism又不支持Theme,且目前已经不再更新,因此这个方案也不能用。当发现现有的解决方案不能很好的解决问题时,往往只能自己实转载 2017-01-16 11:10:35 · 384 阅读 · 0 评论 -
Android中MVC、MVP、MVVM模式的运用
浅谈MVC MVP MVVM模式 技能设计模式框架MVC MVX(MVP、MVVM)1、开篇案例用户登录案例,如何拆分代码使结构更加的合理。 2、MVC项目改造分析、思路登陆逻辑分析[流程] 用户登陆界面展示用户输入按钮点击判断用户输入合法性显示滚动条一系列耗时操作隐藏滚动条提示用户的信息Toast代码实现判断用户输入合法性(是用了一个业务Bean来实现的publ原创 2016-12-02 10:09:46 · 786 阅读 · 0 评论