第2章 Android应用的界面编程-【千锋教育】Android从入门到精通
2023-03-21
|
48页
|
226人阅读
|
0人下载
教辅
内容正文:
第2章 Android应用的界面编程
界面编程和视图
布局管理器
几组重要的UI组件
了解界面编程和视图
掌握两种重要的Adapter用法
掌握Android界面的几种布局方式
掌握常用的集中UI组件
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
2.1
界面编程和视图
2.1.1
视图组件和容器组件
2.1.2
使用XML布局文件控制UI界面
2.1.3
在代码中控制UI界面
2.1.4
自定义UI组件
目录
Contents
初心至善 匠心育人
2.1.1 视图组件和容器组件
Android应用的绝大多数UI组件都是放在Android.widget包及其子包、Android.view包及其子包中。值得注意的是,Android中所有的组件都是继承了View类,View组件代表一个空白的矩形区域。View类还有一个重要的子类ViewGroup,但ViewGoup类经常作为其他组件的容器使用。
Android的所有UI组件都建立在View、ViewGroup基础之上,它们的组织结构如图所示。
初心至善 匠心育人
2.1.1 视图组件和容器组件
在第1章中提到,Android讲究逻辑层和视图层分离,开发中一般不在Activity中直接编写界面,而是在布局文件中编写。Android中所有组件都提供了两种方式来控制组件的运行:
在XML布局文件(即前面说的layout文件)中通过XML属性进行控制。
在Java代码(一般是指Activity)中通过调用方法进行控制。
不管使用哪种方式,其本质和显示出来的效果是一样的。对于View类而言,由于它是所有UI组件的基类,所以它包含的XML属性和方法是所有UI组件都可以使用的。而ViewGroup类虽然继承了View类,但由于它是抽象类,因此实际使用中通常只是用ViewGroup的子类作为容器。下面来详细讲解两种控制UI组件的方式。
初心至善 匠心育人
2.1.2 使用XML布局文件控制UI界面
Android推荐使用这种方式来控制视图,因为这样不仅简单直接,而且将视图控制逻辑从Java代码中分离出来,单独在XML文件中控制,更好地体现了MVC原则。
在第1章介绍项目的结构目录时,布局文件是放在app\src\main\res\layout文件夹下面,然后通过Java代码中setContentView()方法在Activity中显示该视图的。
在实际开发中,当遇到有很多UI组件时(实际上这种情况很常见),各个组件会通过android:id属性给每个组件设置一个唯一的标识。当需要在代码中访问指定的组件时(例如设置单击事件),就可以通过id值,利用方法findViewById(R.id.id值)来访问。
初心至善 匠心育人
2.1.2 使用XML布局文件控制UI界面
在设置UI组件时有两个属性值最常用:android:layout_height、android:layout_width,这两个属性支持两种属性值:
(1)match_parent:指定子组件的高度和宽度与父组件的高度和宽度相同(实际还有填充的空白距离)。
(2)wrap_content:指定组件的大小恰好能包裹它的内容。
Android机制决定了UI组件的大小不仅受它实际宽度和高度的控制,还受它所在布局的高度和宽度控制,所以在设置组件的宽高时还要考虑布局的宽高。
其实在XML文件中编写界面还有很多的属性,比如gravity、LinearLayout中的orientation、RelativeLayout中的centerInParent属性等等,这些属性在之后的内容中都会讲到。
初心至善 匠心育人
2.1.3 在代码中控制UI界面
虽然Android中推荐使用XML方式来控制UI界面,但是有时碰到一些特殊情况,例如只需要一个组件时,在代码中采用new的方式比较合适。
下面来看一个完全由代码控制的UI界面的简单应用,具体示例代码如下:
初心至善 匠心育人
2.1.3 在代码中控制UI界面
上面代码的中使用的三个组件LinearLayout、textView、button都是使用关键字new创建的,setContentView()方法加载new 出来的LinearLayout作为布局“容器”,再通过LinearLayout类的addView()方法把TextView和Button添加进“容器”,这样就组成如图所示界面。
初心至善 匠心育人
2.1.3 在代码中控制UI界面
可以看出每new一个组件都会传入一个this参数,这是由于创建UI组件时需要传入一个Context类型的参数,Context代表访问Android应用环境的全局信息的API。让UI组件持有一个Context参数,可以让这些UI组件通过
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。