资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Android UI之界面布局基础篇回顾与作业点评 如何动态加载布局和组件? TextView,EditView有哪些特色应用? Toast如何使用 ? Android中的调试手段有哪些?本章任务 使用几种不同的布局完成登录页面本章目标 熟练掌握Android的常用布局 熟练掌握Android的嵌套布局 熟练掌握构建复杂页面用户界面基础 用户界面(User Interface,UI)是系统和用户之间 进行信息交换的媒介,实现信息的内部形式与人类 可以接受形式之间的转换在计算机出现早期,批处理界面(1946-1968)和命令行 界面(1969-1983)得到广泛的使用目前,流行图像用户界面(Graphical User Interface, GUI),采用图形方式与用户进行交互的界面未来的用户界面将更多的运用虚拟现实技术,使用户能够 摆脱键盘与鼠标的交互方式,而通过动作、语言,甚至是 脑电波来控制计算机用户界面基础 设计手机用户界面应解决的问题需要界面设计与程序逻辑完全分离,这样不仅有利于他们 的并行开发,而且在后期修改界面时,也不用再次修改程 序的逻辑代码根据不同型号手机的屏幕解析度、尺寸和纵横比各不相同 ,自动调整界面上部分控件的位置和尺寸,避免因为屏幕 信息的变化而出现显示错误能够合理利用较小的屏幕显示空间,构造出符合人机交互 规律的用户界面,避免出现凌乱、拥挤的用户界面Android已经解决了前两个问题,使用XML文件描述用户 界面;资源资源文件独立保存在资源文件夹中;对界用户 面描述非常灵活,允许不明确定义界面元素的位置和尺寸 ,仅声明界面元素的相对位置和粗略尺寸用户界面基础 Android用户界面框架Android UI Framework采用视图树View Tree模型 Android用户界面框架中的界面元素以一种树型结构组织在 一起,称为视图树 Android系统会依据视图树的结构从上至下绘制每一个界面 元素。每个元素负责对自身的绘制,如果元素包含子元素, 该元素会通知其下所有子元素进行绘制用户界面基础 视图组件View在Android当中View类是最基本的一个UI类,基本上所 有的高级UI组件都是继承View类而实现的 一个视图(View)在屏幕上占据了一块矩形区域,它负责渲染 这块矩形区域 视图组件ViewGroup就像它的名字显示的意义一样,Viewgroup的作用就是 View的容器,它负责对添加进Viewgroup的这些View进 行布局当然一个Viewgroup也可以加入到另一个Viewgroup里 边。因为Viewgroup也是继承于View.Viewgroup类,在 每个Viewgroups类中都会有一个嵌套类,这个嵌套类的 属性中定义了子view的位置和大小用户界面基础 Activity代表的是显示给用户的窗口或屏幕Android中定义Activity定义使用一个view 和viewgroup 的树状节点它要显示一个用户界面就需要给一个Activity分配一个 View或者布局 setContentView()方法 界面布局界面布局Layout是用户界面结构的描述,定义了界面中 所有的元素、结构和相互关系声明Android程序的界面布局有两种方法 使用XML文件描述界面布局 在程序运行时动态添加或修改界面布局 用户既可以独立使用任何一种声明界面布局的方式,也可以 同时使用两种方式用户界面基础 使用XML文件声明界面布局的特点将程序的表现层和控制层分离 在后期修改用户界面时,无需更改程序的源代码 用户还能够通过可视化工具直接看到所设计的用户界 面,有利于加快界面设计的过程,并且为界面设计与 开发带来极大的便利性用户界面基础 视图组件ViewGroup它是一个抽象类,也是其他容器类的基类。在下面我们会 介绍它的一个些实现类 使用XML文件声明界面布局的特点将程序的表现层和控制层分离 在后期修改用户界面时,无需更改程序的源代码 用户还能够通过可视化工具直接看到所设计的用户界 面,有利于加快界面设计的过程,并且为界面设计与 开发带来极大的便利性可视化编辑器双击建立的/res/layout下的布局文件,如:main.xml, Eclipse将打开界面布局的可视化编辑器布局和控件资源配置清单可视化界面能够在可视化编辑器和XML文 件编辑器之间切换布局组件Layout 布局组件LayoutViewGroup是一个抽象类,也是其他容器类的基类。下 面是它的一些实现类 线性布局LinearLayout 框架布局 FrameLayout 相对布局 RelativeLayout 表格布局 TableLayout 绝对布局 AbsoluteLayoutAndroid的布局管理器在xml中是以标签的形式出现的, 并且需要为这些标签设置一个android的命名空间 xmlns:android=http:/schemas.android.com/apk/res/a ndroid 这样使得Android中各种标准属性能在文件中使用 线性布局LinearLayout线性布局(LinearLayout)是一种重要的界面布局 中,也是经常使用到的一种界面布局在线性布局中,所有的子元素都按照垂直或水平的顺 序在界面上排列,不会换行 如果垂直排列,则每行仅包含一个界面元素 如果水平排列,则每列仅包含一个界面元素 属性android:orientation Horizontal vertical线性布局LinearLayout线性布局(LinearLayout)在线性布局中,有个非常重要的属性gravity,这个属 性用来指定组件内容的对齐方式 gravity的中文意思就是”重心“,就是表示view横向和纵向的停 靠位置 ,支持top、bottom、left、right、center_vertical、 fill_vertical、center_horizontal、fill_horizontal、center、fill 、 clip_vertical、clip_horizontal几个属性值。 可以同时指定多种对齐方式,如left|center_vertical表示出 现 在屏幕左边,并且垂直居中 线性布局LinearLayout线性布局(LinearLayout)在线性布局中,LinearLayout有两个非常相似的属性 :android:gravity与android:layout_gravity android:gravity:是对view控件本身来说的,是用来设置view 本身的内容应该显示在view的什么位置,默认值是左侧 。 android:layout_gravity:是相对于包含该元素的父元素来说 的,设置该元素在父元素的什么位置 线性布局LinearLayout线性布局(LinearLayout)在线性布局中,LinearLayout还支持为其包含的 widget或者是container指定填充权值layout_weight 默认的 weight 值为0 ,表示按照widgets或者是containers实 际大小来显示,若高于0的值,则将 Container剩余可用空间 分割,分割大小具体取决于每一个widget或者是 container的 layout_weight及该权值在所有widgets或者是containers中的 比例 线性布局LinearLayout线性布局(LinearLayout)动态创建布局 在将每一个View加入到这个Layout里边的时候,我们会传传 递一组值,这组值封装在LayoutParams这个类当中。在显示 这个View的时候,它的容器会根据传进来的LayoutParams进 行计算,来确认这个View显示的大小和位置 layout_width - 宽 layout_height - 高/ 定义布局管理器的指定宽和高 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);layout.setOrientation(LinearLayout.VERTICAL);嵌套布局嵌套布局(Nested Layout)界面上放四个按钮,以2*2的形式存在 一个LinearLayout嵌套两个LinearLayout,外层的 LinearLayout用纵向布局,而内部的用横向布局。 练习线形嵌套登录页面需求说明:使用线形布局按照如图 要求完成效果完成时间:20分钟共性问题集中讲解n常见调试问题及解决办法n代码规范问题共性问题集中讲解表格布局TableLayout表格布局(TableLayout)也是一种常用的界面布局,它将屏幕划分网格,通过 指定行和列可以将界面元素添加的网格中 网格的边界对用户是不可见的 表格布局还支持嵌套,可以将另一个表格布局放置在前一个 表格布局的网格中,也可以在表格布局中添加其他界面布局 ,例如线性布局、相对布局等等表格布局示意图表格布局TableLayout表格布局(TableLayout)一个表格布局由若干个标签组成 每个都会定义一行,每行可以有0或多个单元格 可以向单元格中添加组件,每添加一个组件表格就增加一列 如果直接向TableLayout添加组件,组件将直接站一行表格布局TableLayout表格布局(TableLayout)TableLayout可以对列进行隐藏,压缩,拉伸 android:shrinkColumns设置可以收缩的列号 android:stretchColumns设置 可以伸展的列号 android:collapseColumns设置表格的列是否隐藏 需要注意的是列号从0开始,也可以用”*”表示指定所有的列,多 列用逗号隔开 “0,1,2“ android:collapseColumns=“1“android:stretchColumns=“1,2“练习表格布局登录页面需求说明:放置两个表格实现如图效果完成时间:20分钟共性问题集中讲解n常见调试问题及解决办法n代码规范问题共性问题集中讲解绝对布局AbsoluteLayout绝对布局AbsoluteLayout通过指定界面元素的坐标位置,来确定用户界面的整体布局绝对布局是一种不推荐使用的界面布局,因为通过X轴和Y 轴确定界面元素位置后,Android系统不能够根据不同屏 幕对界面元素的位置进行调整,降低了界面布局对不同类 型和尺寸屏幕的适应能力每一个界面控件都必须指定坐标X,Y,例如“确认”按钮的坐 标是(40,120),“取消”按钮的坐标是(120,120).坐标原点(0, 0)在屏幕的左上角Android中的单位Android系统支持的单位 px(像素):屏幕上的点,pixels(像素)不同设备显示效果相同 in(英寸):长度单位 mm(毫米):长度单位 pt(磅):1/72英寸 dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在 每英寸160点的显示器上,1dp = 1px dip:与dp相同, device independent pixels(设备独立像素). 不同设备有不同的显示效果,多用于Google示例中。 sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体 大小首选项进行缩放.scaled pixels(放大像素). 主要用于字 体显示best for textsize。 尽量使用dp作为空间大小单位,sp作为和文字相关大小单位 相对布局Relat
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号