LayoutInflater.Factory&Factory2
LayoutInflater.Factory&Factory2 LayoutInflater 中的 Factory/Factory2 在 LayoutInflater 创建 View 时,会调用 tryCreateView() 方法,会通过我们设置的工厂来创建对象。如果我们设置了 LayoutInflater.Factory2 会优先通过 Factory2,否则通过 Layout...
LayoutInflater.Factory&Factory2 LayoutInflater 中的 Factory/Factory2 在 LayoutInflater 创建 View 时,会调用 tryCreateView() 方法,会通过我们设置的工厂来创建对象。如果我们设置了 LayoutInflater.Factory2 会优先通过 Factory2,否则通过 Layout...
LayoutInflater 源码解析 LayoutInfleter 获取 getSystemService() LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE) LayoutInflater.from(Con...
AsyncLayoutInflater AsyncLayoutInflater 用于异步布局加载 介绍 Android 在 View 的使用中,过多的布局文件 inflate 影响性能,尤其在一些滚动列表、样式种类很丰富的场景下,inflate 次数相对较多,整体 inflate 耗时就会增加,导致滚动过程卡顿。 所以,需要 View 的异步 inflate,甚至 View 的全局缓...
emoji 所有 emoji 对应的 unicode:http://www.unicode.org/emoji/charts/full-emoji-list.html 什么是 Emoji? Emoji 是可以被插入文字中的图形符号,它是一个日本语,e 表示 “ 绘 “,moji 表示 “ 文字 “ ,连在一起就是 “ 绘文字 “,它最早是用于我们发短信来增强用户的一个体验,200...
自定义控件技巧 自定义 ViewGroup 自定义 ViewGroup 需要实现相关的 LayoutParams 方法 onMeasure 多次调用 onMeasure 可能会调用多次,具体看父布局;如果存在 onMeasure 变量赋值的,需要在 onMeasure 清空 setWillNotDraw 设置的条件 默认: ViewGroup 默认调用 setWillNot...
自定义控件基础 自定义 View 的基本方法 自定义 View 的最基本的三个方法分别是: onMeasure()、onLayout()、onDraw(); View 在 Activity 中显示出来,要经历测量、布局和绘制三个步骤,分别对应三个动作:measure、layout 和 draw。 onMeasure 测量 onMeasure() 决定 View 的大小; onLa...
自定义属性 自定义属性步骤 系统自带的 View 可以在 xml 中配置属性,对于写的好的自定义 View 同样可以在 xml 中配置属性,为了使自定义的View 的属性可以在 xml 中配置,需要以下 4 个步骤: 在 attrs.xml 通过 <declare-styleable> 为自定义 View 添加属性 在 xml 中为相应的属性声明属性值(注意 na...
View 相关问题 measure 自定义 view 时,super.onMeasure 一定需要调用吗?为什么? 不一定 最顶层的 View,谁 measure 了?顶层的 MeasureSpec 怎么来的? ViewRootImple 的 performMeasure();顶层的 MeasureSpec 通过 ViewRootImpl#getRootMeasureSpec...
clipToPadding & clipChildren clipChildren 是否限制子视图在其范围内,简单理解,就是其子 view 是否可以在超出自身原本的范围绘制 “ 突出 “ 的部分,默认值为 true。 clipChildren 作用于爷 ViewGroup,用于限制 “ 爷爷 ViewGroup 的孙子 View” 是否可以超出 “ 孙子 View 的...
坐标系&View 位置&坐标信息 Android 坐标系 Android 屏幕坐标系 Android 坐标系可以看成是物理存在的坐标系,也可以理解为绝对坐标,以屏幕为参照物,就是以屏幕的左上角是坐标系统原点(0,0),原点向右延伸是 X 轴正方向,原点向下延伸是 Y 轴正方向。比如系统的 getLocationOnScreen(int[] location) 实际上...