自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入浅出ASM

前言ASM作为一个声名在外的字节码编制工具,无数“传奇”框架都基于此展现了花里胡哨的魔法。最近在工作中发现需要加强这部分能力,不然很多技术方案总是很麻烦…但是仅靠ASM实际也无法“无所欲为”,因为说到底它也只是一个方便的改写class的工具。想要使其发挥战斗力,还需要配合诸如:Gradle的transform api、注解等角色的支持。因此接下来的一段时间内,我会尽可能的把自己在这方面的实战内容输出出来。正文这一篇咱们主要聊ASM的一些用法,核心聚焦于ASM。所以关于字节码的部分就不展开了,有相

2020-12-06 14:48:58 465

原创 android中ViewPager这才是标准用法

前言创作过程:2020年5月22下午4点左右开始写,晚上9点55写下尾声。晚上11点-12点补充第五、第六部分。有段时间没写文章了,这次不是因为懒…而是的确很忙,最近在重构项目里的一个重要模块。搞起来真的酸爽,为了策应其他组的模块化,重构的时候也进行了我们的模块化处理,混乱的依赖也是x了狗了…今天的文章内容是关于ViewPager的,很多同学可能会吐槽:怎么还写这种“低级”的内容!为什么?因为绝大多数的同学都用错了,当然这主要的原因是搜索引擎推出来的文章大多都是错的!正文一、错误用法不

2020-05-24 10:29:31 528

原创 5分钟过一遍Android事件分发(笔记风)

前言前几篇文章咱们从源码的层面分析了事件分发机制…不过感觉有些时候还是需要记一些笔记般的内容,简单快捷的回忆对应的内容。正文布局嵌套层级:ViewGroupA中嵌套ViewGroupB,然后ViewGroupB嵌套ViewGroupC,ViewGroupC中包含ViewD。基于此,咱们分情况记录一些情况:一、C的onInterceptTouchEvent()返回true,onTouchE...

2019-09-28 21:26:01 228

原创 ViewPager的notifyDataSetChanged()没有效果?来从源码上解决这个问题

前言最近发现自己有很多颇为基础的内容“不会写”了,就比如今天写的内容:ViewPager。最近有小伙伴,在后台私信一些技术细节,大家真的好勤奋~~因为工作的原因,有些私信回复的不是很及时,多多包涵。996伤不起啊!正文平时我们很容易遇到这样的需求:页面底部很多Tab,可以点击或者活动切换不同的页面…估计话还没有说完,有朋友就会脱口而出:ViewPager+ Fragment实现。说起...

2019-09-18 10:44:06 872

原创 一文带你彻底捋清楚:插值器、估值器

前言最近想学的东西有点多…(潜台词:一个也没学~哈哈)待我学成之后,再出来“装逼”…今天整一篇“科普”向的文章,也是我自己一直傻傻分不清的内容:插值器、估值器。正文一、插值器Interpolator什么是插值器?根据时间流失的百分比 计算当前属性改变的百分比。使用场景:实现非线性运动的动画效果非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动...

2019-08-25 10:35:06 839

原创 动态规划,凑硬币

前言动态规划。这是一个有趣的话题,因为对于大部分业务型公司来说,面试中的算法部分并不会考这一块。但是BAT等一线互联网公司又不一定不会考,比如我在面试头条的时候就被问了一道动态规划的题目。此外,我个人觉得动态规划有趣的原因是,我认为应用层的工程师能接触到或者用到的“最需要思考”的算法题目了。所以咱们今天就好好聊一聊动态规划。正文一、贪心算法聊动态规划之前,我想先聊一聊贪心算法。1.1、...

2019-08-16 17:17:40 1170

原创 一篇文章带你真正搞定:android事件分发

前言事件分发是一个老生常谈的话题,既然是一个“冷饭”,那为什么今天又开始“炒冷饭”了呢?说白了,还是自己高估了对事件分发的理解。这里抛出几个问题:1、对一个View进行setOnTouchListener操作,并且onTouch()返回true,为啥它的onTouchEvent()不会被响应? -> 答案在:方法展开2部分。2、一个View的onTouchEvent()返回了tru...

