自定义view中一些方法的说明明
1.onFinishInflate()
回调方法,当应用从布局文件中加载该view并构建界面之后,就会回调这个方法
2.onMeasure(int,int)
测量该view以及它的子view的宽高(子view只是相对于viewgroup)
这里要注意的是:获取的宽和高,需要通过MeasureSpec这个类来转换,
因为onMeasure返回的是一个32位的int值,高2位是测量的模式,低30位是测量的大小
它常用的三个函数:
1 static int getMode(int measureSpec):根据提供的测量值(格式)提取模式
2 static int getSize(int measureSpec):根据提供的测量值(格式)提取大小值(这个大小也就是我们通常所说的大小)
3 static int makeMeasureSpec(int size,int mode):根据提供的大小值和模式创建一个测量值(格式)
三种测量模式:
(1) MeasureSpec.EXACTLY
layout_width 或者 layout_height 设置为类似于“100dp” 或者 match_parent 使用的是这个模式
(2)MeasureSpec.AT_MOST
layout_width 或者 layout_height 设置为 wrap_content 使用的是这个模式
(3) MeasureSpec.UNSPECIFIED
他不指定大小测量模式,View像多大就多大,通常情况下在绘制自定义view时才会使用。
3.onLayout(boolean,int,int,int,int)
当这个组件要分配它的子view的位置和大小的时候,就需要用到这个方法
4.onSizeChanged(int,int,int,int)
当组件的大小发生变化的时候会回调这个方法
5.onDraw(Canvas)
当组件要绘制内容的时候就会回调这个方法;这里需要注意的是:当想要刷新view的效果时,可以调用方法invalidate() 就会重新回调onDraw(Canvas)方法。
6.onKeyDown(int,KeyEvent)
当手指从某个键被按下时触发这个方法(软件键盘上的按键,还有功能键)
7.onKeyUp(int,KeyEvent)
当手指某个键上离开的时候触发这个方法
8.onTrackballEvent(MotionEvent)
当发生轨迹球事件是触发这个方法(这个轨迹球是个什么东西我也不了解,百度资料也不多,感觉像是游戏中的操作方向的那个球球)
9.onTouchEvent(MotionEvent)
当触摸屏幕时触发的回调方法
10.onWindowFocusChanged(boolean)
当组件得到和失去焦点的时候触发这个方法
11.onAttachedToWindow()
当把该组件放入某个窗口时触发该方法,而他触发的时机时在activity的onResume()方法之后
这个可以通过打印log日志查看出来当然具体的可以看这篇博客
这是从那里coyp的图片:
查看博客
![这里写图片描述](https://img-blog.csdn.net/20170309233641930?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3o3NTQxNTU1MjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
12.onDetachedFromWindow()
和上面的方法相反,是从某个窗口上分离时触发这个方法
13.onWindowVisibilityChanged(int)
当包含该组件的窗口发生可见性变化时触发这个方法