Android笔记2——Android的用户界面1
2015-05-17 16:19
113 查看
一、概述
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应用的绝大部分组件都位于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侧滑菜单(DrawerLayout使用)
- Android开发笔记之二 用户界面概述
- Android笔记4——Android的用户界面3
- [学习笔记]用户界面优化之Android ViewPager
- Android用户界面设计——关于布局的学习笔记
- android 用户界面笔记之Button和ImageButton实现按钮响应事件两种方法
- Android个人笔记 - Google Android揭秘_第三章:用户界面
- android开发学习笔记——用户界面View的五大布局
- Android疯狂讲义学习笔记——XML布局和java代码共同控制用户界面组件
- Android入门学习笔记之人机用户界面
- [学习笔记]用户界面优化之Android SurfaceView的使用
- [学习笔记]用户界面优化之Android Fragment
- 【Android笔记】入门篇01:快速设计用户界面
- 笔记:Android用户界面 -- (一)
- [学习笔记]用户界面优化-Android自定义视图动画
- 笔记:Android用户界面--(二)
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- Android开发笔记(一百三十五)应用栏布局AppBarLayout
- BUG笔记:Android原生浏览器不认负百分数margin致Foundation Orbit往右滑动动画出错
- Android(java)学习笔记181:Android 服务的应用,在Activity中实现背景音乐播放