自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 简述Activity的启动流程(界面显示)

写完上一篇博客之后,花时间看了一下Binder,还是只能看个皮毛,所以,在自己没有完全掌握的情况的,我会更注重这种上层的宏观流程,而不纠结于底层细节。 我们自己写的布局是在setContentView()中开始执行的,大致流程就是,系统会根据主题什么的创建出一个最外层的ViewGroup,然后把我们的View添加进去,然后通知WmS添加ViewGroup,界面就这么出来了。 Activity的a

2016-05-13 17:55:16 1920

原创 简述Activity的启动流程(类的创建)

想想我们在客户端是如何启动一个Activity的 1.清单文件中声明 2.通过startActivity()启动 这里我主要想分析一下第二种启动方法,暂时不想看解析xml的源码。 直接进入Activity的startActivity()方法,进入Instrumentation的execStartActivity()方法 try { ......

2016-05-12 16:40:41 987

原创 uCrop源码思路分析--难点攻破

大家可以先参考流程梳理uCrop裁剪流程梳理 折腾这个开源库已经很久了,但是很多细节我也没有完全掌握,有的还需要画图分析,作者寥寥数语,我们要研究半天。 在折腾的时候会发现许多问题,有简单的,也有一时想不出来,得慢慢debug的。 如,在不放大的情况下进行平移。 切入点很重要,当然,我们要看ACTION_UP之后究竟发生了什么。 if ((event.getAction() & Moti

2016-05-11 14:32:01 1146

原创 uCrop源码思路分析--流程梳理

首先要把思路弄清楚,先将这个项目运行在手机上,玩一玩,看看他都有哪些功能,然后再考虑那些功能是怎么实现的。 项目Github链接 第一阶段 折腾一番后就大致有个印象了,接下就可以分析具体功能了,且不看布局这些是怎么弄的,先从这个库的入口开始分析,就是我们是怎么与图片进行交互的,手势! 对,我们通过手势来改变图片的显示,可以平移,旋转,放大,我们应该从这里切入,整个思路就会比较清晰。 那么,问

2016-05-10 14:14:29 1489

翻译 我们是如何创建uCrop这个开源的裁剪库的

ps:作者真是好人,将他创建这个库的思路写成了博客,这么好的学习机会,我当然要慢慢的琢磨了,将他翻译出来是一个不错的选择。 这是一个关于图片裁剪的开源框架 原文链接 Github链接 在之前的文章中,我们已经说过uCrop这个开源库在裁剪图片上比市面上现存的解决方案表现的更为出色。 你也许已经关注过这个库了:就在发布后不久,uCrop在Github上已经得到了很多的关注,并且

2016-05-03 17:21:38 8537

原创 ThreadLocal及其应用

功能 用来提供线程内的局部变量,其他线程操作的数据不会对我产生影响。 用法 一般使用ThreadLocal,官方建议我们定义为private public,why? we will talk it later.public class ThreadLocalDemo { private static ThreadLocal<String> threadLocal = new Threa

2016-03-22 11:32:33 444

原创 Fragment的真正显示

依旧是经典的ViewPager+Fragment的应用场景! 轮播图我是依靠Handler发消息实现的,现在,我的需求是,当用户滑动到Pager_02或者Pager_03的时候,Handler停止发消息,当用户回来的时候,继续发消息。 两个重点: 1.什么时候用户已经离开了 2.什么时候用户又回来了 如果要准确的把我上述两个点,要结合ViewPager的缓存机制进行理解。 左

2016-02-19 09:27:10 575

原创 Android AIDL整理

都说AIDL是为了处理跨进程通讯而出现的,那么除了AIDL,到底还有哪些方法可以实现Android跨进程通讯呢? 1.Broadcast 广播 对于接收系统广播我们已经习以为常了,如,锁屏,电量不足,截屏等等。 Apps can also initiate broadcasts—for example, to let other apps know that some data h

2016-02-02 14:30:15 425

原创 RxAndroid热身系列--什么是Rx

The introduction to Reactive Programming you’ve been missing 那些年,你错过的响应式编程。 作者在开篇说到,Learning is hard,如果没有好的学习材料就更苦了。 他提出,最难的部分是以”响应式的方式去思考”,你必须摒弃以前固有的编程习惯,强迫你的大脑在另一种范式下工作。在看了作者这篇实用性的教程后,再去看Library d

2016-02-02 10:21:36 713

翻译 RxAndroid热身系列(一)

原文链接 本文是对该文章的一个简洁版笔记,并没有一字一句的翻译过来,尽可能的做到在逻辑上畅通,记录的过程也是自己理解的过程。 Android程序的每一个UI元素都是可以发出事件,如Button可以发出“click”事件,而我们只需要监听这些事件。 设置监听器来监听这些事件是我们通常的做法。 但是,现在有了RxJava库和RxAndroid库。这两个库添加了”函数响应式编程”,使得处理异步多事

2015-12-31 14:46:04 520

原创 ScrollView实例之--侧滑

这个问题也是我看公司项目的时候发现的,之前确实没有看过任何第三方的,也不知道out没,反正写下来吧。 公司的一款app实现这样一个侧滑效果,即刚开始,左边占满全屏,右边的button隐藏,当用户向左滑动时,右边的button则显示出来。这个侧滑感觉就是QQ里面的,但我忘记他是怎么实现的了,反正看一看我的吧,觉得蛮不错的。 注:在这里我们只讨论Width,MATCH_PARENT=-1,WR

2015-09-10 17:38:26 695 2

原创 开源项目分析之-Volley

趁有时间,赶紧记录一下自己对Volley的理解,算不上很透彻,但毕竟开始了,不是么。同样,本文也是基于CodeKK的文章思路,毕竟是菜啊。 CodeKK-Volley源码分析 CodeKK的分析很宏观,也告诉了你某些类的某些方法,但是当我第一次看的时候还是看不懂,但是呢,多看几遍之后,感觉慢慢找到方法了,我会看完他们的开源项目分析,然后再自己去挖掘更新的开源项目,在这里,真心感谢CodeKK的作

2015-09-09 16:43:56 628

原创 开源项目分析之UIL(续)

先直接上流程图 在上一篇我们大概的浏览了一下图片是怎样网络到本地,然后显示出来的。这一讲我们要分析一些细节问题。 图片的处理思路 该开源项目的处理也是符合真实世界的思路的,有几个问题我们需要理清楚 1.我们拥有什么 图片的url和ImageView 2.我们希望怎样处理图片 从网络上解析bitmap,缓存到磁盘,缓存到本地,显示出来 那

2015-09-09 10:36:58 472

原创 开源项目分析之UIL

该文章的基本思路借鉴于CodeKK源码分析 既然已经有了这么好的一篇Universal Image Loader源码分析的文章,那么为什么还要写下来呢? 原因很简单,我这几天都在看开源项目,东看看,西瞧瞧,没什么收获,后来觉得还不如仔细先研究一篇 并且要吃透,然后再去研究其他的,如果是泛泛而看很容易遗忘,对于我们这些菜鸟来说,好的东西需要 常常拿来研究,不断的去琢磨为什么要这么做,这才是王

2015-09-08 17:34:15 596

原创 ScrollView嵌套GridView解决办法的原因

注:MATCH_PARENT=-1,WRAP_CONTENT=-2 话说这个问题网上的答案千百篇,就我所查阅的来说,基本就一个解决办法:自定义一个GridView,重写其onMeasure方法protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = Measur

2015-09-02 11:17:57 692

原创 LinkedHashMap

在安卓中Lru缓存机制都是通过LinkedHashMap来实现的,那么我之前的疑问就是当我们对该集合进行迭代的时候,到底是怎么保证每次next()的时候返回给我们的都是我们之前插入的顺序的呢? 首先还是得看一看最经典的哈希表的实现方法,即数组+链表模式。 那么我们先看看HashMap是怎么进行值的保存和迭代的。 保存 上图左边的数组中存放的是Entry对象 摘自HashMap源码sta

2015-09-01 10:41:53 468

原创 View绘制之---onMeasure()

本篇承接上一篇onMeasure(0,0)究竟发生了什么 整篇文章基于该图 对于最上面的原生View,我们没有给定任何参数,只是将他的颜色设置为Red,外层布局都是-1,那么显示出来的结果是,全屏的红色,即这个View占满了全屏,so,why? 所以,我们来看一看父亲是怎么测量这个儿子的。 addView()往里面走有这么段代码params = generateDefaultLayout

2015-08-25 21:47:06 544

原创 Measure(0,0)到底发生了什么

最开始接触这个方法的时候是在写自定义控件的时候,比如,父控件的高度需要根据子控件来动态改变,那么我们就需要手动的去测量每一个子控件,然后他们的总高度就是父类最终的高度了。 在大多数情况下,这个逻辑可能是能够走通的,但是,我会举个栗子来让这个逻辑走不通。 1. 如果我对一个原生的View使用measure(0,0),是毫无意义的。 protected void onMeasure(in

2015-08-25 20:32:47 3422

原创 屏幕适配初探

当我们明白了dp、dpi、px、sp、屏幕密度这些概念时,这才是第一步。后面我们需要了解的是安卓是怎样一个机制来加载图片的,即那么drawable-hdpi等等是怎么个玩意儿。我想写一个实例来窥探其一部分特性,后续的特性会慢慢补上。 这个实验呢,很简单,一张图(590x300),开两个模拟器A和B(一个320x480,一个480x800)。 从安卓的资源系统中加载图片 先看raw文件夹,我们自

2015-08-20 14:18:56 471

原创 Android中的消息机制-源码分析

这个话题相信大家都不陌生,本人权当是一次比较系统的梳理。 Handler的几种消息发送方式 在Android中最常用的消息通信机制,即子线程和UI线程之间的通信,我们一般是基于Handler机制实现的,那么下面来看一看Handler的几种发送消息的方式。 1.sendMessage(Message message) 最常用的一种方式,下面我们一层层走下去。最后走到了sendMessageAt

2015-08-19 11:03:40 452

原创 wrap_content的困惑

作为一个小菜,当自定义控件和wrap_content结合使用的时候,会遇到很意想不到的问题,我很乐意向大家说说我的困惑。MeasureSpec类 大家可能已经知道这个类了,也知道他封装了模式和尺寸 一起看看源码的解释吧 A MeasureSpec encapsulates the layout requirements passed from parent to child. E

2015-06-25 11:00:20 2585

原创 Android事件分发(三)

到了这个环节,我们主要研究requestDisallowInterceptTouchEvent的使用。我们之前对这个方法的通俗解释是“请求父亲不要拦截给我的事件”。 首先,看一下官方源码的解释。 Called when a child does not want this parent and its ancestors to intercept touch events with {@lin

2015-06-24 19:52:08 798

原创 Android的事件分发(二)

首先还是强烈推荐小弟翻译的一篇博客http://blog.csdn.net/wood_water_peng/article/details/46550409非常有启发性的一篇文章咱们接着前一篇讲,探一探onTouchEvent的底由于我们希望事件最终交给EventView处理,那么我们来瞧一瞧EventView的onTouchEvent的返回值对事件分发的影响情景一: EventV

2015-06-23 19:34:03 661

翻译 事件的传递(一篇老外的博客)

http://balpha.de/2013/07/android-development-what-i-wish-i-had-known-earlier/本人在搜索事件分发的文章时,偶然看到的一片博文,条例很清晰,很有启发性事件的传递某时某刻,你自己不得不亲自操刀去处理点击事件,此时你不能仅仅依靠那些正确的某某监听器(onSomethingListener)来达到效果.我不得不做这

2015-06-18 17:25:49 727

原创 Android事件分发分析(一)

我们先要明白三个概念1.事件的分发2.事件的拦截3.事件的处理这是一个典型的Activity结构,Group_outer和Group_inner都是继承自RelativeLayoutEvent_View继承自View,这算是我们的开胃小菜,分析一下原始情况下事件的分发,拦截和处理对于Activity,我们暂且叫做EventActivity,重写了两个方法,如下

2015-06-16 22:25:11 664

空空如也

空空如也

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

TA关注的人

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