文章原文:https://www.cnblogs.com/wolipengbo/p/3336194.html?utm_source=tuicool
返回知识列表:Android知识列表
一、视图组件与容器组件
Android应用的绝大部分UI组件都放在android.widget包及其子包、android.view包及其子包中,Android应用的所有UI组件都继承了View类。
View类有重要的子类:ViewGroup,但ViewGroup通常作为其他组件的容器使用。
Android的所有UI组件都是建立在View、ViewGroup基础之上的,Android采用了“组合器”设计模式来设计View和ViewGroup:ViewGroup是View的子类,因此ViewGroup也可被当成View使用。对于一个Android应用的图形图形用户界面来说,ViewGroup作为容器来盛装其他组件,而ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGroup组件。
图2.1显示了Android图形用户界面的组件层次图。
View
View是Android中图形界面的基类,提供了可视化界面的展示。Android的图形界面可分为三层:底层是Activity;Activity上面是Window;Window上面是View。(是吗?嘿嘿)任何一个View对象都继承android.view.View类。它是一个存储有屏幕上特定的一个矩形布局和内容属性的数据结构。作为一个基类,View类为Widget服务, Widget(窗口小部件)则是一组用于绘制交互屏幕元素的完全实现子类。
ViewGroup
View分为View和ViewGroup。View是基本的控件;
ViewGroup是布局控件。
ViewGroup是一个android.view. ViewGroup类的对象。它的功能是装载和管理一组下层的View和其他的ViewGroup,作为一个基类, ViewGroup为Layout服务。ViewGroup的子类是Layout。
P43, 因为ViewGroup是一个抽象类,因此实际使用中通常总是使用ViewGroup的子类来作为容器,例如各种布局管理器。
二、使用XML布局文件控制UI界面
Android推荐使用XMl布局文件来控制视图,这样不仅简单、明了,而且可以将应用的视图控制逻辑从Java代码中分离出来,放入XML文件中控制,从而更好的体现MVC原则。
当我们在Android应用的res/layout目录下定义一个主文件名任意的XML布局文件之后(R.java会自动收录该布局资源),Java代码可通过如下方法在Activity中显示该视图:
setContentView(R.layout.<资源文件名>)
当在布局文件中添加多个UI组件时,都可以为该UI组件指定android:id属性,该属性的属性值代表该组件的唯一标识。接下来如果希望在Java代码中访问指定UI组件,可通过如下代码来访问它:
findViewById(R.id.<android.id.属性值>)
一旦在程序中获得指定UI组件之后,接下来就可以通过代码来控制UI组件的外观行为啦,包括为UI组件绑定事件监听器等。
P44, 这里插一句,查找UI组件是在你加载的布局文件里找。如果你setContentView(R.layout.A) ,只能在R.layout.A 布局文件里找它相应的UI组件。