Android笔记2——Android的用户界面1
来源:互联网 发布:伦纳德数据 编辑:程序博客网 时间:2024/04/30 00:57
一、概述
Android应用的绝大部分组件都位于Android.widget包及其子包、Android.view包及其子包中。
Android的所有UI组件都是View类的子类,view类有点类似Swing中的JPanel,你可以在上面绘制图形以显示在屏幕上,也可以定义动作与用户交互。
除了基本的UI组件,还有一类组件是用来容纳其他组件的,比如布局管理器。这些组件都是ViewGroup的子类。ViewGroup类也是View类的子类。
所以Android的界面实际上就是由View类对象和ViewGroup类对象构成的。其基本结构如下图所示
<图片:ViewGroup>
二、布局管理器
为适应不同的屏幕尺寸,Android的UI界面很少直接使用,都是放置在不同的布局管理器里的。
这样,当屏幕尺寸变化时,组件之间的相对位置会发生相应的变化。具体如何变化,可以由布局管理器来控制。
2.1 使用xml布局文件定义UI界面
Android可以和Java一样,在程序代码中定义、添加组件,但这样做会使得代码臃肿,难以阅读。
大量视图控制逻辑的代码和程序流程的代码耦合在一起,使得修改UI界面和流程都变得痛苦。
Android推荐使用xml布局文件进行UI界面的设计。通过在xml文件中按层次定义各种标签,可以逐步把UI界面搭建起来。
在代码中只需要将xml布局文件载入进来,就可以生成UI界面。这样,就把流程代码和视图控制逻辑代码有效地解耦了,方便程序修改。
xml中的各种属性定义本质上还是通过控制View和ViewGroup的类属性来定义UI界面的,ViewGroup还有两个内部类
ViewGroup.LayoutParams和ViewGroup.MarginLayoutParams,用于辅助控制布局。这两个类也提供了很多xml属性。
所以Android中用户界面设计的一般流程是:
a. 在res/layout目录下定义布局xml文件
b.在Activity的OnCreate方法中使用以下代码将布局文件载入
setContentView(R.layout.<布局文件的名字>);
c.如果要获取UI界面中的某个组件,以控制其行为,则使用以下代码
findViewById(R.id.<组件id>)
因此,需要后期在代码中获取的组件,都必须在xml文件中指定一个id。另外findViewById得到的是View类对象,
对于具体的组件,需要进行一次类型的强制转换。
2.2 Android中的布局管理器
Android中的布局管理器有线性布局、相对布局、表格布局、网格布局、帧布局和绝对布局。它们都是ViewGroup的子类。
其中表格布局还是线性布局的子类
<图片:布局管理器类图>
线性布局就是将UI组件按添加顺序从左到右或者从上到下依次排列,通过一些xml属性,可以控制对齐方式等。
表格布局是线性布局的子类,采用行、列的形式来管理UI组件。表格布局不需要明确地声明行、列数目,
而是可以通过添加组件的过程自动计算出行数和列数。
相对布局是通过定义组件相对于另一个组件或父组件的位置关系,来定义UI界面。
帧布局是根据添加的顺序,将组件一个一个地叠加在一起。
网格布局是Android4.0新增的一个布局。它把整个容器划分成rows*columns个网格,每个网格可以放置一个组件。
除此之外,也可以设置一个组件占据多个相邻网格。
绝对布局就是将组件的X,Y坐标设定死,一般很少使用。
三、TextView类及其子类
从外形上看,TextView组件就是在一个区域内绘制了文本的组件。很多组件其实都是类似的外观,比如按钮、文本编辑框、数字时钟等,
因此这些组件都可以由TextView派生出来
<图片: TextView类及其子类>
TextView类提供了很多属性,用于控制文本、背景的外观。
四、ImageView及其子类
从外观上看,ImageView就是在一个区域内绘制了图片的组件。
实际上ImageView里不仅可以绘制图片,任何Drawable对象都可以绘制在ImageView里。
Drawable是Android提供的一个抽象基类,代表了“可以被绘制出来的某种东西”,Drawable包含了大量子类,比如BitmapDrawable、
ColorDrawable和ShapeDrawable等。
ImageView的子类有ImageButton、ZoomButton和QuickContactBadge。
<图片: ImageView及其子类>
- Android笔记2——Android的用户界面1
- Android笔记3——Android的用户界面2
- Android笔记4——Android的用户界面3
- Android用户界面设计——关于布局的学习笔记
- Android学习笔记(一)——用户界面
- Android学习笔记8——用户界面之Activty
- Android学习笔记12——用户界面之Loader类
- Android学习笔记(一)—用户界面设计
- Android学习笔记(二)—用户界面设计
- android开发学习笔记——用户界面View的五大布局
- Android学习笔记10——用户界面之Fragments(2)
- Android学习笔记9——用户界面之Fragments(1)
- Android的用户界面
- 设计Android的用户界面
- 笔记:Android用户界面 -- (一)
- 笔记:Android用户界面--(二)
- Android 用户界面【level 1】
- 【Android develop】【学习笔记004】构建简单的用户界面
- Android 判断手机是否联网时异常闪退
- 威威猫系列故事——打地鼠(HDU-4540)
- Triangle -- leetcode
- Cocosd-x(3.4版本)移植Android平台
- java的反射类讲解
- Android笔记2——Android的用户界面1
- Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法
- 1003. Sorting
- 1626 - Brackets sequence
- 数据库笔记(自己学习过程中整理)
- honey----- jstl中<c:forEach>的用法【没有试验过里面的例子,仅供参考】
- Maven
- Python学习笔记(五)
- PL/SQL在取行、取列、取行列以及分页中的应用