Android 中级进阶相关的知识点
文章平均质量分 97
本专栏介绍了 Android 开发中大家都比较关注的技术细节,比如炫丽的 UI 实现效果,比如网络数据开源库的使用,比如常用的通信协议,等等,初级开发者可以通过阅读这些博文让自己的开发能力得到实质的提高。
frank909
爱阅读的程序员,专注于技术思考和分享。关注架构设计、Android 开发、AI、数学、自动驾驶领域,个人公号:Frankcall
展开
-
自定义View,指示wifi信号强度(菜鸟历险记)
我的Android是自学的,自学教材是李刚老师的《疯狂Android讲义》。因为之前是学C语言的,从事的嵌入式行业的开发,接触的是arm世界,用纯c语言写成的bin文件去驱动板子上的显示器及其它。后来有个项目要用Android开发,没有办法就开始自学,当时的打算是1个月的时间学会java,1个月的时间学会Android.因为觉得自己c语言还可以,特别是解决了指针这一个难题后,心里有信心学其它语言会比原创 2016-03-27 14:03:05 · 18835 阅读 · 11 评论 -
Android IBinder的linkToDeath介绍及情景模拟
最近查看Framework源码的时候,读到了AudioService处理音量的流程,在这里碰到了IBinder的linkToDeath()这个知识点,比较感兴趣,所以记录下来,并自己写demo尝试了一下。我们简单来看下AudioService处理静音这一块。 /frameworks/base/media/java/android/media/AudioManager.javapublic clas原创 2016-04-01 11:23:32 · 23516 阅读 · 1 评论 -
RxAndroid从零开始学习之一(RxJava的简单Demo)
前言现在RxJava,RxAndroid似乎很火,很多开发群里面都在讨论。因为本人虽然一直在开发Android,但近两年跟系统内置app和framework层打交道更多,没有想到脱离互联网领域这么点时间,这么多新技术就冒出来了。所以想想很有危机感,感觉脱离群众很久了。那么,来吧。打算用一段时间将这个知识点从零开始学起。本人偏向于实用主义,不想开山立作去详尽解释RxAndroid中具体的语法,只想通过原创 2016-09-02 10:35:03 · 14947 阅读 · 2 评论 -
RxAndroid从零开始学之二(Observable的其它创建与订阅形式)
前一篇文章简单地写了Observable、Observer、Subcriber及subcribe()方法的使用。这篇再往下学习一些基础的知识点。内容也不会长。Observable的创建的另外方式我们知道。Observable<String> mObservable = Observable.create(new Observable.OnSubscribe<String>() {原创 2016-09-05 14:19:53 · 11830 阅读 · 0 评论 -
RxAndroid从零开始学之三(线程调度)
通过前面的文章,我们已经知道了RxAndroid中的Observable、Subscribers、Observer的创建,及subscribe的使用。 接下来,我们开始学习RxAndroid中的线程。线程学Android中恐怕无人不知ANR.正因为如此,我们才会使用Thread+Handler或者Aysnctask的代码编写方式。假设有这么一个需求,程序要进行一个耗时的计算任务,然后得到一个字符串原创 2016-09-06 09:36:55 · 11668 阅读 · 0 评论 -
RxAndroid从零开始学之五(常见操作符与三级缓存)
RxAndroid的操作符有很多,本以为写了上一节的一些基本的Operator就可以正常编写代码了,但是后来在github上看googlesample,发现了一些另外的Operator。那么本文就继续介绍这些operator并加上自己的一些理解。first()只发射第一个数据项,或者是满足条件的第一个数据项。 Observable.just(1,2,3,4).first().subscribe原创 2016-09-12 17:40:09 · 12387 阅读 · 0 评论 -
Realm数据库学习之快速入门
build.gradle配置顶层build.gradlebuildscript { repositories { jcenter() } dependencies { classpath "io.realm:realm-gradle-plugin:1.2.0" }}app模块中的build.gradleapply plugin: '原创 2016-09-14 16:49:33 · 10668 阅读 · 0 评论 -
Android中MVP模式讲解及实践
前两年的时候,我经常逛http://androidweekly.net这个网站,上面就有过很多文章介绍MVP模式,我很感兴趣,于是把这个东西介绍给身边的同事,同事们好像没有多大反应,可能是当时在国内MVP用的范围还比较少吧。后来我换了工作,再后来某一天我发现各类博客纷纷在介绍这个东西,各类群里面也在讨论这个东西。我感觉到MVP被越来越多的人认可了,反倒是自己显得落伍起来。所以,趁着空闲,做一...原创 2016-10-17 15:44:08 · 33641 阅读 · 22 评论 -
OKHTTP学习之基础知识及运用
OKHTTP简介 okhttp是一个现代化的高效的http库。它能使资源下载的更快和节省带宽。 okttp的高效体现在: * http/2 允许多个访问同一主机地址的请求共享同一个socket。 * 连接池减少了请求的延时 * 通过GZIP压缩下载时的文件大小 * Response缓存机制避免了网络请求完成时其它重复的请求。 如果你配置了多个服务端的IP地原创 2016-10-20 11:57:13 · 12694 阅读 · 2 评论 -
OKHTTP学习之高级特性
前言上一篇我已经将OKHTTP的基础知识介绍了一番<< OKHTTP学习之基础知识及运用 >>。这一篇我们一起探索一些复杂的功能。 在这之前我们将基础知识再回顾一下。 Call同步请求 execute异步请求 enqueue异步请求时的回调 Callback服务器的回复 Response服务的消息体 ResponseBody网络访问的请求 RequestHeader请求的原创 2016-10-24 15:17:40 · 16570 阅读 · 3 评论 -
OKHTTP之缓存配置详解
前言在Android开发中我们经常要进行各种网络访问,比如查看各类新闻、查看各种图片。但有一种情形就是我们每次重复发送的网络请求其实返回的内容都是一样的。比如一个电影类APP,每一次向服务器申请某个电影的相关信息,如封面、简介、演员表等等,它们的信息都是一样的。显然,这样有点浪费资源,最主要的是这些重复的请求产生了没有必要的流量。流量、流量、流量!!!重要的事情说三遍!刚开始工作的我也不懂,后来才发原创 2016-10-25 11:47:31 · 37599 阅读 · 24 评论 -
Android常用加密手段之MD5加密(字符串加密和文件加密)
前言安全问题一直伴随着互联网的成长,如何有效地保护应用程序的数据是每一个开发者都应该考虑和努力的事情。这篇文章介绍Android平台上常用的加密方式之MD5加密。MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定原创 2016-10-31 17:59:00 · 31144 阅读 · 1 评论 -
通信协议之Protocol buffer(Java篇)
之前一直习惯用json进行数据的传输,觉得很方便。来到新公司后发现同事们用的更多的的协议都不是json,而是Protocol buffer。这个东西之前没有听说过,不明白同事们为什么放弃好好的json不用,用这个。后来了解到经常是设备与设备之间进行通信,而不是设备与服务器做通信。很多设备是linux下c语言做核心服务,c来解析json比较麻烦。于是决定花些时间来学习这个陌生的协议。简介Protoco原创 2016-11-16 16:16:38 · 35214 阅读 · 19 评论 -
Android绘图Canvas十八般武器之Shader详解及实战篇(上)
前言Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有java层的,也有jni层深入到Framework。Canvas有许多的知识内容,构建了一个武器库一般,所谓十八般武艺是也,Paint是Canvas的一个重要的合作伙伴,但今天要讲的不是Canvas也不是Paint,而是与Paint相关的知识点Shader. 什么是Shader?Shader在英语辞典中被解释为着原创 2016-12-15 20:14:01 · 12876 阅读 · 2 评论 -
Android绘图Canvas十八般武器之Shader详解及实战篇(下)
前言上一篇《Android绘图Canvas十八般武器之Shader篇(上)》 我们知道了Bitmap的用法,及TileMode的详细情况。接下来,这一篇作为整个知识体系的下半部要讲的是Shader的其它几个子类。 首先声明,网上很多称之为渲染,如图形渲染,线性渲染等,而在这里我更喜欢称为渐变。 LinearGradient 线性渐变渲染器LinearGradient中文翻译过来就是线性渐变的意思原创 2016-12-16 15:41:40 · 13804 阅读 · 7 评论 -
小甜点,RecyclerView 之 ItemDecoration 讲解及高级特性实践
小甜点,RecyclerView 之 ItemDecoration 讲解及高级特性实践毫无疑问,RecyclerView 是现在 Android 世界中最重要的系统组件之一,它的出现就是为了高效代替 ListView 和 GridView。当时它的出现解决了我一个大的需求,这个需求就是在电视盒子界面上横向加载应用列表,由于 ListView 没有横向加载的功能,而网络上开源的那些 Horizonta原创 2017-04-13 20:46:36 · 52769 阅读 · 27 评论 -
RecyclerView探索之通过ItemDecoration实现StickyHeader效果
我在上一篇《小甜点,RecyclerView 之 ItemDecoration 讲解及高级特性实践 》 讲解了 ItemDecoration 的基本用法及它的一些实践,抱着学习研究的态度,这一篇作为实践篇主要目的是尝试通过 ItemDecoration 来实现 RecyclerView 中的 StickyHeader 功能。 关于 StickyHeader 想必大家已经很清楚了,如果不有不清楚的,原创 2017-04-17 15:58:42 · 30816 阅读 · 20 评论 -
长谈:关于 View Measure 测量机制,让我一次把话说完
《倚天屠龙记中》有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有。张无忌说记住了一半。张三丰又慢吞吞使了一遍,问他记住多少,张无忌说只记得几招了。张三丰最后又示范了一遍,张无忌想了想说,这次全忘光了。张三丰很满意,于是放心让张无忌与八臂神剑去比试。首先声明,这一篇篇幅很长很长很长的文章。目的就是为了把 Android 中关于 View 测量的机制一次性说清楚。算是自己对自己较原创 2017-05-15 18:56:45 · 20907 阅读 · 31 评论 -
自定义View实战--实现一个清新美观的加载按钮
在 Dribble 上偶然看到了一组交互如下: 当时在心里问自己能不能做,答案肯定是能做的,不过我比较懒,觉得中间那个伸缩变化要编写很多代码,所以懒得理。后来,为了不让自己那么浮躁,也为了锻炼自己的耐心程度,还是坚持实现它了。这个过程,觉得自己还是有所收获,把握了一些想当然的细节,输理了对于自定义 View 的流程。我将这个自定义 View,起了一个名字叫做 LoadButton。这篇文章涉及到的原创 2017-05-18 15:25:54 · 16391 阅读 · 8 评论 -
Kotlin 第二弹:Android 中 PDF 创建与渲染实践
这是 Kotlin 练习的的第二篇。这一篇的由来是因为刚刚在 Android 开发者官网查看 API 的时候,偶然看到了角落里面的 pdf 相关。 我仔细看看了详细文档,发现这个还蛮有意思的,关键是编码流程很简单。所以就想写篇博客记录备忘一下。本来是用 Java 实现的,后来想到最近自己也在熟悉 Kotlin,于是索性就改成 Kotlin 来实现了。但是,我一起认为编程最重要的是编程思想,不管原创 2017-05-27 10:31:19 · 16550 阅读 · 1 评论 -
针对 CoordinatorLayout 及 Behavior 的一次细节较真
我认真不是为了输赢,我就是认真。– 罗永浩我一直对 Material Design 很感兴趣,每次在官网上阅读它的相关文档时,我总会有更进一步的体会。当然,Material Design 并不是仅仅针对 Android 而言的,它其实是一套普遍性的设计规范。而对于 Android 开发人员而言,我们涉及的往往是它的实现。也就是一个个个性鲜明的类。比如 RecyclerView 、Car...原创 2017-06-12 22:17:29 · 39571 阅读 · 23 评论 -
不再迷惑,也许之前你从未真正懂得 Scroller 及滑动机制
学习本来就是从困惑中摸索问题答案的过程,能够描述出来问题就已经成功了一半。只要发现了困扰你的东西是什么,那么你就离解答出来不远了。————肯尼斯 R. 莱伯德一直以来,Android 开发中绕不过去的话题就是自定义 View,曾几何时,考验一个开发者能不能熟悉自定义 View 的基础流程作为分辨菜鸟和中级开发者的一个技术标准。但是自定义 View 本身而言,应对各种具体的需求,难度又不...原创 2017-06-18 23:10:54 · 21090 阅读 · 40 评论 -
神奇的 ViewDragHelper,让你轻松定制拥有拖拽能力的 ViewGroup
为了吸引大家的注意力,先给大家看一张动图: 相信这种效果大家都见过吧?我第一次见到这样的效果时,心里也痒痒的,急于想实现这种功能,后来因为拖延症的问题,就一直没有去弄这件事。现在这段时间,工作比较轻闲,所以对自己几年 Android 生涯所运用的技术做一些总结与思考。拖拽这种功能正好可以形成一个主题。如题目所示,今天博文的目标就是介绍与分析 ViewDragHelper 这个类。 读者阅读本原创 2017-06-25 22:33:53 · 24926 阅读 · 29 评论 -
轻松学,听说你还没有搞懂 Dagger2
Dagger2 确实比较难学,我想每个开发者学习的时候总是经历了一番痛苦的挣扎过程,于是就有了所谓的从入门到放弃之类的玩笑,当然不排除基础好的同学能够一眼看穿。本文的目的尝试用比较容易理解的角度去解释 Dagger2 这样东西。 Dagger2 是有门槛的,这样不同水平能力的开发者去学习这一块的时候,感受到的压力是不一样的。 我个人总结了大家在学习 Dagger2 时,为什么感觉难于理...原创 2017-07-20 22:14:00 · 39392 阅读 · 25 评论 -
细说 AppbarLayout,如何理解可折叠 Toolbar 的定制
Material Design 是个好东西,它的出现使得 Android 也能定制高颜值的界面,并且指导了如果实现复杂炫丽的交互效果,而 Android Surpport Desgin 这个支持包就是 Android 官方对 Material Design 的代码实现。 Android Support Desgin 这个包中提供了一系列的组件如:CoordinatorLayout、AppBa...原创 2017-08-11 01:28:37 · 21468 阅读 · 13 评论