分析办法
自定义View的分类
- 对现有的View的子类进行扩大,例如复写onDraw办法、扩大新功能等。
- 自定义组合控件,把常用一些控件组合起来以便利应用。
- 直接持续View实现View的完全定制,须要完成View的测量以及绘制。
- 自定义ViewGroup,须要复写onLayout完成子View地位切实其实定等工作。
View的测量-onMeasure
10、Android中数据常见存储方法
- 文件(包含XML、SharePreference等)
- 数据库
- Content Provider
- 保存在收集
View的测量最终是在onMeasure办法中经由过程setMeasuredDimension把代表宽高两个MeasureSpec设置给View,是以须要控制MeasureSpec。MeasureSpec包含大年夜小信息以及模式信息。
MeasureSpec的三种模式:
- EXACTLY模式:精确模式,对应于用户指定为match_parent或者具体大年夜小的时刻(实际上指定为match_parent本质上是指定大年夜小为父容器的大年夜小)
- AT_MOST模式:对应于用户指定为wrap_content,此时控件尺寸只要不跨越父控件许可的最大年夜尺寸即可。
- UNSPECIFIED模式:不指定大年夜小的测量模式,这种模式比较罕用
下面给出模板代码:
- public class MeasureUtils {
- /**
- * 用于View的测量
- *
- * @param measureSpec
- * @param defaultSize
- * @return
- */
- public static int measureView(int measureSpec, int defaultSize) {
- int measureSize;
- //获取用户指定的大年夜小以及模式
- int mode = View.MeasureSpec.getMode(measureSpec);
- int size = View.MeasureSpec.getSize(measureSpec);
- //根据模式去返回大年夜小
- if (mode == View.MeasureSpec.EXACTLY) {
- //精确模式(指定大年夜小以及match_parent)直接返回指定的大年夜小
- measureSize = size;
- } else {
- //UNSPECIFIED模式、AT_MOST模式(wrap_content)的话须要供给默认的大年夜小
- measureSize = defaultSize;
- if (mode == View.MeasureSpec.AT_MOST) {
- //AT_MOST(wrap_content)模式下,须要取测量值与默认值的最小值
推荐阅读
Github年度报告盘点:TensorFlow无疑是最大赢家!
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读
本文标题:Android面试17个知识点总结宝典
地址:http://www.17bianji.com/lsqh/39609.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示