
Android-UI
文章平均质量分 77
小孩黑
追风骚年
展开
-
View的Measure过程解析
背景《Activity.setContentView()内部实现解析》中分析了View是如何被添加到DecorView中,添加到DecorView后View对用户来说还是不可见的。View在呈现给用户前,它需要经过Measure -> Layout -> Draw三个步骤。本文将从DecorView的源码开始,分析View的Measure过程。预备知识–测量概述View在呈现出来前,需要确定的第一个原创 2017-06-06 00:37:11 · 480 阅读 · 0 评论 -
Android 事件机制解析(上)
1、背景Android的触摸事件(MotionEvent)的传递机制还是有些复杂,内容会有点多,所以分为上下两篇来讲解。 《Android MetionEvent事件解析(上)》分析事件的分发流程,当清楚了事件分发流程后,我们需要结合一些实例进一步熟悉Android的事件传递机制,所以在《Android MetionEvent事件解析(下)》会提出几个问题,并通过源码进行分析。 分析事...原创 2018-03-23 11:22:41 · 275 阅读 · 0 评论 -
Android 4.3以下, 调用measure(0, 0)抛java.lang.NullPointerException异常
1、问题新版本上线后, 后台出现了java.lang.NullPointerException报错,异常发生在RelativeLayout的measure( )方法内部,measure( )方法调用方式如下:// 实例化一个RelativeLayout对象mDefaultView = LayoutInflater.from(getContext()).inflate(R.layout...原创 2018-03-23 20:34:59 · 425 阅读 · 0 评论 -
Android 4.1以下设备上调用canvas.clipPaht( )异常
1、问题在最新的一次需求中,需要自定义一个下载进度条的View,在重写了onDraw(canvas)方法并使用canvas.clipPaht( )这个方法,在测试阶段都没有测试出问题,但是上线以后从后台看到一些报错,如下:StackTrace=nulljava.lang.UnsupportedOperationExceptionat android.view.GLES20Canvas.c...原创 2018-03-23 20:51:31 · 217 阅读 · 0 评论 -
深入解析View展示流程
1、背景如果想在Activity中显示一个布局,做法是在Activity的onCreate()方法中使用setContentView()方法设定想要显示的布局,如下所示:@Overrideprotected void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); setContentView(R.lay...原创 2018-03-20 21:36:56 · 264 阅读 · 0 评论 -
Android 事件机制解析(下)
1、写在前面在上一篇已经分析了事件的分发流程,分发流程还是比较复杂的,要想彻底弄清楚事件的分发机制,还得自己动手实践。结合上一篇的源码分析总结给出了一张Android事件的分发流程汇总图: 结合上面给出事件分发图,通过打印log分析Android 事件分中的4种情况,并动手处理开发中常见的滑动冲突问题:a. 默认情况,全部返回super,默认情况是不拦截不消费事件的。b. View...原创 2018-03-30 17:13:49 · 201 阅读 · 0 评论 -
View的Layout过程解析
1、问题《View的Measure过程解析》中分析了View的大小测量过程,View的大小确定后,就是确定View在父容器中的位置,接下来我们就来分析View的布局流程。2、分析与分析View的Measure过程一样,从ViewRootImpl.performTraversals( )方法开始分析View的Layout过程,我们在该方法中可找到Layout的入口performLay...原创 2018-03-21 16:42:49 · 286 阅读 · 0 评论 -
View的Draw过程解析
1、问题View经过了Measure和Layout这个两个过程后,View的大小已确定,以及View的位置也确定,接下来就是要把View显示出来,这里我将继续分析View的Draw过程。2、分析Draw过程的入口点从ViewRootImpl.performTraversals( )方法开始,在perforMeasure()和perforLayout( )后,接下来来就是执行perf...原创 2018-03-21 21:01:08 · 267 阅读 · 0 评论