View 1
来源:互联网 发布:冉莹颖的实际身高知乎 编辑:程序博客网 时间:2024/06/05 21:13
App的跟节点是PhoneWindow$DecorView, DecorView是PhoneWindow下面的内部类实例。PhoneWindow$DecorView下面有三个child,分别是LinearLayout View@49da043和View@44ff410,一个表示 navigationBarBackground ,一个表示StatusBarBackground. Linearlayout下面有两个子child,分别是ViewStub实例和FrameLayout实例,FrameLayout有一个子类 Fragment(这就是平常创建项目的inflate xml最外层)
什么所有的控件都是View的实例,
onCreate() 中调用 setContentView(R.layout.main),Andorid就会从PhoneWindow 到每一层 执行 测量,布局,绘制。所有子类都 先执行 super.XXX方法
几 1
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec);
2 布局 布局 会用到@Overridepublic LayoutParams generateLayoutParams(AttributeSet attrs) { return new MarginLayoutParams(getContext(), attrs);}自定义布局
@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) { mListViews.clear(); mHieghts.clear(); // int lineWidth = 0; int lineHeight = 0; int width = getWidth(); int count = getChildCount(); List<View> mList = new ArrayList<>(); for (int i = 0; i < count; i++) { View child = getChildAt(i); MarginLayoutParams mlp = (MarginLayoutParams) child.getLayoutParams(); int childWidth = child.getMeasuredWidth() + mlp.leftMargin + mlp.rightMargin; int childHeight = child.getMeasuredHeight() + mlp.topMargin + mlp.bottomMargin;3布局完了之后 就会绘图
0 0
- View 1
- View编程(1): Window、View与setContentView()
- 自定义View-1-动态添加view
- View的事件体系(1)-View基础知识
- RUP 4+1 View
- materialized view(1)
- Qt Model/View 1
- View代码1
- android自定义View(1)
- 自定义View(1)
- Android 自定义View (1)
- 自定义View(1)
- 自定义view(1)
- Android 自定义View(1)
- android自定义view(1)
- 自定义view 1 ---函数
- 自定义View(1)
- Qt Model-View (1)
- golang之cgo一---go与C基本类型转换
- Hibernate的简单使用
- iOS开发UI篇—CAlayer(自定义layer)
- 【原创】ThinkpadX240更换三键触摸板注意事项
- javaScript的函数,事件,BOM,DOM
- View 1
- Mysql-basic-1
- GitLab_本地GitLab服务器搭建
- (二)装饰者模式
- 通讯录的实现
- package day1501; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; im
- 关于对碰奖的解析!
- 自定义View属性设置,项目引用和Library引用区别
- java常用类