android-高级
文章平均质量分 91
Alex_MaHao
这个作者很懒,什么都没留下…
展开
-
Activity 启动流程
一下分析基于从Launcher点击图标打开一个app进行分析对于该流程,总共分为三个进程,分别是Launcher进程,AMS进程和app进程,以下会根据该进程流程进行分析。Launcher进程,用户点击LauncherActivity该页面是桌面的页面,其对应的图标回调如下: @Override protected void onListItemClick(ListView l,...原创 2020-02-08 16:54:44 · 403 阅读 · 0 评论 -
Span使用之系统提供的Span基本样式
Span的应用在Android中,使用TextView显示文本,但往往有一些特殊的文本样式,比如一段文本,中间某几个字颜色不同或者中间某几个字能点击等等,这些样式如果没有不同,就编写一个新的TextView,那么一段文字将使用很多的TextView去显示,那么,有没有可能使用一个TextView显示所有文字,而基于文字定义不同的样式呢。这就是Span的作用。Span使用三部曲Span是android原创 2017-04-18 22:28:18 · 5282 阅读 · 0 评论 -
Transition的相关分析与使用
TransitionTransition:意“过渡”,从字面意思上理解,就是从一种状态到另一种状态的切换过程,同样,对于Android中,其实现了UI状态的切换,其中包含了同一个Activity不同UI视图的变换,同时也能够实现不同Activity的切换动画,最出名的可能就是共享元素动画了。官网提供的原理如下 从流程图上可以看出,有关键类如下:Scene: 视图状态,定义开始和结束的状态。Tr原创 2017-07-27 21:46:48 · 1324 阅读 · 0 评论 -
Android 嵌套滑动——NestedScrolling完全解析
基本的事件分发流程对于一次从父布局到自布局的触摸事件流程分发,关键便是在三个方法上的流程处理dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()。由于和NestScroll相关,所以不细致分析到View层面上的事件分发。对于事件分发的触摸大致可分为按下(DOWN),移动(MOVE),抬起(UP)。按照这三个事件,流程分析如下:按下(原创 2017-10-25 17:21:33 · 2133 阅读 · 0 评论 -
Android Behavior之相关解析
如果不了解Android嵌套滚动,最好看一下我之前的文章 Android 嵌套滑动——NestedScrolling完全解析,当然不了解对本篇文章的阅读也不会有太大的阻塞。第一个简单的自定义Behavior在Android 5.0 的时候推出了CoordinatorLayout控件,该控件从翻译上来说称之为 协调性布局,我的理解是,对于他下面的子控件的布局,大小,滚动等等一系列的东西,由每一个子控原创 2017-10-25 17:28:40 · 3089 阅读 · 0 评论 -
Java中Lambda表达式和Groovy闭包的相关解析
Lambda名词释义Lambda表达式表示匿名函数,和匿名类对比,及不需要声明函数的方法名和返回值,用表达式的形式完成函数的参数和相关逻辑。Lambda表达式应用于Groovy和Kotlin中,作为实现函数式编程的关键(函数式编程是指一个函数能够作为另一个函数的入参)。而在JDK8中支持了对Lambda表达式的应用。基本使用java中对lambda表达式的声明不像Kotlin等原创 2018-01-24 22:00:43 · 5214 阅读 · 0 评论 -
MultiDex加载流程分析
MultiDex加载流程分析 只介绍主要流程,multiDex源码已经上传到https://github.com/AlexSmille/google-android-support-source-analyze,包含了BaseDexClassloader等一些android源码。1.判断当前是否需要动态加载类在5.0以上,会自动加载一个apk中所有的classesX.dex,...原创 2018-07-05 16:51:58 · 1310 阅读 · 0 评论 -
support-v7是如何将TextView替换为AppCompatTextView的?
日常在使用AppCompatActivity的时候,发现对于在xml中编写的布局最终都会变成Compat...等控件,那么是如何实现这种全局的控件替换的呢,这是此次分析的如要问题。AppCompatActivity的setContentView()首先,我们猜想,会不会是AppCompatActivity重写了setContentView()做了一层封装呢,基于这种猜想,看一下它里面的实现方法...原创 2018-11-28 16:30:22 · 1958 阅读 · 0 评论 -
SimpleTouch:以稍微(zui)简单的方式解决Android事件分发流程
该库已经开源到github,地址https://github.com/AlexMahao/SimpleTouch目标一个用于监听android事件分发流程的库,两行代码即可在运行时期监听事件的分发流程。在编写一些复杂的布局时,常常由于事件分发到底是哪个view处理产生困扰,做法通常需要经过以下步骤:自定义一个View,重写disaptchTouchEvent等方法。添加log...原创 2018-12-03 10:22:51 · 412 阅读 · 1 评论 -
App Crash崩溃捕获
App Crash崩溃捕获参考 https://github.com/android-notes/Cockroach原理简述利用Thread.setDefaultUncaughtExceptionHandler()设置崩溃捕获。利用Handler & Looper构造新的消息队列,重启应用。Looper循环Handler机制就是在一个死循环内部不断取走阻塞队列头部的Me...原创 2019-04-16 10:55:40 · 626 阅读 · 0 评论 -
ARouter源码分析(一)—— 路由跳转分析
相关工程githubhttps://github.com/AlexMahao/ARouter逻辑分析Arouter的路由跳转整体可分为三个步骤:编译时期利用Processor生成路由清单文件。运行时期加载路由清单文件。跳转时期根据标识符查询路由清单,完成路由地址跳转。编译时期 arouter-compilerRouteProcessor是处理路由清单生成的类。其初始化方法如下...原创 2019-04-24 14:52:21 · 443 阅读 · 0 评论 -
ARouter源码分析(二)—— 拦截器源码分析
Arouter源码分析系列文章,请访问https://github.com/AlexMahao/ARouter在分析路由跳转时,最终的跳转会判断是否是绿色通道,如果不是,将会走拦截器相关的逻辑。 // 如果不是绿色通多,拦截器做拦截 if (!postcard.isGreenChannel()) { // It must be run in async thread, ...原创 2019-04-25 11:56:05 · 373 阅读 · 0 评论 -
ARouter源码分析(三)—— Provider源码分析
Arouter源码分析系列建议从最初开始阅读,全部文章请访问https://github.com/AlexMahao/ARouter在之前分析拦截器时,发现拦截器的基础服务InterceptorService是通过Providers的方式构造实例对象的。于是以下进行Providers的分析。首先看一下InterceptorService的相关声明类。public interface In...原创 2019-04-25 14:27:28 · 808 阅读 · 0 评论 -
ARouter源码分析(四)—— 缓存与优化
Arouter源码分析系列建议从最初开始阅读,全部文章请访问https://github.com/AlexMahao/ARouter本篇博客意在记录ARouter中的一些优秀策略。辅助类加载机制ARouter在实现基本功能时,使用apt在指定包名下生成了一些辅助类。辅助类的查询逻辑如下。if (ARouter.debuggable() || PackageUtils.isNewVers...原创 2019-04-25 15:37:19 · 1450 阅读 · 0 评论 -
Span使用之利用系统Span样式实现模糊搜索,匹配变色的特殊UI效果
Span使用之利用系统Span样式实现模糊搜索,匹配变色的特殊UI效果在上一篇博客中,演示了基本的Span的使用,实现了对于字体的放大,缩小,变色等等。而这篇博客便是对于上一篇博客所讲解的东西加以利用。如果对于上一篇博客不是很清楚的,请点击如下链接:Span使用之系统提供的Span基本样式Span使用之利用系统Span样式实现模糊搜索,匹配变色的特殊UI效果Span使用之利用自定义Span解析原创 2017-07-17 22:51:26 · 2457 阅读 · 2 评论 -
Span使用之利用自定义Span解析Html中特殊标签实现类似微博@效果
Span使用之利用自定义Span解析Html中特殊标签实现类似微博@效果在前两篇博客中,讲解了系统已经定义好的Span,并且怎么利用系统的span实现一些特殊的效果。本篇博客将是这一系列的最后一篇。Span使用之系统提供的Span基本样式Span使用之利用系统Span样式实现模糊搜索,匹配变色的特殊UI效果Span使用之利用自定义Span解析Html中特殊标签实现类似微博@效果实现效果分析一原创 2017-07-20 23:00:31 · 2358 阅读 · 0 评论 -
手动实现IOC框架,与findViewById说拜拜
手动实现IOC框架,与findViewById说拜拜 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/64233563 本文出自:【Alex_MaHao的博客】 项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】自序在开发Android中,总要写许多的findViewById方法原创 2017-03-21 00:15:42 · 1914 阅读 · 2 评论 -
RxJava前奏之原理分析
RxJava 之前奏:原理分析首先我们进入一个例子,关于猫的例子。 我们有个 Web API,能根据给定的查询请求搜索到整个互联网上猫的图片。每个图片包含可爱指数的参数(描述图片可爱度的整型值)。我们的任务将会下载到一个猫列表的集合,选择最可爱的那个,然后把它保存到本地。首先定义实体类public class Cat implements Comparable<Cat> { /**原创 2016-03-31 11:47:13 · 2320 阅读 · 3 评论 -
Android混淆打包总结
Android 混淆打包Android Studio和Eclipse虽然是两个不同的工具,混淆的使用虽然不同,但规则相同。Eclipse混淆在eclipse中,文件根目录中有如下两个文件projiect.properties和proguard-project.txt。 开启混淆打包只需要在projiect.properties中,被注释的有如下一句话proguard.config=${sdk.di原创 2016-05-05 15:50:54 · 6367 阅读 · 0 评论 -
透明状态栏(StatusBar)的全适配
透明状态栏(StatusBar)的全适配状态栏指定android手机上顶部显示手机状态信息的位置。透明状态栏是android 自4.4开始新加入的功能,他可以是状态栏根据我们自己想要的颜色进行定义,使titleBar能够和状态栏融为一体,增加沉浸感。实现中遇到的阻碍因为状态栏是在4.4加入的,所以在4.4以前的系统上无法实现。现在世面上的手机android4.4一下的占比不是很大,所以不是太影响。网原创 2016-05-06 14:50:43 · 12335 阅读 · 8 评论 -
Android 之 IPC 进程通信全解析
Android 之 IPC 进程通信全解析本篇博客的框架什么是IPCIPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程。在明确其之前,需要先搞懂几个概念:线程:CPU可调度的最小单位,是程序执行流的最小单元;线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属原创 2016-06-28 14:39:13 · 6233 阅读 · 3 评论 -
okhttp使用总结
okhttp 使用总结okhttp 的使用越来越火,有必要对其进行研究。以下博客中的例子为了简单,在Eclipse中通过JAVA工程进行验证。导入OkHttpAndroidStudio添加如下代码即可 compile 'com.squareup.okhttp3:okhttp:3.3.1' compile 'com.squareup.okio:okio:1.8.0'其中okio是okhttp中关于原创 2016-06-29 16:38:51 · 7732 阅读 · 3 评论 -
apktool编译和反编译apk与ecplise多渠道打包
apktool 编译与反编译apk与Eclipse 多渠道打包想自己做个apk,还在为素材而苦恼吗?看到优秀的apk设计,还在为怎么看到别人的实现代码而苦恼吗?看着AndroidStudio 多渠道打包那么爽,而自己坑爹的还在用Eclipse,始终搞不定多渠道打包而苦恼吗?现在这些统统都不是问题,以前全要10块8块的,现在全部都要2块。。看一下本篇博客的大纲:使用apktool 反编译apk使用原创 2016-06-17 11:55:33 · 5696 阅读 · 0 评论 -
Android VectorDrawable与SVG 实现炫酷动画
Android VectorDrawable与SVG 实现炫酷动画 转载请标明出处: dsad 本文出自:【Alex_MaHao的博客】 项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】Android 从 5.0 提供了新的API VectorDrawable,通过该对象,我们可以使用矢量图SVG。在编写xml文件中,通过关键的几个标签原创 2016-07-20 14:29:01 · 14840 阅读 · 7 评论 -
Android热修复三部曲之动态加载补丁.dex文件
Android热修复三部曲之动态加载补丁.dex文件 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52049857 本文出自:【Alex_MaHao的博客】 项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】该篇作为Andriod热修复三部曲的最后一篇,本篇基于前两篇And原创 2016-08-04 15:22:44 · 4458 阅读 · 7 评论 -
Android热修复三部曲之MultiDex 分包架构
Android热修复三部曲之MultiDex 分包架构该篇博客主要分为三个部分:- **什么是分包架构**- **分包架构的好处**- **怎么实现分包**原创 2016-08-02 15:38:05 · 5759 阅读 · 4 评论 -
Gradle之使用Android Studio 编写Gradle插件并上传Library到JCenter
Gradle之使用Android Studio 编写Gradle插件并上传Library到JCenter在上一篇博客中Gradle 入门,编写channel.gradle并通过apply from : 'channel.gradle'引入Gradle 插件,实现了多渠道打包。同样,我们可以编写一个Library ,通过引入的方式引入Gradle 的插件脚本。编写 Gradle Library对于编写原创 2016-08-23 17:29:32 · 5856 阅读 · 1 评论 -
Android 热修复三部曲之基本的Ant打包脚本
Android 热修复三部曲之基本的Ant打包脚本 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52049857 本文出自:【Alex_MaHao的博客】 项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】热修复从2015年开始,逐渐的被推广开来,现在已经是比较热门的技术。当原创 2016-07-27 21:55:51 · 5058 阅读 · 19 评论 -
Android 从源码角度分析消息处理机制(Handler,Looper,Message)
Android 从源码角度分析消息处理机制(Handler,Looper,Message)前言在Android中,修改UI的操作必须要放入到主线程中。而我们的网络请求往往是长时操作,需要放入到子线程进行请求。可以通过Handler实现不同线程间的通信。对于如何实现的,网上有很多的教程或博文,也解释的非常清楚,这里不在多叙。但在使用过程中,我们可能会有一些疑问:为什么可以通过Handler实现不同的原创 2016-09-27 20:36:28 · 910 阅读 · 0 评论 -
热修复框架Tinker的从0到集成之路
热修复框架Tinker的从0到集成之路 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52049857 本文出自:【Alex_MaHao的博客】 项目中的源码已经共享到github,有需要者请移步【Alex_MaHao的github】2015年10月,QQ空间提出了热修复方案,一时间热修复风靡Android界,阿里原创 2017-01-13 20:17:59 · 6223 阅读 · 9 评论 -
透明状态栏(沉浸式状态栏)
透明状态栏(沉浸式状态栏)透明状态栏(Translucate StatusBar)是android从4.4开始模仿ios推出的一种模式,他可以改变状态栏的颜色,使其更加的与自己的app样式所统一android 4.4推出的状态栏为透明样式,但会有一层灰色的自顶向下的渐变色。Android 5.0推出的状态栏默认为半透明样式的,但可通过代码使其变成全透明模式的。实现方式实现方式有两种:通过在我们a原创 2016-01-25 23:23:07 · 2579 阅读 · 0 评论