- 博客(169)
- 资源 (49)
- 收藏
- 关注
原创 Android进阶之旅 - Kotlin 开发实战篇
1. Kotlin 简介Google 在去年的 IO 大会上宣布,将 Android 开发的官方语言更换为 Kotlin,作为跟着 Google 玩儿 Android 的人,我们必须尽快了解和使用 Kotlin 语言,它就像是 iOS 的 Swift 我们迟早得学这是逃不掉的,只不过这过程对于很多人来说比较漫长。不过 Kotlin 毕竟是语言级别的新事物,比起 Java 来说,从编程思想到
2018-01-30 09:22:15 982
原创 NDK开发前奏 - x团参数加密和签名校验
这次给大家分享一个关于《x团参数加密和签名校验》解决方案,主要涉及的内容是 MD5 加密算法和 JNI 基础。如果我们只是做 Android 应用开发,应当还是先把 Android 的基础知识玩溜一些,我并不想带坏你,打个比方,比如我们都用过 String、StringBuilder、StringBuffer 这三个,有时真正的开发过程中我们都是看心情的,想用哪个就用哪个。所以先把 Java 和
2018-01-06 14:34:10 634
原创 系统架构部分的总结和展望
快到年底了想想也是比较激动,因为眼看一年就要过去了。最近也是利用闲暇时间一直在补文章,因为明年有新的学习计划,年后可能也不会再分享 Android 方面的知识,在这之前希望能把视频同步的一些文章补上。记得刚开始有人跟我说:你写的这些东西我都会 。。。(具体记不清了,大致的意思就没必要写这些东西,不要误人子弟)从未想过要去扰乱他人的心志,去动摇自己的决心。我只是想用一种方式记录一下而已,这些内容
2017-12-21 16:16:37 729
原创 开发模式 MVP - 基础框架搭建和分析
这期来看下 MVP ,如果不是很了解 MVP 是啥?请自行补一补基础知识,我其实也不太会,如果 RxJava 、OkHttp 、Retrofit 的运用和源码不是特别熟悉,也请去我之前的一些文章补一补,我其实也不太会。我们先来写一个简单版代码,然后分析其问题,运用之前的一些设计模式基础来一个一个解决。拿获取个人用户资料信息为例:1.简单基础版本UserInfoContract 类/** * des
2017-12-21 16:16:02 512
原创 第三方开源库 Retrofit - 源码设计模式分析
Retrofit 这个开源库对我成长还是挺大的,自己虽不常用,但他的源码封装思想,却需要用到实际的开发中。这些年有两本书一直都在看 《Android的源码》和《 JakeWharton的源码》。JakeWharton 映象最深的是自己刚做Android时的 ViewPageIndicator, 那个时候这个库才刚开源,如今又是几个年头过去了,想想一个 Android 的十几年的大神叫我怎能不激动,所
2017-12-21 16:15:09 551
原创 第三方开源库 RxJava - Android实用开发场景
到底什么情况下可以使用 RxJava ? 我们需要知道不是使用 RxJava 而是响应式编程,好吧,那到底什么时候可以响应式编程?按道理来讲,我们写任何代码都可以采用响应式编程的思想,只不过是有没有必要而已。罗列一些使用场景:防止按钮重复点击;RxView.clicks(mClearContent).debounce(300, TimeUnit.MILLISECONDS)EditText 添加
2017-12-21 16:14:28 448
原创 第三方开源库 RxJava - 自己动手写事件变换
知乎看了个链接,也是给我上了一课。想想 鸿洋、任玉刚、郭霖等等 这些前辈真是不简单,至少作为在中小型企业的我来讲,他们的分享,对于我们的帮助还是挺大的,在一定程度也带动了我们的技术。看了那个链接才发现 勿忘初心 这四个字真的意义深远。这周还是有很多人反应这个 RxJava 源码分析听不懂,我尽量多花一些时间多做一些思考,这里还是针对源码再补一篇文章,再做一次源码分析。public class Obs
2017-12-21 16:13:31 570
原创 第三方开源库 RxJava - 基本使用和源码分析
RxJava 历史有点悠久,目前最新版是 2.x 的版本,网络上有很多关于 RxJava 的文章, 随便搜搜一大堆。为什么还要来写一些文章,毕竟那是别人的东西,并没有变成我的知识,其次课程具体的内容有安排,所以我们还是自己动手写写吧。还是老套路从源码的角度出发,当然 RxJava 用了这么久,我们应该也有自己的一些理解,其实就是三个字:事件流很多人一开始就从观察者设计模式入手去分析,这个也不说行不通
2017-12-08 22:18:43 502
原创 第三方开源库 OKHttp - 上传进度监听和自定义缓存
最近这段时间的确有点忙,要处理的事情比较多,发现好久没有更新文章了,以后尽量一周更新一篇,这周要视频的人也特多,希望我们看了要多花点时间消化,最好我们自己能写一下总结,千万别又还给我了。那位替我打广告的哥们,虽然我不知道你是谁,但是打心底里说声谢谢。OkHttp 我们总共花了四次去分析源码,花那么多时间去看源码到底是为了啥?其实每个人想的都不一样,有人觉得会用就很不错了,对于我来说我就是喜欢琢磨琢磨
2017-12-08 22:17:36 450
原创 第三方开源库 OKHttp - Java网络编程基础
OKHttp 系列的分析我们打算从 6 个地方下手,我们先从网络的基础知识开始,因为 OKHttp 涉及 Http 协议,所以对于 Http 的基础知识,做一个简单的认识,还是非常有必要的。这里推荐三本书《图解 Http》《Http 权威指南》《Java 网络编程基础》1.OSI 的七层模型2.TCP的三次握手和四次挥手3.Http 报文简介HTTP 协议采用 HTTP 报文的形式传递数据,客户端的
2017-12-08 22:16:34 531
原创 第三方开源库 EventBus - 源码分析和手写
EventBus官方介绍为一个为Android系统优化的事件订阅总线,它不仅可以很方便的在同线程中传递事件或者对象,还可以在不同线程中实现事件或对象的传递,用法比较简单,可以很好地完成一些在原生系统中的Intent,Handler等可以完成的工作,在Android开发过程中用途及其广泛。当然这里不介绍它的具体用法,只走源码,然后自己动手写一下加深映象。很多人都说用了观察者设计模式,如果非得要往上靠,
2017-12-08 22:15:28 431
原创 代理设计模式 - 实现 Retrofit 的 create
相信大家都很熟悉 Retrofit 了,这篇文章不会讲使用,如果不是特别熟悉 Retrofit 的使用,可以去看看其他的一些文章。如果实在不想看那也没关系,因为今天的主要内容并不是 Retrofit ,而是代理设计模式。只是在讲解的过程中顺便讲一下代理设计模式的运用。先来看看开发中哪些地方可以用到:Android 插件化架构之绕过 AndroidManifest 检测(动态代理)Android
2017-10-13 17:32:22 956
原创 装饰设计模式 - RecyclerView添加头部和底部
1.问题思考RecyclerView 我们都知道有一个比较麻烦的事,那就是没有提供可以直接添加底部和头部的功能。而在开发的过程中一定有这方面的需求,怎么解决这个问题?我们干脆不要用 RecyclerView 了,直接用 ListView 就好了,因为 ListView 直接提供了 addHeaderView 和 addFooterView 方法。既然 ListView 可以直接可以添加头部和底部,那
2017-09-30 18:01:05 676
原创 工厂设计模式 - 数据存储的特有方式
任何设计模式都是为了解决某些特定场景下所遇到的问题,要知道设计模式其实是可以有一些变动的,说白了设计模式是一种思想而并非一种代码,不要为了使用某种模式生搬硬套。当我们理解一种设计模式的思想时,不要去钻牛角尖。我们在开发中遇到一些问题的时候,就可以在脑海中翻一翻我们所积攒的知识,是不是可以用某一些设计模式来解决这个问题,又或者是用其他方式来解决。当然我们也需要去看一些文章和书籍,很多都写得非常不错,但
2017-09-25 08:50:10 578 1
原创 Handler通信 - 源码分析和手写Handler框架
记得第一次接触 handler 是用来更新 UI,在线程中用 handler.sendMessage(message),只知道这么做就能在线程中更新 UI 了。第二次接触是为了面试,当时反正也看不懂源码,就在网上找各种资料背它一背,笔试还好,当着面试官说的时候往往不知道怎么说。第三次接触是因为公司要引入人才,发现大家功夫还不错,经常就问问 MessageQueue 为什么要采用链表的方式,Threa
2017-09-18 10:13:23 1294
原创 编译时注解 - ButterKnife源码分析和手写
大学刚出来实习那会,自己写了一个运行时的 ViewById 和 OnClick 注解,用来解决 findViewById 和 setOnClickListener 。其实也是参考 xUtils 的源码,后来加了很多的功能扩展,如网络检测等等。关键是那时 xUtils 并没有插件,自己学着写了插件。这个在外包公司能省不少事,技术总监开会说谁谁怎么怎么样,大家要像他学习啊。工资一下涨了不少,装 B 的技
2017-09-07 09:19:31 918
原创 面向对象六大基本原则 - 网络引擎切换
仍记得前年的这个时候我去一个新的公司报道,公司总共就十来个人做开发,刚好做 android 的那哥们离职,就丢了一个项目给我。后面的日子我算是饱受煎熬,今天我们以一个访问网络的部分,来给大家做一下讲解。里面每次获取接口数据是这样的: 当时我看到这个的时候觉得没什么,只是我想换一下网络请求的框架,想把它换成 OKHttp ,我一直不喜欢用 xUtils。但后来想想还是算了,好几十个地方那我不都得
2017-08-31 18:34:30 634
原创 AOP面向切面编程 - 淘宝京东网络处理
现象描述当我们打开京东 app 进入首页,如果当前是没有网络的状态,里面的按钮点击是没有反应的。只有当我们打开网络的情况下,点击按钮才能跳转页面,按照我们一般人写代码的逻辑应该是这个样子: /** * 跳转到待收货页面 */ public void jumpWaitReceiving() { // 判断当前有没有网络 if(Chec
2017-08-31 18:29:26 1369 4
原创 源码阅读分析 - Window底层原理与系统架构
做了一段的时间的 android 我们就开始听到有人说 AMS、WMS、Window、WindowManager、WindowManagerService等等这些词汇,可能了解但是脑海里未必有架构图, 这次我们就从源码的角度来了解一下。在阅读本文之前希望你可以花点时间了解下面几篇文章:1. 插件式换肤框架搭建 - setContentView源码阅读 2. Android进程间的通信 - IPC(
2017-08-21 09:38:10 1359
原创 视差动画 - 雅虎新闻摘要加载
1. 效果 太多太多的评论我其实是不会回的,如果要说什么只能说抱歉。我承认很多视频链接没那么好找,但是你如果留意用心了,肯定能获取到以前所有的直播视频链接。2.分析和实现2.1 效果分析: 写了那么多次效果,这个实现起来应该是个小 case ,留意观察有三部分动画 1. 旋转动画,六个小球在不断地旋转 2. 位移动画,六个小球往中心点聚合 3. 扩散动画,当小球移动的最中心就开
2017-08-14 16:02:59 638
原创 贝塞尔曲线 - QQ消息汽包拖拽
1.概述 消息气泡拖拽资料有很多,网上也有开源代码,下载下来就可以用。为什么还要折腾呢?我想证明一下数学已经初中毕业,其次像贝塞尔这种效果还是很常见的,虽然目前我只有一个 APP 用了这个效果。我想一行代码让所有的控件都可以拖动爆炸,不是为了重复造轮子而是为了装B。 2.效果实现 * 2.1 效果分析 * 看上面的效果感觉有点麻烦,怎么做到任何控件都可以拖动爆炸,我想说网上应该仅此一家。
2017-07-31 08:58:13 864
原创 Material Design - 自定义Behavior
1.概述 自己做的项目似乎很少用到了 Material Design 的自定义 Behavior,至多就是用了一些 Material Design 的常用控件,关于 Behavior 其实都快忘记得差不多了。这几天在网上找了很多 app 发现知乎很多地方用到了这方面的知识,我们就以知乎的效果为例,效果非常简单,先上张图。2.效果实现 * 2.1 CoordinatorLayout 和
2017-07-12 09:07:23 661
原创 属性动画 - 58同城数据加载动画
1.概述 今早 5:30 起来给人回答问题,问题是 5:12 提的我吓一跳,心里在想这世界很努力的人太多了。周三下班有一个哥们一口气问了我 3 个,他说他搞了一下午实在搞不定,我很耐心的回答了,但是三分钟能解决的问题你要搞一下午,怪不得你说你天天加班到深夜。其实越是形势不好的时候越是要练习内功,我们学会思考很重要,技术也只是技术而已。话不多说看看今天的效果:2.效果实现 * 2.1 布局分析
2017-07-05 16:17:40 572
原创 做个斜杠青年
1. 我年纪比你大好几岁,技术上并没什么建树,现在学习还有用吗? 当你这么说的时候我想你的心里是拒绝的,这应该不是年龄的问题,而是什么时候可以下决心行动起来,一直这么下去以后你还是会问其他人同样的问题。在编程的道路上,总是能遇到那些很有天分并异常努力的程序员,他们很早就开始了编程。让在大二才开始学习编程的我压力非常大,时常假设如果自己在大一的时候就开始学习编程,如果在大学期间不浪费那么多时间
2017-06-15 11:14:05 1592
原创 源码阅读分析 - View的Touch事件分发
其实 Android 事件分发机制在早几年一直都困扰着我,那时候处理事件分发的自定义 View 脑子都是一片白,老感觉处理不好。后来自己看了 android 源码,也阅读了很多大牛的文章才算彻底明白,总之掌握 Android 事件分发机制是必不可少的,而 Android 事件分发机制绝对不是三言两语就能说得清的。 而今天由于我们自定义 View 进阶的需要,自己也是筹备了很久。目前虽然网上相关的文
2017-06-13 22:43:20 631
原创 自定义View - 九宫格解锁
1.概述 自定义View效果越写越难,但是将这些效果一步一步分解后,其实挺简单的,早期自己项目中用到九宫格解锁,我都是从网上下的,因为心里一开始觉得自己写应该会很困难,后来发现自己闲下来写写原来这么简单。这期的自定义View效果我们用Kotlin来写2.实现 2.1. 绘制出相对于这个View的居中的九个圆,刚开始当然是默认的 2.2. 当触摸屏幕的时候判断是否点击在这九个圆上 2.3.
2017-05-25 11:36:53 764
原创 View绘制流程源码解析
1.写在前面 很多人在获取控件宽高的时候,遇到了一些问题,因为涉及到的知识点比较广,所以有时我只能说个大概,这一次我希望大家可以做一个彻底的了解,请思考一下,下面三段代码分别打印什么? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceS
2017-05-23 17:37:01 774
原创 这个时代,给了我们年轻人太多
1. 我从来没有想过,我早上醒来会有人给我发 “ 早上好,我现在也和你一样每天五点半起来 ”;我从来没有想过,吃晚饭的时候有人会给我发 “ 我正在看你的视频,我现在也天天学习,每天锻炼,真的非常感谢您 ”;我从来没有想过,上班的时候有人给我发 “ 等我工作找好了,有时间去找你玩,等我发达了会感谢你的 ”。我其实什么都没做,只是跟大家说我们往前冲一冲而已,我们能够一起学习一起聊聊是 我今生最大的福报
2017-05-18 11:10:50 970 3
原创 Android字母索引列表
1. 概述 画笔Paint基本熟悉了之后,我们循序渐进介绍一个的方面onTouch(),用于处理手指触摸交互的,这是很早期的一个效果,但是用来学习真的很不错: 我们的重点是实现右边的字母索引效果,至于读取本地数据库的城市数据,做一些拼音排序什么的,这个就不写了当然源码我已经写好了。2. 效果实现分析 右边的 [ A - Z ] 用 ListView 去实现可以吗?应该是可以的,我好像在网上有看
2017-05-12 10:48:32 1222
原创 我的麻烦才刚刚开始
1. “你在干什么?写了这些东西有什么用?很开心吗?”几年前同事是这么跟我说的(当着我),其实那时我是写给自己看的,没想过要怎样会怎样,但是我知道自己没那么差。 写了那么多文章,直播录制了很多视频分享,很多人说我无私奉献,说我是大神,其实我麻烦大了,我知道自己没那么好,很多东西我都不会,有时候在群里看你们讨论技术问题,我不说话其实是插不上嘴。 回过头看看,从CSDN转到简书短短的两个月的时间粉
2017-05-07 14:06:20 822
原创 这些年我过得挺好,请放心
母亲每次打电话过来都是聊聊家常,更多的是问我放假了什么时候到家。很多次白天打电话都没接上,后来改为晚上,我问她为什么,她说知道我忙,怕打扰我工作。 去年的五一是老爸开着三轮摩托送我去的镇上,我和老妈蹲在后面,她老是叮嘱我要好好照顾自己,别太晚睡觉,花钱别太省,要多吃点好的……而我总是回答“请放心,我这里一切都好!老板和同事都对我特好,有事没事就和朋友出去打打球玩一玩。” 如今回家方便了许多,怕是再
2017-05-03 17:04:19 600 2
原创 自定义View简介 - onMeasure,onDraw,自定义属性
1. 概述 自定义View这东西很多哥们比较畏惧,如果你认为他比较难关键还是缺少实践写得少;如果你认为很简单,那可能是你没有遇到过那些奇葩的效果,需要高等数学和各种算法。当然我想要做的就是让大家觉得很简单,如果你做了一两年Android开发,给你一个效果你根本没法下手,会比较尴尬。自定义View是第一个坎,系统架构,内存优化,NDK后面还会有很多坎,每一个坎都需要花一定的时间,我们可以算一算,按照
2017-04-26 14:44:45 804 5
原创 从3K到30K在长沙这座城市买房买车,23岁的年纪我到底经历了什么
内涵段子项目分享告一个段落,三个月的坚持最大的受益者是自己,收到了很多哥们的感谢,每篇文章也基本都有人打赏,我这里也表示感谢,反正答应过给大家分享的内容一定会坚持,也希望通过自己不断的努力带来更多好的文章和视频。 记得上次有人问过我30K的程序员日常都会干些什么,什么时候才能到你这样。首先我技术其实很菜的,只能说我很幸运而已,其次我根本没法回答这个问题,因为每个人所走的路不一样所追求的也不一样
2017-04-21 09:29:50 2353 1
原创 Android技术总监应该干的那些事
当年多少次做梦都在想以后能不能做到那样的一个程度,可不可以自己不用干活在旁边指挥指挥就好,轻轻松松就拿钱,而且是超高那种。后来发现完全是两码事,如果你不能在短时间内做调整,我敢保证累不死你。多人的开发班子,多条业务线,反正别人做不了的你都得上,关键是还有人给你挖坑。你不做没人做,你不抗没人抗。以下是个人的一些套路,团队人数不一样,公司性质不一样,都可能不一样。套路是这么个套路,但能参考培训 有的时
2017-04-21 09:28:56 1386
原创 Android增量更新和签名校验
1. 概述 NDK图片压缩有很多人反应是蒙的,包括在文章评论的一些哥们,也包括私下聊天的一些哥们。那么内涵段子后面的所有分享都离不开NDK,比如gif图片加载,视频压缩,视频直播推流等等。当然我们也可以去网上下载别人写好的,但是对于我们来说没任何意义。经过后来一系列的考虑,内涵段子项目暂时告一个段落。希望后面有时间出一些C和C++的语法基础,然后我们再来讲,这期是现阶段最后一次分享NDK了,这次我
2017-04-19 16:07:44 2031
原创 Android插件化架构 - 拦截Activity的启动流程绕过AndroidManifest检测
1. 概述 了解了Java的动态代理机制之后,配合上一期的文章Android插件化架构 - Activity的启动流程分析,那么接下来就需要亲自操刀去拦截Activity的启动流程了。前面好事没少干,那么现在就来干干坏事,到底怎样才能让没有注册的Activity启动不报错呢?答案就是Hook下钩子。 2. Hook启动流程 怎么样去找Hook点是个问题,把钩子下在哪里呢?一般的套路肯定最好
2017-04-17 12:54:24 1459
原创 Android插件化架构 - Activity的启动流程分析
1. 概述 Android插件化架构,目前第三方的框架比较多,早几年自己用的是DL框架,这个框架的源码比较简单主要用的是静态代理。如果我们自己要去写一个插件化架构框架那要解决的问题会分为几个方面,类的加载,资源和布局的加载,广播的管理方式,Activity的加载和生命周期管理,Service的插件化,ContentProvider的插件化等等等等,反正加载一个没有运行的app到主程序需要解决的问题
2017-04-14 13:30:43 1282
原创 Android图片压缩加密上传 - NDK终极压缩和加密上传
1. 概述 上一期已讲到Android图片压缩加密上传 - JPEG压缩算法解析,我们不打算采用BitmapFactory去压缩,而是采用JPEG的压缩算法,当然大家最好是将两者结合一下,今天我们直接去网上找一个已经写好的开源库,然后我们在他的基础上再写一些Native代码就好,当然也可以自己一步一步去写算法处理。 所有分享大纲:2017Android进阶之路与你同行视频讲解地址:周日晚上八点
2017-04-09 13:38:53 1649
原创 Android图片压缩加密上传 - JPEG压缩算法解析
1. 概述 我们在开发的过程中肯定很多项目都需要上传图片文件,我们往往都是直接上传,相信很多哥们都并未对齐做过压缩。当然很多哥们估计也在这方面费劲心思,往往都是采用google提供好的BitmapFactory,但是效果不太理想,如果觉得还行那请你把3M的图片压缩到300K或者更小试试看看效果,这里考大家一个经常问到的面试题:一张 422x644 的 PNG 图片,我把它放到 drawable-x
2017-04-05 21:39:52 2138
原创 Android进程间的通信 - 耍流氓的方式保活Service
1. 概述 上一期我们已经阅读了源码Android进程间的通信 - IPC(机制)Binder的原理和源码阅读,这一期我们就得用到它了。记得前几年在公司做购物商城,有一个倒计时的功能,上头非得实现要实现这个功能,当时的想法就是引咎辞职,因为APP应用一退出后台启动的Service根本不管用直接被杀掉了,前几年的事今天我们就来拯救拯救。 声明: 1.文章综合了很多其他的一些资料,所以非常
2017-03-30 11:31:11 1336 6
Android常见多条件筛选菜单(美团、58)
2016-01-13
圆形图像图片
2015-10-31
流式Tag布局
2015-10-20
ViewPager指示器适配所有效果
2016-12-29
玩转ViewPager指示器字体变色
2016-12-11
Android 无限广告轮播
2016-11-19
Android6.0运行时权限框架封装
2016-11-15
Android6.0运行时权限处理事例
2016-11-11
仿QQ6.0侧滑效果
2016-11-02
仿QQ空间,百思不得姐下拉刷新图片放大
2016-07-31
QQ微信附近好友雷达扫描
2016-07-30
不需配置的ViewPagerIndicator
2016-06-05
RecyclerView 瀑布流、ListView、GridView实例
2016-04-10
Android插件换肤完整版
2016-03-27
Android插件换肤Demo
2016-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人