本着针对面试,不负责任的态度,写下《面试总结》系列。本系列记录面试过程中各个知识点,而不是入门系列,如果有不懂的自行学习。
自定义View三种方式,组合现有控件,继承现有控件,继承View
本文只针对继承View的方式,另两种自行学习。
1. 重写方法
onMeasure、 onLayout、onDraw、onTouchEvent
onMeasure
可能多次触发,在measure的过程中注意MeasureSpec,specMode、specSize
讲到LinearLayout、RelativeLayout源码
MeasureSpec
MeasureSpec,specMode、specSize
EXACTLY
表示父布局希望子布局的大小应该是由specSize的值来决定的,系统默认会按照这个规则来设置子布局的大小,开发人员当然也可以按照自己的意愿设置成任意的大小。
AT_MOST
表示子布局最多只能是specSize中指定的大小,开发人员应该尽可能小得去设置这个布局,并且保证不会超过specSize。系统默认会按照这个规则来设置子布局的大小,开发人员当然也可以按照自己的意愿设置成任意的大小。
UNSPECIFIED
表示开发人员可以将布局按照自己的意愿设置成任意的大小,没有任何限制。这种情况比较少见,不太会用到。
childParams/parentMode
EXACTLY
AT_MOST
UNSPECIFIED
dp/px
EXACTLY(childsize)
<