版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 自定义View概述 之前结合源码分析完了自定义View的三个阶段:measure,layout,draw。 那么,自定义有哪几种常见的方式呢? 直接继承自View 在使用该方式实现自定义View时通常的核心操作都在onDraw( )当中进行。但是,请注意,在分析measure部分源码的时候,我们提到如果直接继承自View在onMeasure( )中要处理view大小为wrap_content的情况,否则这种情况…

2016年5月31日 0条评论 3点热度 阅读全文

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。 draw( )源码剖析 按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPrivate…

2016年5月26日 0条评论 4点热度 阅读全文

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 在经过measure阶段以后,系统确定了View的测量大小,接下来就进入到layout的过程。在该过程中会确定视图的显示位置,即子View在其父控件中的位置。 layout( )源码剖析 嗯哼,我们直接扒开源码从View的layout( )开始入手。 //l, t, r, b分别表示子View相对于父View的左、上、右、下的坐标 public void layout(int l, int t, int r, …

2016年5月17日 0条评论 2点热度 阅读全文

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 大家知道,自定义View有三个重要的步骤:measure,layout,draw。而measure处于该链条的首端,占据着极其重要的地位;然而对于measure的理解却不是那么容易,许多问题都是一知半解,比如:为什么父View影响到了子View的MeasureSpec的生成?为什么我们自定义一个View在布局时将其宽或者高指定为wrap_content但是其实际是match_parent的效果?子View的sp…

2016年5月12日 0条评论 7点热度 阅读全文