---【View框架分析】
文章平均质量分 90
Achillisjack
这个作者很懒,什么都没留下…
展开
-
android 加载,解析xml文件源码解析
1, setContentView在activity中,经常需要利用setContentView方法加载xml文件来显示界面,界面的流程图如下,setContentView方法如下,public void setContentView(int layoutResID) { // Note: FEATURE_CONTENT_TRANSITIONS may be s原创 2017-01-15 18:36:58 · 1980 阅读 · 0 评论 -
listview数据刷新分析(三)
5.1,概念当adapter中的数据更新时,会调用notifyDataSetChanged方法来刷新listview,这应该是典型的观察者模式,背后的原理是什么呢?5.2,注册注册流程图如下,调用listview的setadapter方法时,开始注册, setAdapter方法部分源码如下,mDataSetObserver = new AdapterDataSe原创 2017-01-15 21:53:50 · 601 阅读 · 0 评论 -
ScrollView源码分析
1, 概述ScrollView直接继承于FrameLayout,当需要展示的内容比较多但并不是重复的item时,就会使用ScrollView。它使内容可以在垂直方向滚动显示,防止显示不全。ScrollView使用起来非常简单,但是要注意的是ScrollView中只能添加一个直接的子View,并且只能在垂直方向上滑动。2 ScrollView绘制解析2.1 onMeasureSc原创 2017-01-15 22:12:49 · 902 阅读 · 0 评论 -
Listview缓存机制分析(四)
6 RecycleBin解析RecycleBin是AbsListView的内部类, 是ListView能够实现成百上千条数据都不会OOM最重要的一个原因. 主要变量如下,private View[] mActiveViews = new View[0]; // 保存listview中可见的元素(view)private ArrayList[] mScrapViews; // Array原创 2017-01-15 21:58:03 · 587 阅读 · 0 评论 -
listview滑动源码分析(二)
4, listview滑动刷新刷新流程如下,主要是trackMotionScroll方法, 当于手指只要在屏幕上稍微有一点点移动,这个方法就会被调用,而如果是正常在屏幕上滑动的话,那么这个方法就会被调用很多次。boolean trackMotionScroll(int deltaY, int incrementalDeltaY) { final int chil原创 2017-01-15 21:46:25 · 577 阅读 · 0 评论 -
Listview源码解析(一)
1, 概述ListView继承关系如下,ListView也是一个控件,但是不同于其他的简单的控件, 它处理大量的内容元素。那么,这些元素从哪里来呢, Adapter为ListView提供数据。2 实现这个例子主要是读取手机上的联系人并用listview显示。1,listview sortListView = (ListView) findViewById(R.id.原创 2017-01-15 21:40:42 · 513 阅读 · 0 评论 -
Toast源码分析
1, 概述Toast是一种向用户快速展示少量信息的视图。当它显示时,它会浮在整个应用层的上面,并且不会获取到焦点。它的设计思想是能够向用户展示些信息,但又能尽量不显得唐突。本篇我们来研读一下Toast的源码,并探明它的显示及隐藏机制。2 实现从Toast的最简单调用开始,它的调用代码是: Toast.makeText(context,"Show toast",Toast.LENGT原创 2017-01-15 21:10:12 · 541 阅读 · 0 评论 -
PopupMenu源码分析
1, 概述PopWindow (弹出框)和Dialog最关键的区别是Dialog不能指定显示位置,只能默认显示在屏幕中间(当然可以通过设置WindowManager参数来改变位置)。而PopWindow可以指定显示位置,更加灵活。PopupMenu就是利用PopWindow来实现的。2 实现PopupMenu是一个子窗口,不仅依附于Activity还依附于一个View控件,开发步骤如下原创 2017-01-15 21:00:32 · 1638 阅读 · 0 评论 -
Dialog源码分析
1, 概述Dialog(对话框)不仅可以显示信息,还可以和Activity界面进行交互,这种交互是阻塞式的. 继承Dialog的类有好几种,主要以AlertDialog为例来分析一下具体的原理。2 实现Dialog依附于Activity来实现,一般在acitivty中显示,因为Dialog的交互是阻塞式的,所以最好另开一线程,1,首先调用showDialog方法showDialo原创 2017-01-15 20:37:07 · 729 阅读 · 0 评论 -
android 窗口类型分析
1, 概述Android窗口类型主要分成了三大类:1,应用程序窗口。一般应用程序的窗口,比如我们应用程序的Activity的窗口。2,子窗口。一般在Activity里面的窗口,比如各种菜单等。3,系统窗口。系统的窗口,比如输入法,Toast,墙纸等。WindowManager里面窗口的type类型值定义是一个递增保留的连续增大数值。其实就是窗口的Z-ORDER序列(值越大显示的原创 2017-01-15 20:29:51 · 3618 阅读 · 0 评论 -
view的onMeasure,onLayout,onDraw源码分析(下)
1, 引子一直以为绘制的三个方法onMeasure,onLayout,和onDraw只调用一次,分析源码时也没有在意,后来在看listview时发现onLayout居然调用了2次,然后就有些疑惑了,这些方法到底是调用几次。其实, ViewRootImpl 的performTraversals方法调用2次, View的onMeasure方法至少调用2次, onLayout方法调用2次, onDr原创 2017-01-15 20:12:09 · 797 阅读 · 0 评论 -
view的onMeasure,onLayout,onDraw源码分析
1, View三部曲在oncreate方法中加载解析完xml资源创建view对象之后,Activity中的makeVisible方法会将这些对象依次测量,确定位置并且显示在幕布上。总体的流程图如下,重点分析onMeasure,onLayout,和onDraw方法。1.1 onMeasuremeasure是测量的意思,那么onMeasure()方法顾名思义就是原创 2017-01-15 18:47:16 · 1061 阅读 · 0 评论 -
RecyclerView简单使用
1, 概述RecyclerView已经出现有两三年了,虽然没有listview使用广泛,但是RecyclerView更加灵活,实现一些功能时比listview更简单。本文主要介绍RecyclerView的一些基本功能,具体的实现。Adapter:为RecyclerView提供数据,处理每个item的显示。LayoutManager:管理RecyclerView的显示结构。ItemD原创 2017-01-15 22:05:59 · 479 阅读 · 0 评论