2019-08-04 23:36:18 176

原创 Room踩坑:理解Room的正确升库

前言最近在用Room时候,由于很大意,错误的升级数据库。导致灰度期间出现了不少crash。这篇文章就来纪念一下自己的“年少无知”吧。这篇文章翻译于Google的官方博客(自备梯子),是我踩坑后搜到的,贴出来希望大家避免掉坑里吧~正文删除了一些原文中的“废话”,直接上处理代码。有兴趣看更多细节的小伙伴,可以直接看原文。前置条件,我们现在的app版本中已经建了这样的数据库:@Da...

2019-07-14 10:38:46 12192 4

原创 思想交融,Android中的函数式编程(1):DiffUtil体验

前言随着业务的急剧扩张,一些架构上的调整也随之破土动工。从最初的MVC,管他是唱、跳、Rap,还是打篮球。通通写在Activity里;再到MVP阶段的业务与View分离;然后就是现在的MVVM。关于MVVM的内容,可以在我之前的文章中看到:一点点入坑JetPack:ViewModel篇一点点入坑JetPack:Lifecycle篇一点点入坑JetPack:LiveData篇一点点入...

2019-07-02 10:51:57 270

原创 Thread长Thread短,别聊线程了,看看协程吧

前言对于Java的小伙伴来说,线程可以说是一个又爱又恨的家伙。线程可以带给我们不阻碍主线程的后台操作,但随之而来的线程安全、线程消耗等问题又是我们不得不处理的问题。对于Java开发来说,合理使用线程池可以帮我们处理随意开启线程的消耗。此外RxJava库的出现,也帮助我们更好的去线程进行切换。所以一直以来线程占据了我的日常开发…直到,我接触了协程…正文咱们先来看一段Wiki上关于协程(Co...

2019-05-11 21:50:42 344

原创 Vuex源码讲解系列(二)功能梳理

各位看官 没看过功能梳理的可以先阅读下Vuex源码学习(一)功能梳理.前车之鉴有了vue-router源码学习的经验,每次看认真钻研源代码的时候都会抽出一小段时间来大体浏览一遍源代码。大体了解这个源代码的脉络,每个阶段做了什么,文件目录的划分。下面我来带大家梳理一下Vuex的脉络。Vuex与vue-router结构的区别Vuex的结构与vue-router结构的核心区别就在与Vuex有一...

2019-03-25 23:34:08 159

原创 Vuex源码讲解系列(一)功能梳理

前言好友的一个关于Vuex源码的文章,他不好意思发。我帮他发,哈哈哈~what is Vuex ?这句话我想每个搜索过Vuex官网文档的人都看到过,在学习源码前,当然要有一些前提条件了。了解Vuex的作用,以及他的使用场景。会使用Vuex,对基本API熟练掌握。有一颗求知的内心(balabla的)。Vuex我们通常称之为状态管理模式,用于解决组件间通信的以及多组件共享状态等问题...

2019-03-25 11:10:19 232

原创 技术债Dagger2:Android篇(上)正经实战讲解@Component、@Module

前言因为工作需求,所以最近补了补之前没了解过的Dagger2的内容,基础篇已经发布。接下来就是Dagger2在Android中的应用了。当然,和我一样刚接触Dagger2的朋友,可以先看一下之前的基础文章:出来混迟早要还的,技术债Dagger2:基础篇正文这篇文章的Demo实在是太好了。所以我就厚颜无耻的把他的代码拿过来用…这是一个外国哥们的文章,我猜他应该不会怪我的,哈哈…原文地址:...

2019-03-25 11:06:56 452

原创 Git如何合并commit,squash来帮你

前言作为开发者,Git是我们常用的代码管理工具,我相信大家一定有过这个场景。那就是commit太多,提交的时候不是很好看。甚至有些临时commit,今天就来聊一聊Git的合并commit。(这是一篇翻译加总结的文章)正文打个比方,咱们先假设有几次提交,git log如下:假设我们有一个feature_x分支。已经commit一个d7322aa。之后我们一直在努力为该功能添加新元素(新的c...

2019-03-07 13:39:12 1969

原创 出来混迟早要还的,技术债Dagger2:基础篇

前言年前架构组的大佬们,分享了一个内容:如何让App Bundle支持Dagger2。PS:关于App Bundle暂时不是本篇内容要讲的会议就如何在App Bundle中高效的使用Dagger2展开了激烈的讨论,xxx表示应加强团队技术建设,规范Dagger2的使用…我tm都没用过Dagger2,我是谁?我在哪?我都在听些什么?正文一、为什么需要依赖注入个人觉得,开始一个新技术...

2019-02-11 12:51:41 306

原创 JetPack生命周期管理神器之:Lifecycle

前言因为业务的原因,自己也开始了JetPack之旅。不得不承认,用上之后:真香。JetPack以官方的方案,解决了很多我们头疼的问题。JetPack作为一整套的解决方案,不是一篇文章很够解释清楚的。正如官方所说:Android Jetpack 组件是库的集合,这些库是为协同工作而构建的,不过也可以单独采用,同时利用 Kotlin 语言功能帮助您提高工作效率。可全部使用,也可混合搭配!所...

2019-02-03 14:38:00 377

原创 几个特性,快速上手Kotlin

前言因为工作需要,所以最近大量的时间都用在了对Kotlin的提升上。所以最近的文章基本都是关于Kotlin的了内容。这不是一个死扣细节的文章,而是一个帮助小伙伴们快速由Java(Android)转向Kotlin的文章,因此更多的是一种语法与思想混在的模式。充分理解Kotlin,快速上手写业务快速切换至Kotlin for Android模式正文不多扯淡,点进来的小伙伴们肯定都是来学...

2018-12-16 22:33:09 174

原创 Kotlin快速入坑指南(干货型文档)

前言即使每天10点下班,其实需求很多,我也要用这腐朽的声带喊出:我要学习,我要写文章!!又是一篇Kotlin的文章,为啥…还不是因为工作需要。毫无疑问,最好的学习方式是通过官方文档去学习。不过个人觉得官方文档多多少少有一些不够高效。中文官方文档因此这篇是从我学习的个人视角以文档的形式去输出Kotlin语言基础的学习。不扯淡了,开整。正文高阶函数高阶函数是将函数用作参数或返回...

2018-12-08 18:12:21 253

原创 [动态代理三部曲:上] - 动态代理是如何"坑掉了"我4500块钱

前言不知道,起这个名字算不算是标题党呢?不过如果小伙伴们可以耐心看下去,因为会觉得不算标题党~ 这是一个系列文章,目的在于通过动态代理这个很基础的技术,进而深入挖掘诸如:动态生成class;Class文件的结构;用到动态代理的框架源码分析。 对于三部曲来说,我初步打算: - 上:从源码处看JDK实现的动态代理的方式。 - 中:了解Class文件的结构,看懂.class文件。 - 下:...

2018-08-19 23:42:52 360 1

原创 [动态代理三部曲:中] - 从动态代理,看Class文件结构定义

前言这篇内容是上一篇[动态代理三部曲:上] - 动态代理是如何”坑掉了”我4500块钱的补充,进一步分析篇。 建议二者结合食用,醇香绵软,入口即化。好了,不扯淡了,开始…正文2、Class 文件的格式 这里为啥是2开头呢?因为上篇文章是1这部分内容不知道各位小伙伴是怎么感觉的。最开始学习的时候,我是一头雾水,不知道如何下手。当一步步结合反射、JVM内存模型,...

2018-08-19 23:42:06 289

原创 理解异步之美---Promise与async await(二)

承上启下经历了上一篇基础的Promise讲解后,我觉得大家对于promise的基本用法和想法就有一定了解了。(就是一种承诺哟)更多内容,欢迎光关注我们的公众号:下面我们要去了解一下它的工作流程了。结合源码与分析别人的常见实现进行理解下面是别人实现的总源码,(简单一看就可以)var PENDING = 0;var FULFILLED = 1;var REJECTE...

2018-08-19 23:40:25 881

原创 理解异步之美--- Promise与async await(一)

本篇旨在以通俗的语言去解释题目的内容,还希望各位小伙伴们,能够通读下来。如果表达有误的地方,还望评论区指出~不多哔哔,坐稳扶好,发车了~你可能会放出一个怪物异步与同步相比,最难以掌控的就是异步的任务会什么时候完成和完成之后的回调问题。难以掌控的触发状态,让你自己写的代码当时还可以读懂,但是过几天半个月之后如果不重新盘一边逻辑,你哪知道哪个内容会先执行借用这么一个例子listen...

2018-08-12 16:37:06 3494

原创 深入理解Java反射

写在前面今天在需求评审的时候,遇到了挺有意思的要求。需求是什么样子就不说了。总之完成这个需求需要一个调用系统api的操作。然而这个api因为并不稳定的原因。被谷歌hide掉了。 这个时候我们最直接的方式就是去通过反射去调用这个系统api。(当然这种方式治标不治本,因为既然被hide,就说明这个api很不稳定。所以这个版本可以用,有可能下个版本就没了) 不过这里我们不考虑这个问题,因为如题所...

2018-07-29 19:21:47 258

原创 从高频笔/面试题思考Android学习/进阶路线(Java篇)

 写在前面标题谈进阶,属实有一些夸大。 我一直在思考什么样的文章才是一篇好文章,我的定义是首先要有人看,其次重要的是内部有价值。所以针对于这个出发点,我决定从大家比较关注的面试题入手,然后尝试从中分析对Android进阶路线的帮助。 虽然我只是一个应届生,但是我善于总结别人的经验,不要脸的去向别人请教。我实习的公司有蚂蚁金服技术专家,360浏览器技术负责人…在与他们的请教(后来他...

2018-07-24 14:48:07 187

原创 我的编程之路

我有一个故事,讲出来姑且博大家一乐。我有一个朋友,在这普通的一天,他穿着普通的鞋很普通地走在这普通的街,掏出普通的电脑,学点普通的Java…也许是皂滑弄人,他并没有在身边人中找到合适的引路人。所以他决定自己一点点去学,他搜索到了大量的参考资料,可是也正是因为大量的资料让他无从下手。他不知道哪些内容是重点,哪些内容已经过时。所以在那段日子里,他快乐又纠结。快乐是因为他找到了自己感兴趣的东西,...

2018-07-22 16:36:06 879

原创 常用集合HashMap的源码分析

写在前面上一篇博客,我们分析了ArrayList的源码实现,ArrayList吊起来观察一番之后,那么下一个被吊起来的肯定就是HashMap了。作为以key/value存储方式的集合,HashMap可以说起到了极大的作用。因此关于HashMap,我们将着重使用比较大的篇幅。接下来会用到的几个常量 static final int DEFAULT_INITIAL_CAPACITY = 1 ...

2018-05-06 09:19:59 155

原创 2018届android校招面试总结:百度,大疆,乐视,知乎

写在前面四月面临了人生第一次比较重大的变化:现在的公司因为融资不利,收回了我的正式offer。很伤…这差不多一个月的时候,开始了自己的面试之旅。有导师/朋友给内推的,也有自投的….面试记录我是一个双非本科的大四狗,一直在搞安卓,自学一年多的时间,然后有半年多的实习经历…安卓真好玩,就是肚子有点饿~ 接下来,按时间的顺序的记一记我这一个月以来所经历的面试。百度:社招(导师内...

2018-05-04 18:28:30 1725

原创 ArrayList源码分析

写在前面最近因为拥抱变换,所以开始无奈的面试之路。因为在集合的源码分析上,出了些问题,所以这段时间,好好重新理一理常用的集合源码。(版本基于JDK1.7)ArrayList毫无疑问,提到常用集合。ArrayList势必是第一个被搬出来的,因此我们就先拿它开刀了。add(E e)1、初始化ArrayList的初始化,只有在第一次add的时候进行new数据,数组默认...

2018-04-28 18:00:19 134

原创 Gradle项目配置优化

写在前面不知不觉自己已经在北京呆了半年的时间,自己所在的实习公司也已经工作了四个月的时间。时间真的好快,自己马上就要失去学生这个身份了…这次周期计划是关于Gradle的内容,为什么有这个计划,是因为这段时间公司把项目整体升级到了3.0,借用升级的计划,Leader增加了很多的配置信息以及Gradle,让这个项目的依赖管理更有条理性。 因此基于这个背景就有了这篇博客的想法。开始...

2018-04-11 22:46:46 374

原创 Java反射实践:从反射中理解Class

写在前面今天在需求评审的时候,遇到了挺有意思的要求。需求是什么样子就不说了。总之完成这个需求需要一个调用系统api的操作。然而这个api因为并不稳定的原因。被谷歌hide掉了。 这个时候我们最直接的方式就是去通过反射去调用这个系统api。(当然这种方式治标不治本,因为既然被hide,就说明这个api很不稳定。所以这个版本可以用,有可能下个版本就没了) 不过这里我们不考虑这个问题,因为如题所...

2018-04-11 22:45:39 201

原创 RecyclerView分割线的实现

(周期计划-1)RecyclerView分割线的实现 2018年技术周期计划:周期计划-1(2018/1/1-2018/1/7)写在前面以前给RecyclerView加分割线,都是简单的在Item的布局中自己添加想要的效果。这种做法当然是没有什么毛病,不过说到底还是有一些投机取巧。毕竟谷歌提供了正经的分割线的绘制方式。至于使用哪种方式其实个人任务都无伤大雅本身就是单纯为了完成

2018-02-04 13:52:20 1637

原创 Android锁屏实践

转载请注意:http://blog.csdn.net/wjzj000/article/details/78443710本菜开源的一个自己写的Demo,希望能给Androider们有所帮助,水平有限,见谅见谅…https://github.com/zhiaixinyang/PersonalCollect (拆解GitHub上的优秀框架于一体,全部拆离不含任何额外的库导入)https://github.

2017-11-12 13:15:16 450

原创 Android杂谈(28)观公司项目RecyclerView封装有感

RecyclerView的另类封装

2017-11-04 15:16:28 372

原创 Android杂谈(27)锁屏实践

android锁屏实践

2017-11-04 13:23:13 745

原创 记2017莫名其妙的美团校招安卓岗

2017年美团校招安卓面试

2017-10-21 20:22:02 2336

原创 ItemDecoration实现固定悬浮式Item的思路

关于ItemDecoration的作用。在很久之前,我一直把ItemDecoration定义在仅仅是画Item的分隔线。使用ItemDecoration实现悬浮Item的效果。

2017-10-08 21:06:24 909

原创 从属性动画看自定义View(1)

本菜开源的一个自己写的Demo,希望能给Androider们有所帮助,水平有限,见谅见谅… https://github.com/zhiaixinyang/PersonalCollect (拆解GitHub上的优秀框架于一体,全部拆离不含任何额外的库导入) https://github.com/zhiaixinyang/MyFirstApp(Retrofit+RxJava+MVP)写在前面好

2017-09-24 21:47:09 418

原创 从Service中理解进程间通信Messenger / AIDL(上)代码套路

进程间通讯 Messenger AIDL

2017-09-11 13:35:23 286

原创 Git初级全攻略

git的命令攻略,这里不是一步步去敲命令,而是攻略...攻略!

2017-09-07 17:57:27 365

原创 全新一次的安卓面试

记一次酣畅淋漓,收获颇丰的面试经历

2017-09-01 08:24:58 575

安卓源码(Eclipse)

Eclipse环境。 3个源码:1,异步加载图片(简易)。 2,传感器加速度原理的测速软件。 3,翻页特效。

2015-08-09

空空如也

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

TA关注的人

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