概述
标注:原文出自 逆流的鱼yuiop,根据自己的理解重新写了一份
一、 view和activity的区别
Android的四大组件之一activity是四大组件中唯一一个用来和用户进行交互的组件。可以说activity是Android的视图层。
再细化,activity相当于视图层中的控制层,是用来控制和管理view的,真正用来处理事件的实际上是view。
每个activity内部都有一个window对象,Window对象包含了一个DecorView(实际上是FrameLayout),我们通过serContentView给activity设置显示的view,实际上都是加到了DecorView中。
二、 view有哪些?
Android 提供了种类丰富的view来用对各种需求,例如:提供文字的TextView,提供点击事件的Button,提供显示图片的ImageView,还有各种布局文件,例如:Relativilayout,Linerlayout等,都是继承自View。
三、 ViewGroup是什么?
ViewGroup继承自view,实现了两个接口àViewParent和ViewManger。
ViewManger提供了三个方法,addView(添加),removeView(删除)和UpdateViewLayout(更新)布局。
ViewParent提供了一系列操作子View的方法,例如焦点的切换,显示区域的控制等等。
四、 为什么Google产生viewGroup?
View很多事都能做,包括显示复杂的界面,只需要设计一个复杂的view即可。例如短信通知的icon,一个可以显示文字也可以显示图片的view,用draw方法可以轻松达到这个效果,但是这样复杂,重用性差,所以,我们可以组合ImageView和TextVIew一起用,此时,需要一个容器ViewGroup来装这两个view。
ViewGroup和View最大的不同是可以组合多个view,多个view组合在一起如何摆放就是VIewGroup需要解决的问题。
五、 View的层级结构是什么?
我们平时看到的界面都是一个ViewGroup作为根View,通过往viewGroup中添加子View(可以是view,也可以是viewGroup),来组合出各具特色的界面。
这种从根到叶的组合方式,我们可以看成一个view树,(类似于XML),view的显示和事件处理都依赖于这个View树。
绘制和事件处理的起始点,都是从根view开始一级一级的往下传递。我们从任意一层发起绘制,都将反馈到根view,然后从上往下传递。之前我们说过根view就是Window中的DecorView,也就是一FrameLayout。
六、View的onMeasure()/onLayout/onDraw()方法做了什么?
(1) Measure侧量一个View的大小
(2) Layout摆放一个View的位置
(3) Draw画出一个View的显示内容
其中Measure和Layout方法都是final的,无法重写,虽然draw不是final的,但是也不建议重写该方法。这三个方法都已经写好了view的逻辑,如果想实现自身的逻辑,而又不破坏view的工作流程,可以 重写 onMeasure() 、 onLayout() 、 onDRaw()方法。最后
以上就是苗条母鸡为你收集整理的Android View框架总结(一)的全部内容,希望文章能够帮你解决Android View框架总结(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复