View的生命周期
来源:互联网 发布:mac快捷键大全 编辑:程序博客网 时间:2024/06/18 11:19
View的生命周期
(1)创建对象
获取一个View的两种方法: new对象,加载布局文件.所以在自定义View时,就要提供无参和带参的构造方法.流程方法:*构造方法*onFinishInflate() : 只有布局的方式才会调用*Activity的onResume()方法执行后才会执行下面的流程*onAttachedToWindow():都会调用
(2)测量
计算当前视图的宽和高*流程方法:*measure():系统在此方法中测量当前视图的宽高,此方法不能重写,final修饰*onMeasure():系统计算出控件宽高后,调用此方法.重写此方法,可以根据自己的需要测量数据,并保存数据setMeasuredDimension()*****测量这里有很多内容可以琢磨,我这里只是分享View的生命周期,因此不做过多的叙述.
(3)布局
作用:确定视图的坐标流程方法:layout(l,t,r,b):不能重写,设置当前视图的位置onLayout():要重写,设置当期视图子视图的位置,该方法是在layout中被调用,视图的位置变化或者强制要求重新布局就会调用requestLayout():会重新布局layout()
(4)绘制
作用:画出视图的样子流程方法:draw()一般不用重写,绘制视图通用的部分onDraw():重写此方法,绘制自己需要的样式强制重绘invalidate():只能在主线程执行 draw()onDraw()postInvalidate():主线程和子线程都可以执行
(5)事件处理
(6)销毁
当视图对象被移除(用父视图调用remove(view))或者Activity销毁,会调用onDetachedFromWindow()注意:如果要在创建阶段获取控件的宽高,可以提前测量,调用measure(0,0)如果要在Activity中测量得到视图的宽高,要将测量代码放在Activity的生命周期onResume()方法的后面,最好设置点击事件来完成!final Button btn = (Button) findViewById(R.id.btn);//获取视图树观察者ViewTreeObserver viewTreeObserver = btn.getViewTreeObserver();//添加全局的布局监听viewTreeObserver.addOnGlobalLayoutListener(newViewTreeObserver.OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { int height = btn.getMeasuredHeight(); int[] ints = new int[2]; btn.getLocationOnScreen(ints ); Log.i(TAG, "onCreate: x: "+ints[0]+" , y : "+ints[1]+" , height :"+height); Log.i(TAG, "onCreate: statusHeight :"+(ints[1]-height/2)); } });
阅读全文
0 0
- View Controller的生命周期
- View的生命周期
- android View的生命周期
- View Controller 的生命周期
- Android View 的生命周期
- Android View的生命周期
- android view的生命周期
- View Controller的生命周期
- view的生命周期
- android View 的生命周期
- android view的生命周期
- Android的View生命周期
- View/ViewGroup的"生命周期"
- android view的生命周期
- application、view的生命周期
- iOS view 的生命周期
- Android View的生命周期
- Android View 的生命周期
- 四种常见的 POST 提交数据方式
- vi 和 vim 的基本用法
- 北大、方正与牵牛花
- Hrbust 1214 方格取数 (双线程dp)
- CopyOnWriteArrayList
- View的生命周期
- EXE与SYS通信(直接访问模式)
- 【java】批量上传图片并回显功能
- 矩阵表示的多项式和线性空间的关系
- mysql安装图解,mysql图文安装教程详细说明
- 微信小程序学习之路(一)
- [转]quick-cocos2d-x 从2.2.5升级到3.3的体会
- 怎样用PyQt5.6 爬取网页
- EXE与SYS通信(其他模式)