android实验3界面设计:布局管理器
安卓手机课程表课程设计
安卓手机课程表课程设计一、课程目标知识目标:1. 学生能够理解并掌握安卓手机课程表应用的基本概念和功能。
2. 学生能够学习并运用课程表相关的编程知识,如界面设计、事件处理和数据存储。
3. 学生能够了解课程表应用在实际生活中的应用场景和重要性。
技能目标:1. 学生能够运用安卓开发工具,独立设计和开发一个简单的课程表应用。
2. 学生能够通过编程实现课程表的增删改查功能,并优化用户体验。
3. 学生能够运用调试工具,找出并修复程序中的错误,提高程序的稳定性和可靠性。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发他们主动探索新技术的精神。
2. 培养学生团队合作意识,学会在项目中分工与协作,共同解决问题。
3. 培养学生关注生活实际需求,将所学知识应用于解决实际问题,提高社会责任感。
课程性质:本课程为实践性课程,以项目为导向,注重培养学生的动手能力和实际应用能力。
学生特点:学生具备一定的编程基础,对安卓开发有浓厚兴趣,希望在实际项目中提高自己的编程能力。
教学要求:教师需引导学生通过自主学习、实践操作和团队合作,完成课程表应用的设计与开发。
同时,注重培养学生解决问题的能力和创新思维。
通过本课程的学习,使学生能够将所学知识内化为具体的学习成果。
二、教学内容1. 安卓开发基础与环境搭建- 课程表应用概述- Android Studio安装与使用- 安卓项目结构与基本组件2. 界面设计与布局- 布局管理器:线性布局、相对布局等- 控件使用:文本框、按钮、列表等- 课程表界面设计实例3. 事件处理与逻辑实现- 事件监听器与回调方法- 课程表功能逻辑编写:增删改查- 异常处理与提示信息4. 数据存储与读取- 文件存储:保存与读取课程数据- 数据库存储:SQLite数据库操作- 课程数据存储方式及选择5. 应用调试与优化- Logcat与调试技巧- 性能优化与用户体验- 课程表应用测试与改进6. 项目实战与团队协作- 课程表应用完整开发流程- 团队分工与合作- 项目评估与总结教学内容根据课程目标进行选择和组织,注重科学性和系统性。
[精品]02Layout布局管理器
通过如下方法访问指定的UI组件:
findViewById(R.id.<组件id>);
使用XML布局文件定义视图
Xml布局文件是android系统中定义的视图常用方法,所有的布 局文件必须包含在res/layout目录中。定义XML布局的命名和定 义注意事项如下: xml布局文件必须是以xml文件名结束,命名必须是符合java的 规范 每一个xml布局文件的根节点可以是任意的控件标签 xml布局文件的根节点必须是包含android的命名空间,命名空 间必须是 xmlns:android=/apk/res/android 为xml文件布局中的控件指定的id需要使用这样的格式: android:id=“@+id/控件名称“该标记会保存在R文件中,即生 成 android:id="@id/控件名称"表示该控件的id名称已经在R文件生 成了,可以引用了 每一个视图的id都会在R类中生成与之对应的变量,因此视图ID 的值必须是符合java规范的
为了适应各种界面风格,Android提供了6种布局,这6种布局分别是: FrameLayout(帧布局)、LinearLayout(线性布局)、RelativeLayout(相 对布局)、TableLayout(表格布局)、GridLayout(网格布局)、 AbsoluteLayout(绝对布局)(已过时,故此不讲)等。 利用以上6种布局我们可以再手机屏幕上随心所欲的摆放各种控件。 布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以 适配不同手机屏幕的分辨率,尺寸大小;
若有可能,横向拉伸以填满容器
学云 |”分隔即可 为您提供高品质课件、学习督导服务、即时答疑、知识交易平台 当需要设置多个值时,用“
安卓实验报告
安卓实验报告Android是目前全球最为流行的操作系统之一,其强大的应用程序生态系统和广泛的设备兼容性使得安卓成为开发者和用户的首选。
本文将介绍我在安卓实验中进行的一系列任务和实验结果。
实验一:安装开发环境在进行安卓开发之前,我们首先需要安装必要的开发环境。
我使用的是Android Studio,这是谷歌官方提供的开发工具,具有强大的功能和友好的用户界面。
通过安装Android Studio,我成功搭建了安卓开发环境,并进行了一些基本的配置。
实验二:创建第一个安卓应用程序根据老师的指导,我按照步骤成功创建了我的第一个安卓应用程序。
我选择了一个简单的计算器应用程序作为开始,它可以实现基本的加法和减法功能。
通过这个实验,我学会了使用Android Studio的界面设计工具和编写基本的Java代码。
实验三:UI设计和布局在这个实验中,我学习了安卓应用程序的用户界面设计和布局。
我使用了安卓提供的各种布局方式,如线性布局、相对布局和帧布局等,来设计和展示应用程序的不同界面。
通过这个实验,我对安卓界面设计的原则和技巧有了更深入的理解。
实验四:应用程序调试与测试在开发过程中,调试和测试是非常重要的环节。
通过Android Studio提供的调试工具,我能够针对应用程序中的问题进行定位和修复。
我还学会了使用模拟器和真机进行应用程序的测试,以确保应用程序的功能和稳定性。
实验五:数据库操作在这个实验中,我学习了如何在安卓应用程序中使用数据库。
我使用了SQLite数据库来存储和管理应用程序的数据。
通过编写SQL语句,我能够进行数据的插入、查询、更新和删除等操作。
这为我今后的应用程序开发提供了非常有用的技能。
总结:。
Android移动应用开发实用第4章 Android布局管理器
4.4.2 AbsoluteLayout实例
下面用一个例子来展示绝对布局的实现方法,实现结果如 图4-4所示。
图4-4
4.4.2 AbsoluteLayout实例
图4-4所示界面设计的基本思想主要分为以下几步:
如果使用AbosoluteLayout布局需根据所需屏幕样式计算 各个控件的横纵坐标,上例中的TextView没有为layout_x 和layout_y指定具体值,那么这两个属性值默认都为0即绝 对坐标(0, 0),使TextView控件显示在屏幕的最左上角。
4.1.1 LinearLayout介绍
线性布局是最常用的布局方式。线性布局在XML布局文件 中使用<LinearLayout>标签进行配置。
线性布局可分为水平线性布局和垂直线性布局。通过 android:orintation属性设置线性布局的方向,该属性的 可取值是horizontal和vertical,默认值是horizontal。
整个TableLayout第一部分包含3个TableRow,每个 TableRow中包括2个TextView。整个TableLayout第二部 分包含2个TableRow,每个TableRow中包括2个TextView 。整个TableLayout第三部分包含1个TableRow。
实例中<TextView>控件中的padding属性值为容器内内容 与容器的边距,这里使用的单位是dip。在android中使用 的单位主要包括dip、dp、px和sp。dip的含义与dp相同, 代表设备独立像素,不依赖像素不同设备有不同的显示效 果,一般当为了支持WVGA、HVGA和QVGA时推荐使用这 两种单位。px即pixels(像素),属于绝对像素,在不同的 设备上显示效果是相同的。sp为scaled pixels(放大像素 ),主要用于字体显示。
《2024年Android手机界面管理系统的设计与实现》范文
《Android手机界面管理系统的设计与实现》篇一一、引言随着科技的不断进步和人们对于生活品质追求的提高,智能手机在人们的生活中占据了重要的地位。
其中,Android系统以其开放性和用户友好性受到了广大用户的喜爱。
然而,面对众多的应用程序和日益增长的信息量,如何有效地管理手机界面,提高用户体验,成为了一个亟待解决的问题。
本文将详细介绍Android手机界面管理系统的设计与实现过程。
二、系统需求分析首先,我们需要明确Android手机界面管理系统的需求。
主要包括以下几个方面:1. 界面简洁美观:系统界面应简洁明了,操作便捷,符合用户的审美习惯。
2. 高效管理:用户可以方便地管理手机中的应用程序、文件、照片等。
3. 快速响应:系统应具有快速响应的特性,保证用户操作的流畅性。
4. 安全性:系统应保障用户数据的安全,防止数据泄露和误操作。
三、系统设计在明确了需求后,我们需要对系统进行设计。
主要包括以下几个方面:1. 系统架构设计:采用分层架构设计,包括数据层、业务逻辑层和表示层。
数据层负责数据的存储和访问,业务逻辑层负责处理业务逻辑,表示层负责用户界面的展示。
2. 界面设计:根据用户需求,设计简洁美观的界面,包括应用程序列表、文件管理器、相册等模块。
3. 功能模块设计:包括应用程序管理模块、文件管理模块、相册管理模块等。
每个模块都应具有独立的功能和操作界面。
四、系统实现在系统设计完成后,我们需要进行系统的实现。
主要包括以下几个方面:1. 开发环境搭建:搭建Android开发环境,包括Android Studio、SDK等。
2. 编写代码:根据设计文档,编写各个模块的代码。
包括界面布局、业务逻辑处理等。
3. 数据库设计:设计合理的数据库结构,用于存储用户数据和应用程序数据等。
4. 测试与调试:对系统进行测试与调试,确保系统的稳定性和可靠性。
五、关键技术实现在系统实现过程中,我们需要掌握一些关键技术。
主要包括以下几个方面:1. 界面开发:使用XML语言进行界面布局,使用Java或Kotlin语言进行业务逻辑处理。
超级课程表安卓课程设计
超级课程表安卓课程设计一、课程目标知识目标:1. 学生能理解并掌握超级课程表安卓应用的基本原理和功能实现。
2. 学生能了解并运用安卓开发环境,如Android Studio,进行基本的编程操作。
3. 学生能掌握并运用数据存储、界面设计、事件处理等安卓开发关键技术。
技能目标:1. 学生能够独立完成超级课程表安卓应用的界面设计与功能实现。
2. 学生能够通过实际操作,解决开发过程中遇到的问题,具备一定的调试能力。
3. 学生能够运用所学知识,对课程表功能进行优化和拓展。
情感态度价值观目标:1. 学生培养对编程和安卓开发的兴趣,激发创新意识和探索精神。
2. 学生养成合作、分享的学习习惯,学会团队协作共同解决问题。
3. 学生认识到科技在生活中的重要性,增强实践能力和社会责任感。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和创新能力。
学生特点:学生具备一定的编程基础,对安卓开发感兴趣,喜欢动手实践。
教学要求:教师需关注学生的个体差异,提供针对性的指导,鼓励学生主动探究和解决问题。
在教学过程中,注重理论与实践相结合,培养学生的实际操作能力。
二、教学内容1. 安卓开发基础:- Android Studio环境搭建与使用- 安卓应用的基本组件:Activity、Service、BroadcastReceiver、ContentProvider- 布局管理器:线性布局、相对布局、帧布局等2. 超级课程表功能模块设计:- 课程表界面设计:ListView、RecyclerView的使用- 数据存储:SQLite数据库操作、SharedPreferences应用- 事件处理:点击事件、长按事件等3. 进阶功能实现:- 课程表提醒功能:Notification的使用- 界面美化:自定义View、主题样式- 功能拓展:课程分享、课程评价等4. 项目实战与调试:- 学生分组,协同完成超级课程表项目- 项目功能测试与调试,解决常见问题- 优化项目性能,提升用户体验教学内容安排与进度:第一周:安卓开发基础,熟悉Android Studio环境,学习基本组件第二周:布局管理器使用,进行课程表界面设计第三周:数据存储技术,实现课程数据存储功能第四周:事件处理,完成课程表提醒功能第五周:界面美化和功能拓展,提升课程表应用体验第六周:项目实战与调试,分组完成项目并进行测试与优化教材章节关联:《Android基础教程》第1-3章:Android开发环境及基本组件《Android进阶教程》第4-6章:界面设计、数据存储与事件处理《Android实战项目教程》第7-9章:项目实战与性能优化三、教学方法1. 讲授法:- 对于安卓开发的基本概念、原理和关键技术,采用讲授法进行教学,使学生快速掌握基础知识。
Android3-Android界面布局与事件处理
Android事件处理
对于触摸屏事件(鼠标事件)有按下有:按下、弹起 、移动、双击、长按、滑动、滚动。按下、弹起、移 动(down、move、up)是简单的触摸屏事件,而双击、 长按、滑动、滚动需要根据运动的轨迹来做识别的。 在Android中有专门的类去识别,android.view. GestureDetector。 对于按键(keyevent),无非就是按下、弹起、长 按等。 Android手机的坐标系是以左上定点为原点坐标 (0,0), 向右为X抽正方形,向下为Y抽正方向。
return false; } public void onShowPress(MotionEvent event) { displayEventType("pressed"); } public boolean onSingleTapUp(MotionEvent event) { displayEventType("Tap up"); return false; } });
第3章 Android界面布局与 事件处理
内容概要
Android界面布局;
Android事件处理;
Android界面布局
Android界面布局分为: LinearLayout,TableLayout,RelativeLayout,Frame Layout,AbsoluteLayout。 LinearLayout 是最简单的布局之一,它提供了控件 水平或者垂直排列的模型。同时,使用此布局时可以 通过设置控件的 weight 参数控制各个控件在容器中 的相对大小。 LinearLayout 布局的属性既可以在布局文件(XML) 中设置,也可以通过成员方法进行设置。
Android界面布局-LinearLayout
Android核心技术与实例详解—Android布局管理器
实战Android编程——手把手教你做出商用软件34第3章Android布局管理器本章要介绍的内容为Android平台下的布局管理器。
Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。
下面将分别对每个布局管理器进行详细的介绍。
3.1 控件类概述3.1.1 View类简介在介绍Android的布局管理器之前,有必要让读者了解Android平台下的控件类。
首先要了解的是View类,该类为所有可视化控件的基类,主要提供了控件绘制和事件处理的方法。
创建用户界面所使用的控件都继承自View,如TextView、Button、CheckBox等。
关于View及其子类的相关属性,既可以在布局XML文件中进行设置,也可以通过成员方法在代码中动态设置。
View类常用的属性及其对应方法如表3-1所示。
表3-1 View类常用属性及对应方法说明属性名称对应方法描述android:background setBackgroundResource(int) 设置背景android:clickable setClickable(boolean) 设置View是否响应点击事件android:visibility setVisibility(int) 控制View的可见性android:focusable setFocusable(boolean) 控制View是否可以获取焦点android:id setId(int) 为View设置标识符,可通过findViewById方法获取android:longClickable setLongClickable(boolean) 设置View是否响应长点击事件android:soundEffectsEnabled setSoundEffectsEnabled(boolean) 设置当View触发点击等事件时是否播放音效android:saveEnabled setSaveEnabled(boolean) 如果未作设置,当View被冻结时将不会保存其状态android:nextFocusDown setNextFocusDownId(int)定义当向下搜索时应该获取焦点的View,如果该View 不存在或不可见,则会抛出RuntimeException异常android:nextFocusLeft setNextFocusLeftId(int) 定义当向左搜索时应该获取焦点的Viewandroid:nextFocusRight setNextFocusRightId(int) 定义当向右搜索时应该获取焦点的View续表属性名称对应方法描述android:nextFocusUp setNextFocusUpId(int) 定义当向上搜索时应该获取焦点的View,如果该View第3章 Android 布局管理器35不存在或不可见,则会抛出RuntimeException 异常说明:任何继承自View 的子类都将拥有View 类的以上属性及对应方法。
《2024年Android手机界面管理系统的设计与实现》范文
《Android手机界面管理系统的设计与实现》篇一一、引言随着移动互联网的快速发展,Android系统以其开放性和可定制性受到了广大用户的喜爱。
手机界面作为用户与设备交互的第一界面,其设计与管理的优劣直接影响到用户体验。
本文将探讨Android手机界面管理系统的设计与实现,以提供一种高效、用户友好的界面管理系统。
二、系统需求分析在系统设计之前,我们首先进行需求分析。
Android手机界面管理系统应具备以下功能:1. 界面布局管理:能够灵活地调整和布局各类应用和功能模块,以适应不同屏幕尺寸和分辨率。
2. 交互设计:提供直观、易用的操作界面,确保用户可以轻松完成各种操作。
3. 主题和样式管理:支持多种主题和样式切换,满足用户个性化需求。
4. 动态内容管理:能够实时更新界面内容,如通知栏信息、应用图标等。
5. 安全性与稳定性:确保系统运行稳定,数据安全。
三、系统设计根据需求分析,我们设计出Android手机界面管理系统的架构:1. 架构设计:采用分层设计思想,分为数据层、业务逻辑层和表示层。
数据层负责数据存储和访问,业务逻辑层处理业务逻辑,表示层负责界面展示。
2. 界面布局设计:采用XML布局文件定义界面结构,支持自定义布局和组件。
3. 交互设计:通过按钮、滑动、点击等交互方式,实现用户与系统的互动。
4. 主题和样式管理:通过动态修改样式文件,实现主题和样式的切换。
5. 数据管理:采用数据库技术,实现动态内容的管理和存储。
四、系统实现在系统实现阶段,我们采用以下技术和方法:1. 开发环境:使用Android Studio开发环境,搭配Java或Kotlin编程语言。
2. 界面布局实现:通过XML文件定义界面布局,使用Android提供的各类组件实现界面元素。
3. 交互实现:通过监听器(Listener)实现用户与界面的交互。
4. 主题和样式管理:通过动态修改样式文件和资源文件,实现主题和样式的切换。
5. 数据管理:采用SQLite数据库或云端数据库技术,实现动态内容的管理和存储。
《2024年Android手机界面管理系统的设计与实现》范文
《Android手机界面管理系统的设计与实现》篇一一、引言随着科技的不断进步和人们对于便捷性的需求增长,Android 智能手机在人们的日常生活中占据着越来越重要的地位。
界面作为用户与手机进行交互的主要通道,其管理系统的设计与实现显得尤为重要。
本文将详细阐述Android手机界面管理系统的设计与实现过程,以期为相关领域的研究与应用提供参考。
二、系统需求分析在开始设计Android手机界面管理系统之前,我们需要明确系统的需求。
首先,系统应具备友好的用户界面,以便用户能够轻松地完成各种操作。
其次,系统应支持多种界面主题和布局,以满足不同用户的个性化需求。
此外,系统还应具备高效的管理功能,如界面元素的快速加载、便捷的界面切换等。
最后,考虑到安全性与稳定性,系统需保证在各种情况下都能正常运行,并有效防止恶意攻击。
三、系统设计(一)整体架构设计Android手机界面管理系统采用分层架构设计,包括用户界面层、业务逻辑层和数据访问层。
其中,用户界面层负责与用户进行交互;业务逻辑层负责处理用户的请求和操作;数据访问层负责与数据库进行交互,实现数据的增删改查等操作。
(二)界面元素设计界面元素是构成用户界面的基本单位,包括按钮、文本框、图片等。
在设计中,我们应遵循简洁、直观、易用的原则,确保用户能够轻松地完成操作。
同时,为了满足不同用户的个性化需求,系统应支持多种界面主题和布局。
(三)管理功能设计系统应具备高效的管理功能,如界面元素的快速加载、便捷的界面切换等。
为此,我们可以采用异步加载技术,将界面元素加载与主线程分离,从而提高系统的响应速度。
此外,为了方便用户使用,系统还应提供友好的操作提示和反馈。
四、系统实现(一)开发环境搭建在开始开发之前,我们需要搭建Android开发环境,包括安装Android Studio、配置SDK等。
此外,还需要安装相关的开发工具和库文件,以便进行代码编写和调试。
(二)界面开发界面开发是系统实现的关键部分之一。
AndroidUI设计之 布局管理器
AndroidUI设计之布局管理器- 详细解析布局实现写完博客的总结 : 以前没有弄清楚的概念清晰化父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类, android:... 是父容器用来控制子组件的属性. 如android:layout_gravity 是控制组件本身的对齐方式, android:gravity是控制本容器子组件的对齐方式;布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小;布局管理器之间的继承关系 :在上面的UML图中可以看出, 绝对布局帧布局网格布局相对布局线性布局是直接继承ViewGroup,表格布局是继承的LinearLayout;一. 线性布局(LinearLayout)1. 线性布局作用作用 : 线性布局会将容器中的组件一个一个排列起来, LinearLayout可以控制组件横向或者纵向排列, 通过android:orientation属性控制;不换行属性 : 线性布局中的组件不会自动换行, 如果组件一个一个排列到尽头之后, 剩下的组件就不会显示出来;2. LinearLayout常用属性(1)基线对齐xml属性 : android:baselineAligned;设置方法 : setBaselineAligned(boolean b);作用 : 如果该属性为false, 就会阻止该布局管理器与其子元素的基线对齐;(2)设分隔条xml属性 : android:divider;设置方法 : setDividerDrawable(Drawable);作用 : 设置垂直布局时两个按钮之间的分隔条;(3)对齐方式(控制内部子元素)xml属性 : android:gravity;设置方法 : setGravity(int);作用 : 设置布局管理器内组件(子元素)的对齐方式,支持的属性 :top, bottom, left, right,center_vertical(垂直方向居中), center_horizontal(水平方向居中),fill_vertical(垂直方向拉伸), fill_horizontal(水平方向拉伸),center, fill,clip_vertical, clip_horizontal;可以同时指定多种对齐方式 : 如 left|center_vertical 左侧垂直居中;(4)权重最小尺寸xml属性 : android:measureWithLargestChild;设置方法 : setMeasureWithLargestChildEnable(boolean b);作用 : 该属性为true的时候, 所有带权重的子元素都会具有最大子元素的最小尺寸; (5) 排列方式xml属性 : android:orientation;设置方法 : setOrientation(int i);作用 : 设置布局管理器内组件排列方式, 设置为horizontal(水平),vertical(垂直), 默认为垂直排列;3. LinearLayout子元素控制LinearLayout的子元素, 即LinearLayout中的组件, 都受到youtParams控制, 因此LinearLayout包含的子元素可以执行下面的属性.(1) 对齐方式xml属性 : android:layout_gravity;作用 : 指定该元素在LinearLayout(父容器)的对齐方式, 也就是该组件本身的对齐方式, 注意要与android:gravity区分, ;(2) 所占权重xml属性 : android:layout_weight;作用 : 指定该元素在LinearLayout(父容器)中所占的权重, 例如都是1的情况下, 那个方向(LinearLayout的orientation方向)长度都是一样的;4. 控制子元素排列与在父元素中排列控制本身元素属性与子元素属性 :设备组件本身属性 : 带layout的属性是设置本身组件属性, 例如android:layout_gravity设置的是本身的对其方式;设置子元素属性 : 不带layout的属性是设置其所包含的子元素, 例如android:gravity 设置的是该容器子组件的对齐方式;LayoutParams属性 : 所有的布局管理器都提供了相应的LayoutParams内部类, 这些内部类用于控制该布局本身, 如对齐方式 layout_gravity, 所占权重layout_weight, 这些属性用于设置本元素在父容器中的对齐方式;容器属性 : 在android:后面没有layout的属性基本都是容器属性,android:gravity作用是指定指定本元素包含的子元素的对齐方式, 只有容器才支持这个属性;5. 常见用法(1) 获取LinearLayout的宽高a. 组件外无法获取组件宽高下面的两种情况都是针对 View.getHeight() 和 View.getWidth() 方法 :组件外无法获取 : 调用View.getHeight()和View.getWidth()方法是获取不到组件的宽度和高度的, 这两个方法返回的是0, Android的运行机制决定了无法在组件外部使用getHeight()和getWidth()方法获取宽度和高度;组件内可以获取 : 在自定义的类中可以在View的类中通过调用这两个方法获取该View 子类组件的宽和高;b. 组件外部获取View对象宽高方法外部获取 : 使用View.getMeasuredWidth()和View.getMeasuredHeight()方法可以获取组件的宽和高, 在调用这个方法之前, 必须先调用View.measure()方法, 才可以, 否则也获取不到组件的宽高;注意(特例) : 如果组件宽度或高度设置为 fill_parent, 使用getMeasuredHeight() 等方法获取宽度和高度的时候, 并且组件中含有子元素时, 所获取的实际值是这些组件所占的最小宽度和最小高度.(没看懂)示例:[java]view plaincopy1.View view = getLayoutInflater().inflate(yout.main, null);2.LinearLayout layout = (LinearLayout) view.findViewById(R.id.linearlayout);3.//调用测量方法, 调用了该方法之后才能通过getMeasuredHeight()等方法获取宽高yout.measure(0, 0);5.//获取宽度6.int width = layout.getMeasuredWidth();7.//获取高度8.int height = layout.getMeasuredHeight();c. 获取布局文件中组件的宽高从LayoutParams中获取 : 调用View.getLayoutParams().width 和View.getLayoutParams().height 获取宽高, 如果宽高被设定为 fill_parent, match_parent, warp_content 时, 这两个两边直接回返回 FILL_PARENT,MATCH_PARENT, WARP_CONTENT常量值;规律 : 从View.getLayoutParams()中获取 width, height 值, 在布局xml文件中设置的是什么, 获取的时候就得到的是什么;(2) 在LinearLayout中添加分隔线a. 使用ImageView添加(低版本3.0以下)垂直布局横向宽度填满 : 如果布局是vertical, 那么设置一个ImageView宽度fill_parent, 高度2dp, 设置一个背景色;水平布局纵向高度填满 : 如果布局时horizontal, 那么设置一个ImageView宽度2dp, 高度fill_parent, 设置一个背景色;[java]view plaincopy1.<ImageView2. android:layout_width="fill_parent"3. android:layout_height="2dp"4. android:background="#F00"/>b. 使用xml属性添加(3.0以上版本)设置LinearLayout标签的android:showDividers属性, 该属性有四个值 : none :不显示分隔线;beginning : 在LinearLayout开始处显示分隔线;middle : 在LinearLayout中每两个组件之间显示分隔线;end : 在LinearLayout结尾处显示分隔线;设置android:divider属性, 这个属性的值是一个Drawable的id;c. 使用代码添加(3.0以上版本)设置显示分隔线样式 : linearLayout.setShowDividers(), 设置android:showDividers属性;设置分隔线图片 : linearLayout.setDividerDrawable(), 设置android:divider属性;6. 实际案例(1) 按钮排列要点 :底部 + 水平居中对齐属性 : 左边的LinearLayout的android:gravity 属性为bottom|center_horizontal;右部 + 垂直居中对齐属性 : 右边的LinearLayout的android:gravity 属性为right|center_vertical;代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent"5.android:orientation="vertical"6.android:gravity="bottom|center_horizontal">7.<Button8.android:layout_width="wrap_content"9.android:layout_height="wrap_content"10.android:text="按钮1"/>11.<Button12.android:layout_width="wrap_content"13.android:layout_height="wrap_content"14.android:text="测试按钮2"/>15.<Button16.android:layout_width="wrap_content"17.android:layout_height="wrap_content"18.android:text="按钮3"/>19.<Button20.android:layout_width="wrap_content"21.android:layout_height="wrap_content"22.android:text="测试按钮4"/>23.<Button24.android:layout_width="wrap_content"25.android:layout_height="wrap_content"26.android:text="按钮5"/>27.</LinearLayout>子元素对齐 : 通过修改android:gravity 属性来控制LinearLayout中子元素的排列情况;左边的图的属性为 bottom|center_horizontal , 右边的android:gravity的属性值为 right|center_vertical;(2) 三个按钮各自对齐三个水平方向的按钮, 分别左对齐, 居中对齐, 右对齐 :要点 :水平线性布局 : 最顶层的LinearLayout的orientation是horizontal水平的;等分三个线性布局 : 第二层的LinearLayout的orientation是vertical垂直的, 并且宽度是fill_parent , 依靠权重分配宽度;设置按钮对齐方式 : 按钮的android:layout_gravity属性根据需求 left, center, right, 默认为left;代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent"5.android:orientation="horizontal">6.7.<LinearLayout8.android:layout_width="fill_parent"9.android:layout_weight="1"10.android:layout_height="wrap_content"11.android:orientation="vertical"12.android:background="#f00">13.<Button android:layout_width="wrap_content"14.android:layout_height="wrap_content"15.android:text="按钮1"/>16.</LinearLayout>17.18.<LinearLayout19.android:layout_width="fill_parent"20.android:layout_weight="1"21.android:layout_height="wrap_content"22.android:orientation="vertical"23.android:background="#0f0">24.<Button android:layout_width="wrap_content"25.android:layout_height="wrap_content"26.android:text="按钮2"27.android:layout_gravity="center"/>28.</LinearLayout>29.30.<LinearLayout31.android:layout_width="fill_parent"32.android:layout_weight="1"33.android:layout_height="wrap_content"34.android:orientation="vertical"35.android:background="#00f">36.<Button android:layout_width="wrap_content"37.android:layout_height="wrap_content"38.android:text="按钮3"39.android:layout_gravity="right"/>40.</LinearLayout>41.42.</LinearLayout>二. 相对布局RelativeLayout相对布局容器中, 子组件的位置总是相对兄弟组件,父容器来决定的;1. RelativeLayout支持的属性(1) 对齐方式xml属性 : android:gravity;设置方法 : setGravity(int);作用 : 设置布局容器内子元素的对齐方式, 注意与android:layout_gravity区分, 后者是设置组件本身元素对齐方式;(2) 忽略对齐方式xml属性 : android:ignoreGravity;设置方法 : setIgnoreGravity(int);作用 : 设置该组件不受gravity属性影响, 因为gravity属性影响容器内所有的组件的对齐方式, 设置了之后, 该组件就可以例外;2. LayoutParams属性(1) 只能设置boolean值的属性这些属性都是相对父容器的, 确定是否在父容器中居中(水平, 垂直), 是否位于父容器的上下左右端;是否水平居中 : android:layout_centerHorizontal;是否垂直居中 : android:layout_centerVertical;是否位于中央 : android:layout_centerInParent;是否底端对齐 : android:layout_align ParentBottom;是否顶端对齐 : android:layout_align ParentTop;是否左边对齐 : android:layout_align ParentLeft;是否右边对齐 : android:layout_align ParentRight;(2) 只能设置其它组件id的属性位于所给id组件左侧 : android:layout_toLeftOf;位于所给id组件右侧 : android:layout_toRightOf;位于所给id组件的上边 : android:layout_above;位于所给id组件的下方 : android:layout_below;与所给id组件顶部对齐 : android:layout_align Top;与所给id组件底部对齐 : android:layout_align Bottom;与所给id组件左边对齐 : android:layout_align Left;与所给id组件右边对齐 : android:layout_align Right;3. 梅花布局效果五个按钮排成梅花形状, 梅花处于正中心, 效果图如下 :两个按钮, 如果只有 android:layout_above="@+id/bt1" 会是这种情况 :加上 android:layout_alignLeft="@+id/bt1"就会成为这种情况 :要点 :注意每个组件的属性, 先要确定方位, 在进行对齐, 组件左边界对齐, 组件上边界对齐;代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<RelativeLayout xmlns:android="/apk/res/android"3.android:layout_width="fill_parent"4.android:layout_height="fill_parent">5.6.<Button7.android:id="@+id/bt1"8.android:layout_width="wrap_content"9.android:layout_height="wrap_content"10.android:text="按钮1"11.android:layout_centerInParent="true"/>12.13.<Button14.android:id="@+id/bt2"15.android:layout_width="wrap_content"16.android:layout_height="wrap_content"17.android:text="按钮2"18.android:layout_above="@+id/bt1"19.android:layout_alignLeft="@+id/bt1"/>20.21.<Button22.android:id="@+id/bt3"23.android:layout_width="wrap_content"24.android:layout_height="wrap_content"25.android:text="按钮3"26.android:layout_centerInParent="true"27.android:layout_below="@+id/bt1"28.android:layout_alignLeft="@+id/bt1"/>29.30.<Button31.android:id="@+id/bt4"32.android:layout_width="wrap_content"33.android:layout_height="wrap_content"34.android:text="按钮4"35.android:layout_centerInParent="true"36.android:layout_toLeftOf="@+id/bt1"37.android:layout_alignTop="@+id/bt1"/>38.39.<Button40.android:id="@+id/bt5"41.android:layout_width="wrap_content"42.android:layout_height="wrap_content"43.android:text="按钮5"44.android:layout_centerInParent="true"45.android:layout_toRightOf="@+id/bt1"46.android:layout_alignTop="@+id/bt1"/>47.48.</RelativeLayout>4. 相对布局常用方法(1) 获取屏幕中一个组件的位置创建数组 : 要先创建一个整型数组, 数组大小2位; 这个数组传入getLocationOnScreen()方法;将位置信息传入数组 : 可以调用View.getLocationOnScreen()方法, 返回的是一个数组 int[2], int[0] 是横坐标, int[1] 是纵坐标;[java]view plaincopy1.//获取组件2.Button b = (Button) this.findViewById(R.id.Button01);3.//创建数组, 将该数组传入getLocationOnScreen()方法4.int locations[] = new int[2];5.//获取位置信息6. b.getLocationOnScreen(locations);7.//获取宽度8.int width = locations[0];9.//获取高度10.int height = locations[1];(2) LayoutParams的使用设置所有属性属性设置方法少 : Android SDK中View类只提供了很少用于设置属性的方法,大多数属性没有直接对应的获得和设置属性值的方法, 看起来貌似不是很好用;使用LayoutParams设置属性值 : Android中可以对任何属性进行设置, 这里我们需要一个LayoutParams对象, 使用这个LayoutParams.addRule()方法, 可以设置所有组件的属性值; 设置完之后调用View.setLayoutParams()方法, 传入刚才创建的LayoutParams对象, 并更新View的相应的LayoutParams属性值, 向容器中添加该组件;代码中动态设置布局属性 :a. 创建LayoutParams对象b. 调用LayoutParams对象的addRule()方法设置对应属性;c. 调用View.setLayoutParams()方法将设置好的LayoutParams对象设置给组件;d. 调用addView方法将View对象设置到布局中去;使用代码设置android:layout_toRightOf 和 android:layout_below属性 :[java]view plaincopy1.//装载布局文件2.RelativeLayout relativeLayout = (RelativeLayout) getLayoutInflater().inflate(yout.relative, null);3.//装载要动态添加的布局文件4.Button button = (Button) relativeLayout.findViewById(R.id.bt1);5.//创建一个LayoutParams对象youtParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);7.//设置android:layout_toRightOf属性youtParams.addRule(RelativeLayout.RIGHT_OF, R.id.bt2);9.//设置android:layout_belowyoutParams.addRule(RelativeLayout.BELOW, R.id.bt2);11.//更新Button按钮的属性12.button.setLayoutParams(layoutParams);13.//向布局中动态添加按钮14.relativeLayout.addView(button);三. 帧布局FrameLayout帧布局容器为每个组件创建一个空白区域, 一个区域成为一帧, 这些帧会根据FrameLayout中定义的gravity属性自动对齐;1. 绘制霓虹灯布局绘制一个霓虹灯效果的层叠布局, 如下图 :要点 :后挡前 : 后面的View组件会遮挡前面的View组件,越在前面, 被遮挡的概率越大;界面居中 : 将所有的TextView组件的对齐方式 android:layout_gravity设置为center;正方形 : 所有的TextView都设置android:height 和 android:width 属性, 用来设置其宽高, 这里设置成正方形, 宽高一样, 后面的组件比前面的边长依次少40;颜色 : 每个TextView的背景都设置成不一样的;代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<FrameLayout xmlns:android="/apk/res/android"3.android:layout_width="match_parent"4.android:layout_height="match_parent">5.6.<TextView7.android:id="@+id/tv_1"8.android:layout_width="wrap_content"9.android:layout_height="wrap_content"10.android:layout_gravity="center"11.android:width="320px"12.android:height="320px"13.android:background="#f00"/>14.<TextView15.android:id="@+id/tv_2"16.android:layout_width="wrap_content"17.android:layout_height="wrap_content"18.android:layout_gravity="center"19.android:width="280px"20.android:height="280px"21.android:background="#0f0"/>22.<TextView23.android:id="@+id/tv_3"24.android:layout_width="wrap_content"25.android:layout_height="wrap_content"26.android:layout_gravity="center"27.android:width="240px"28.android:height="240px"29.android:background="#00f"/>30.<TextView31.android:id="@+id/tv_4"32.android:layout_width="wrap_content"33.android:layout_height="wrap_content"34.android:layout_gravity="center"35.android:width="200px"36.android:height="200px"37.android:background="#ff0"/>38.<TextView39.android:id="@+id/tv_5"40.android:layout_width="wrap_content"41.android:layout_height="wrap_content"42.android:layout_gravity="center"43.android:width="160px"44.android:height="160px"45.android:background="#f0f"/>46.<TextView47.android:id="@+id/tv_6"48.android:layout_width="wrap_content"49.android:layout_height="wrap_content"50.android:layout_gravity="center"51.android:width="120px"52.android:height="120px"53.android:background="#0ff"/>54.55.</FrameLayout>.作者 :万境绝尘转载请注明出处 : /shulianghan/article/details/18964835 .2. 使用代码使上面的霓虹灯效果动起来(1) 图片效果(2) 颜色资源创建颜色资源, 在跟节点<resources>下面创建<color>子节点, color属性标签name 自定义, 子文本为颜色代码;(3) 定时器控制handler创建Handler对象, 实现handleMessage()方法, 在这个方法中循环设置 TextView 对象的颜色变量, 使用color[(i + currentColor)%colors.length]每调用一次, 就将所有的TextView颜色依次调换一次;在onCreate()方法中, 开启一个定时器Timer, 每隔0.2s就调用一个handler中的方法, 这样动态的霓虹灯代码就显示出来了.(4) 代码颜色资源代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<resources>3.<color name = "color1">#f00</color>4.<color name = "color2">#0f0</color>5.<color name = "color3">#00f</color>6.<color name = "color4">#ff0</color>7.<color name = "color5">#f0f</color>8.<color name = "color6">#0ff</color>9.</resources>代码 :[java]view plaincopy1.package com.example.framelayout;2.3.import java.util.Timer;4.import java.util.TimerTask;5.6.import android.app.Activity;7.import android.os.Bundle;8.import android.os.Handler;9.import android.os.Message;10.import android.widget.TextView;11.12.public class MainActivity extends Activity {13.14.//这个变量用来控制霓虹灯颜色变化15.private int currentColor = 0;16.//颜色对应的资源id17.final int[] colors = new int[]{18. R.color.color1,19. R.color.color2,20. R.color.color3,21. R.color.color4,22. R.color.color5,23. R.color.color624. };25.//View组件对应的资源id26.final int[] names = new int[]{27. _1,28. _2,29. _3,30. _4,31. _5,32. _633. };34.35.//组件数组36. TextView[] views = new TextView[names.length];37.38.//定义这个Handler, 为了在定时器中固定调用handleMessage方法39. Handler handler = new Handler(){40.public void handleMessage(Message msg) {41.if(msg.what == 0x123){42.for(int i = 0; i < names.length; i ++){43. views[i].setBackgroundResource(colors[(i + currentColor)% names.length]);44. }45. currentColor ++;46. }47. };48. };49.50.@Override51.public void onCreate(Bundle savedInstanceState) {52.super.onCreate(savedInstanceState);53. setContentView(yout.frame);54.//初始化组件数组55.for(int i = 0; i < names.length; i ++){56. views[i] = (TextView) findViewById(names[i]);57. }58.//每隔0.2秒更换一次颜色59.new Timer().schedule(new TimerTask() {60.@Override61.public void run() {62. handler.sendEmptyMessage(0x123);63. }64. }, 0, 200);65. }66.}3. 三个水平方向的按钮分别左对齐,居中对齐,右对齐要点 : 给FrameLayout中的三个按钮分别设置不同的layout_gravity,left ,center_horizontal,right, 就能设置成上图的样式;代码 :[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<FrameLayout xmlns:android="/apk/res/android"3.android:layout_width="match_parent"4.android:layout_height="match_parent">5.6.<Button7.android:layout_width="wrap_content"8.android:layout_height="wrap_content"9.android:text="按钮1"10.android:layout_gravity="left"/>11.12.<Button13.android:layout_width="wrap_content"14.android:layout_height="wrap_content"15.android:text="按钮2"16.android:layout_gravity="center_horizontal"/>17.18.<Button19.android:layout_width="wrap_content"20.android:layout_height="wrap_content"21.android:text="按钮3"22.android:layout_gravity="right"/>23.24.</FrameLayout>四. 表格布局TableLayout1. 表格布局的一些概念继承关系 : 表格布局继承了LinearLayout, 其本质是线性布局管理器;控制组件 : 表格布局采用行, 列形式管理子组件, 但是并不需要声明有多少行列, 只需要添加TableRow 和组件就可以控制表格的行数和列数, 这一点与网格布局有所不同, 网格布局需要指定行列数;增加行的方法 :a. TableRow增加行列 : 向TableLayout中添加一个TableRow,一个TableRow就是一个表格行, 同时TableRow也是容器, 可以向其中添加子元素, 每添加一个组件, 就增加了一列;b. 组件增加行 : 如果直接向TableLayout中添加组件, 就相当于直接添加了一行;列宽 : TableLayout中, 列的宽度由该列最宽的单元格决定, 整个表格的宽度默认充满父容器本身;2. 单元格行为方式(1) 行为方式概念a. 收缩 :Shrinkable, 如果某列被设为Shrinkable, 那么该列所有单元格宽度可以被收缩, 保证表格能适应父容器的宽度;b. 拉伸 :Stretchable, 如果某列被设为Stretchable, 那么该列所有单元格的宽度可以被拉伸, 保证表格能完全填满表格剩余空间;d. 隐藏 :Collapsed, 如果某列被设置成Collapsed, 那么该列所有单元格会被隐藏;(2) 行为方式属性a. 隐藏xml属性 : android:collapsedColumns;设置方法 : setColumnCollapsed(int, boolean);作用 : 设置需要被隐藏的列的序号, 在xml文件中, 如果隐藏多列, 多列序号间用逗号隔开;b. 拉伸xml属性 : android:stretchColumns;设置方法 : setStretchAllColumns(boolean);作用 : 设置允许被拉伸的列的序列号, xml文件中多个序列号之间用逗号隔开;c. 收缩xml属性 : android:shrinkableColumns;设置方法 : setShrinkableAllColumns(boolean);作用 : 设置允许被收缩的列的序号, xml文件中, 多个序号之间可以用逗号隔开; 3. 表格布局实例实现要点 :独自一行按钮 : 向TableLayout中添加按钮, 这个按钮就会独自占据一行;收缩按钮: 在TableLayout标签中,设置android:stretchable属性标签, 属性值是要收缩的列,注意,列标从0开始;拉伸按钮 : 在TableLayout标签中,设置android:shrinkable属性标签, 属性值是要拉伸的列, 注意, 列表从0开始;代码 :[html]view plaincopy1.<LinearLayout xmlns:android="/apk/res/android"2.xmlns:tools="/tools"3.android:orientation="vertical"4.android:layout_width="match_parent"5.android:layout_height="match_parent">6.<!-- LinearLayout默认是水平的, 这里设置其方向为垂直 -->7.8.<!-- 表格布局, 第2列允许收缩, 第3列允许拉伸, 注意这里行列的计数都是从0开始的 -->9.<TableLayout10.android:layout_width="fill_parent"11.android:layout_height="wrap_content"12.android:shrinkColumns="1"13.android:stretchColumns="2">14.15.<!-- 向TableLayout中直接添加组件, 独占一行 -->16.<Button17.android:layout_width="fill_parent"18.android:layout_height="wrap_content"19.android:text="独自一行的按钮"/>20.21.<TableRow>22.<Button23.android:layout_width="wrap_content"24.android:layout_height="wrap_content"25.android:text="普通的按钮"/>26.<Button27.android:layout_width="wrap_content"28.android:layout_height="wrap_content"29.android:text="收缩的按钮"/>30.<Button31.android:layout_width="wrap_content"32.android:layout_height="wrap_content"33.android:text="拉伸的按钮"/>34.</TableRow>35.36.</TableLayout>37.38.<!-- 第二个按钮会隐藏掉 -->39.<TableLayout40.android:layout_width="fill_parent"41.android:layout_height="wrap_content"42.android:collapseColumns="1">43.44.<Button45.android:layout_width="fill_parent"46.android:layout_height="wrap_content"47.android:text="独自一行的按钮"/>48.49.<TableRow>50.<Button51.android:layout_width="wrap_content"52.android:layout_height="wrap_content"53.android:text="普通按钮1"/>54.<Button55.android:layout_width="wrap_content"56.android:layout_height="wrap_content"57.android:text="普通按钮2"/>58.<Button59.android:layout_width="wrap_content"60.android:layout_height="wrap_content"61.android:text="普通按钮3"/>62.</TableRow>63.64.</TableLayout>65.66.<!-- 指定第二列和第三列可以被拉伸 -->67.<TableLayout68.android:layout_height="wrap_content"69.android:layout_width="fill_parent"70.android:stretchColumns="1,2">71.72.<Button73.android:layout_width="fill_parent"74.android:layout_height="wrap_content"75.android:text="独自占一行的按钮"/>76.77.<TableRow>78.79.<Button80.android:layout_width="wrap_content"81.android:layout_height="wrap_content"82.android:text="普通按钮1"/>83.<Button84.android:layout_width="wrap_content"85.android:layout_height="wrap_content"86.android:text="拉伸的按钮"/>87.<Button88.android:layout_width="wrap_content"89.android:layout_height="wrap_content"90.android:text="拉伸的按钮"/>91.92.</TableRow>93.94.<TableRow>95.96.<Button97.android:layout_width="wrap_content"98.android:layout_height="wrap_content"99.android:text="普通的按钮"/>100.<Button101.android:layout_width="wrap_content"102.android:layout_height="wrap_content"103.android:text="拉伸的按钮"/>104.105.</TableRow>106.107.</TableLayout>108.109.110.</LinearLayout>五. 网格布局1. 网格布局介绍网格布局时Android4.0版本才有的, 在低版本使用该布局需要导入对应支撑库;GridLayout将整个容器划分成rows * columns个网格, 每个网格可以放置一个组件. 还可以设置一个组件横跨多少列, 多少行. 不存在一个网格放多个组件情况;2. 网格布局常用属性(1) 设置对齐模式xml属性 : android:alignmentMode;设置方法 : setAlignmentMode(int);作用 : 设置网格布局管理器的对齐模式(2) 设置列数xml属性 : android:columnCount;设置方法 : setColumnCount(int);作用 : 设置该网格布局的列数;(3) 设置是否保留列序列号xml属性 : android:columnOrderPreserved;设置方法 : setColumnOrderPreserved(boolean);作用 : 设置网格容器是否保留列序列号;(4) 设置行数xml属性 : android:rowCount;设置方法 : setRowCount(int);作用 : 设置该网格的行数;(5) 设置是否保留行序列号xml属性 : android:rowOrderPreserved;设置方法 : setRowOrderPreserved(int);作用 : 设置该网格容器是否保留行序列号;(6) 页边距xml属性 : android:useDefaultMargins;设置方法 : setUseDefaultMargins(boolean);作用 : 设置该布局是否使用默认的页边距;3. GridLayout的LayoutParams属性(1) 设置位置列xml属性 : android:layout_column;作用 : 设置子组件在GridLayout的哪一列;(2) 横向跨列xml属性 : android:layout_columnSpan;作用 : 设置该子组件在GridLayout中横向跨几列;(3) 占据空间方式xml属性 : android:layout_gravity;设置方法 : setGravity(int);作用 : 设置该组件采用何种方式占据该网格的空间;(4) 设置行位置xml属性 : android:layout_row;作用 : 设置该子组件在GridLayout的第几行;(5) 设置横跨行数xml属性 : android:layout_rowSpan;作用 : 设置该子组件在GridLayout纵向横跨几行;4. 实现一个计算机界面(1) 布局代码设置行列 : 设置GridLayout的android:rowCount为6, 设置android:columnCount为4, 这个网格为 6行 * 4列的;设置横跨四列 : 设置TextView和按钮横跨四列android:layout_columnSpan 为4, 列的合并就是占了一行;textView的一些设置:设置textView中的文本与边框有5像素间隔 : android:padding = "5px";代码 :[html]view plaincopy1.<GridLayout xmlns:android="/apk/res/android"2.xmlns:tools="/tools"3.android:layout_width="match_parent"4.android:layout_height="match_parent"5.android:rowCount="6"6.android:columnCount="4"7.android:id="@+id/root">8.9. <!--10.定义一个 6行 * 4列 GridLayout, 在里面定义两个组件11.两个组件都横跨4列, 单独占一行12. -->13.<TextView14.android:layout_width="match_parent"15.android:layout_height="wrap_content"16.android:layout_columnSpan="4"17.android:textSize="50sp"18.android:layout_marginLeft="4px"19.android:layout_marginRight="4px"20.android:padding="5px"21.android:layout_gravity="right"22.android:background="#eee"23.android:textColor="#000"24.android:text="0"/>25.26.<Button27.android:layout_width="match_parent"28.android:layout_height="wrap_content"29.android:layout_columnSpan="4"30.android:text="清除"/>31.32.</GridLayout>(2) Activity代码将组件设置给GridLayout网格流程 :指定组件所在行 : GridLayout.Spec rowSpec = GridLayout.spec(int);指定组件所在列 : GridLayout.Spec columnSpec = GridLayout.spec(int);创建LayoutParams对象 : youtParams params =newyoutParams(rowSpec, columnSpec);指定组件占满容器 : params.setGravity(Gravity.FILL);将组件添加到布局中 : gridLayout.addView(view, params);代码 :[java]view plaincopy1.package com.example.caculator;2.3.import android.app.Activity;4.import android.os.Bundle;5.import android.view.Gravity;6.import android.widget.Button;7.import android.widget.GridLayout;8.import youtParams;9.import android.widget.GridLayout.Spec;10.11.public class MainActivity extends Activity {12.13.private GridLayout gridLayout;14.//需要放到按钮上的字符串15. String chars[] = new String[]{16."7", "8", "9", "/",17."4", "5", "6", "*",18."1", "2", "3", "-",19.".", "0", "=", "+"20. };21.。
移动应用程序开发实验指导书_第三课_Anroid布局管理器
移动应用程序开发课程实验指导书课次 3 课时 2 课型□理论课□讨论课√实验课□习题课□其他授课题目(教学章、节或主题):Anroid布局管理器教学目的、要求(分掌握、熟悉、了解三个层次):掌握:线性布局管理器的使用;掌握:相对布局管理器的使用教学重点及难点:重点、难点:线性布局管理器及相对布局管理器及其嵌套使用教学方法及手段:(1)案例讲解,(2)多媒体讲解,(3)案例教学教学基本内容本节学习内容:局管理器的常用类型;线性布局管理器的使用;相对布局管理器的使用;补充知识:xml的基本使用;具体内容:1.简单线性布局❖LinearLayout 常用属性(布局参数):●andriod:orientation:设置排列方向●android:layout_width:设置宽●android:layout_height:设置高●android:layout_weight:设置控件的重要程度。
所有控件都有一个weight值,默认为零,意思是需要显示多大的控件视图就占据多大的屏幕空间。
❖实验步骤:(1)在res-layout目录下新建testSimplelinearlayout.xml文件,代码如下:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation=" horizontal"><Button android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button1"android:layout_weight="1"/><Button android:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button2"android:layout_weight="1"/></LinearLayout>(2)在Activity的onCreate方法中设置布局:setContentView(yout.test Simple linearlayout);(3)Run as – Android Application,启动虚拟手机,运行结果如下:(4)将第二个按钮的android:layout_weight="2"属性修改为2,运行结果如下:(5)修改android:orientation属性为"vertical",重新运行,结果如下:❖实验结论:android:orientation属性决定了Activity内控件的排布方向,设置为vertical时为垂直排布,设置为horizontal时为水平排布;android:layout_weight 属性表示控件在android:orientation方向上的权重比例。
第3章 Android布局管理器
第3章Android 布局管理器Android 的布局管理器有:线性布局、表格布局、现对布局、帧布局和绝对布局3.1控件类概述所有的控件的父类——View所有可以充当容器的控件类的父类——ViewGroup● 3.1.1 View 类简介该类为所有可视化控件的基类,主要提供了控件绘制和事件处理的方法。
创建用户界面所使用的控件都继承自View,如TextView、Button、等。
关于View 及其子类的相关属性,既可以在布局XML文件中进行设置,也可以通过成员方法在代码中动态设置,View 类常用的属性和方法如表3-1.● 3.1.2 ViewGroup 类简介它也是View 的子类,但是可以充当其他控件的容器。
ViewGroup 的子控件可以是普通的View 控件也可以是ViewGroup。
3.2 线性布局(LinearLayout)线性布局是最简单的布局之一,它提供了控件水平和垂直两种布局模式。
同时,使用次布局时可以通过设置控件的weight 参数控制各个控件在容器中的现对大小。
表3-2 给出LinearLayout 常用的属性及这些属性的对应设置方法。
3.3 表格布局(TableLayout)TableLayout 类以行列的形式管理控件,没行为一个TableRow 对象,也可以为一个View 对象,当为View 对象时,该View 对象将跨越改行的所有列。
在TableRow 中可以添加字控件,没添加一个子控件为一列。
TableLayout 继承自LinearLayout 类,除的继承来自父类的属性和方法,TableLayout 类中还包含表格布局特有的属性和方法,这些方法和属性如表3-4所示。
3.4 现对布局(RelativeLayout)在现对布局中,子控件的位置是现对兄弟控件或父控件容器而决定的。
出于性能考虑,在设计现对布局时要按照控件之间的依赖关系排列。
在现对布局中用到的属性很多:表3-5 的属性值只有true 或false。
安卓第3章 图形用户界面设计
5
6
<string name="button">点击我!</string>
<string name="newStr">改变了文本标签的内容</string>
7 </resources>
【例3-3】编写程序,点击按钮命令, 改变文本组件的文字及背景颜色。如图 3.5所示。
• 本例题涉及到颜色定义,Android系统在 android.graphics.Color里定义了12种常见的 颜色常数,其颜色常数见表3-5。
创建名称为Ex03_03的新项目,包名为 com.ex03_03。 (1)设计布局文件main.xml
在XML文件中表示颜色的方法有多种: –#RGB:用三位十六进制数分别表示红、绿、蓝颜色。 –#ARGB:用四位十六进制数分别表示透明度、红、绿、 蓝颜色。
–#RRGGBB:用六位十六进制数分别表示红、绿、蓝颜 色。
(2)控制文件:Ex03_02Activity.java 在控制文件Ex03_02Activity.java中,设计一个实现按钮监 听接口的内部类mClick,当点击按钮时,触发onClick()事件。 1 package com.ex03_02; 2 import android.app.Activity; 3 import android.os.Bundle; 4 import android.view.View; 5 import android.view.View.OnClickListener; 6 import android.widget.TextView; 7 import android.widget.Button;
第3章 图形用户界面设计
Android实验报告组件布局
Android 开发(实验五)实验题目:Android组件布局试验指导老师:班级:计算机科学与技术系班姓名:一、实验目的1、掌握Android组件布局的使用方法2、学会组件布局的重要属性与应用3、能够根据需求,通过布局构建各类实际的页面。
二、实验内容组件布局有:LinearLayout、TableLayout、FrameLayout、RelativeLayout三、实验步骤1、用表格布局完成登录界面<TableLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#FFFFCC"android:stretchColumns="0,3" ><ImageView android:layout_width="fill_parent"android:layout_height="5dp"/><TableRow><ImageViewandroid:layout_width="wrap_content"android:layout_height="100dp"android:src="@drawable/img"android:gravity="center"android:layout_span="4"/></TableRow><TableRow ><TextView/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="right"android:text="@string/username"android:textStyle="bold"android:textColor="#000000"/><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="left"android:minWidth="200px"android:id="@+id/ETname"/></TableRow><TableRow ><TextView/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="right"android:text="@string/password"android:textStyle="bold"android:textColor="#000000"/><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content" android:gravity="left"android:minWidth="200px"android:inputType="textPassword"android:id="@+id/ETpwd"/></TableRow><TableRow><TextView /><Buttonandroid:id="@+id/Btok"android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right"android:text="@string/button"android:textStyle="bold"/><Buttonandroid:id="@+id/Btcancel"android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="left"android:text="@string/cancel"android:textStyle="bold"/></TableRow></TableLayout>2、使用线性布局完成系统主界面<LinearLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#FFFFCC"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="欢迎登陆此系统!"android:layout_gravity="center"android:textSize="30sp"android:textColor="#000000"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="退出"android:textSize="30sp"android:textColor="#000000"android:id="@+id/Btquit"/></LinearLayout>3、使用线性布局和相对布局嵌套完成注册页面<LinearLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#FFFFCC"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="注册"android:layout_gravity="center"android:textSize="30sp"android:textColor="#000000"/><RelativeLayoutxmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/lname"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用户名 "android:layout_gravity="center"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/ename"android:layout_width="200px"android:layout_height="wrap_content" android:layout_toRightOf="@id/lname"/> <TextViewandroid:id="@+id/lpwd"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="密码 "android:layout_below="@id/lname"android:layout_marginTop="20px"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/epwd"android:layout_width="200px"android:layout_height="wrap_content" android:inputType="textPassword"android:layout_toRightOf="@id/lpwd"android:layout_alignTop="@id/lpwd"/> <TextViewandroid:id="@+id/lapwd"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="确认密码 "android:layout_below="@id/lpwd"android:layout_marginTop="20px"android:textSize="20sp"android:textColor="#000000"/><EditTextandroid:id="@+id/eapwd"android:layout_width="200px"android:layout_height="wrap_content" android:inputType="textPassword"android:layout_toRightOf="@id/lapwd" android:layout_alignTop="@id/lapwd"/> <Buttonandroid:id="@+id/Btok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="提交"android:layout_below="@id/lapwd"android:layout_marginTop="20px"android:layout_marginRight="20px"android:textSize="20sp"android:textColor="#000000"/><Buttonandroid:id="@+id/Btqx"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="取消"android:layout_below="@id/lapwd"android:layout_toRightOf="@id/Btok"android:layout_alignTop="@id/Btok"android:textSize="20sp"android:textColor="#000000"/></RelativeLayout></LinearLayout>4、事件代码如下:LayoutTestActivity.javapackage youttest;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class LayoutTestActivity extends Activity {/** Called when the activity is first created. */ private Button Btok;private Button Btcancel;// private EditText ETname;// private EditText ETpwd;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);Btok = (Button)findViewById(R.id.Btok);Btcancel = (Button)findViewById(R.id.Btcancel); Btok.setOnClickListener(new myOnClickListener());Btcancel.setOnClickListener(new myOnClickListener());}public class myOnClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();switch(v.getId()){case R.id.Btok:intent.setClass(LayoutTestActivity.this, LoginActivity.class);startActivity(intent);break;case R.id.Btcancel:intent.setClass(LayoutTestActivity.this, ZhuCe.class);startActivity(intent);break;}}};}LoginActivity.javapackage youttest;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class LoginActivity extends Activity {private Button Btquit;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.login);Btquit = (Button)findViewById(R.id.Btquit);Btquit.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnew AlertDialog.Builder(LoginActivity.this).setTitle("确认窗口").setMessage("确定要退出应用程序?").setPositiveButton("确定",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int i) {// TODO Auto-generated method stubfinish();}}).setNegativeButton("取消",new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).show();}});}}ZhuCe.javapackage youttest;import android.app.Activity;import android.os.Bundle;public class ZhuCe extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.zhuce);}}四、实验结果五、实验总结1、通过本次实验,掌握了Android组件布局的使用方法2、也学会了组件布局的重要属性与应用能够根据需求,通过布局构建各类实际的页面3、实验中遇到的问题,通过自己的努力最后得以解决。
实验2 UI界面开发--布局管理器的使用
实验2、View及布局管理器的使用一、实验目的1、了解View类、ViewGroup的作用2、掌握常用布局管理器的使用3、掌握XML界面控制的设计方法4、从本周起,以后每次小课的实验内容,要求上传FTP。
二、实验步骤1、线性布局的例子,补充代码,使程序运行效果如下所示图1 线性布局LinearlayoutDemo.java代码不用做任何修改,直接通过main.xml文件控制UI 界面。
下面是布局文件main.xml中的内容,请补充完整,实现图1中的界面:<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical">//排列方式(horizontal水平排列,vertical垂直排列)<TextViewandroid:id="@+id/firstText"android:layout_width=" fill_parent "android:layout_height="wrap_content"android: layout_weight ="2"//设置所占相对宽度android:background="#aa0000"android:gravity="center_vertical"//设置主件对齐方式android:singleLine="true"//若为true,看不到的文字用……表示android:text=" 广州大学华软软件学院"android:textSize="15pt"/><TextViewandroid:id="@+id/secondText"android:layout_width="fill_parent"android:layout_height="wrap_content"android: layout_height ="1"android:background ="#0000aa"android:gravity ="center_vertical"android:text="软件工程系"android:textSize="15pt"/></LinearLayout>2、相对布局管理器的使用,补充代码,使程序运行的效果如下图所示:图2相对布局运行效果RelativeLayoutDemo.java中的源代码如下所示:下面是布局文件main.xml中的内容,请补充完整,实现图2中的界面:<?xml version="1.0"encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><!--该TextView文本框下边设置15dip页边距--><TextViewandroid:id="@+id/label"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Type here:"android:textSize="12pt"android:textStyle="bold"android:textColor="#AA0000"android:layout_marginBottom ="15dip"/><EditTextandroid:id="@+id/entry"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@android:drawable/editbox_background"android:layout_above="@id/label"/><!--”OK”按钮左边设置10px页边距--><Buttonandroid:id="@+id/ok"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/label"android:layout_alignParentRight="true"android:layout_marginLeft ="10dip"android:text="OK"/><!--Cancel按钮为于id为“ok”的按钮左边,而且两个按钮顶部对齐--> <Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/ok"android:layout_toLeftOf ="@+id/ok"android:layout_alignTop ="@+id/ok"android:text="Cancel"/></RelativeLayout>3.布局管理器的嵌套,编写程序,在模拟器中实现如下的效果界面,选择合适的布局管理器。
android实验3界面设计:布局管理器
西安邮电大学(计算机学院)课内实验报告实验名称:界面设计:布局管理器专业:网络工程班级:姓名:学号:指导教师:日期:2017年5月4日一.实验目的1. 了解四种布局管理器的区别和各自特别的属性2. 掌握四种布局管理器的应用场合和用法3. 灵活使用四种布局文件管理器和嵌套实现各种复杂布局4. 掌握复用XML布局文件的方法5. 掌握代码控制UI界面的方法二.实验环境JDK的版本: "1.8.0_40"IDE: eclipse 4.6.1模拟器: 夜神模拟器三.实验内容设计的样式,完成Android应用UI的应用开发四.实验过程及分析1.用JA V A代码设置全屏打开工程src目录下的主Activity文件,在onCreate方法中的执行语句super. onCreate(savedInstanceState)之前,添加如下两句语句requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏this.getWindow().setFlags(youtParams.FLAG_F ULLSCREEN,youtParams.FLAG_FULLSCREEN); //隐藏运营商图标、电量等2. 按照图1设计的样式,完成一个Android应用UI的开发(1)添加代码<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView1"android:layout_width="350dp"android:layout_height="100dp"android:src="@drawable/ic_launcher4"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="76dp"android:layout_marginTop="14dp"android:orientation="horizontal"><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/ic_launcher1"/><TableLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"/><EditTextandroid:id="@+id/userName"android:layout_width="120dp"android:layout_height="wrap_content"/> </TableRow><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:"/><EditTextandroid:id="@+id/userPass"android:layout_width="wrap_content"android:layout_height="wrap_content"android:inputType="textPassword"><requestFocus/></EditText></TableRow></TableLayout></LinearLayout><Buttonandroid:layout_width="156dp"android:layout_height="28dp"android:layout_gravity="center"android:layout_marginBottom="10dp"android:layout_marginTop="20dp"android:background="#333"android:onClick="login"android:text="登录"android:textColor="#FFF"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="记住密码"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="自动登录"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="接收产品推广"/><FrameLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="12dp"><Buttonandroid:layout_width="124dp"android:layout_height="34dp"android:layout_marginLeft="160dp"android:background="#333"android:onClick="forgetPass"android:text="忘记密码"android:textColor="#FFF"/><Buttonandroid:layout_width="124dp"android:layout_height="34dp"android:layout_marginLeft="30dp"android:background="#333"android:onClick="register"android:text="注册账号"android:textColor="#FFF"/></FrameLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="63dp"android:orientation="vertical"><TextViewandroid:id="@+id/loading"android:layout_width="match_parent"android:layout_height="wrap_content"/> <ProgressBarstyle="?android:attr/progressBarStyleSmall"android:layout_width="match_parent"android:layout_height="30dp"android:layout_marginBottom="10dp"/> </LinearLayout></LinearLayout>(2)查看布局效果3. 在主Activity文件中,添加用于登录的Login方法用于处理忘记密码的forgetPass方法、用于注册界面Register方法,(1)在MainActivity类中添加登录、忘记密码、注册密码的时间监听程序public void login(View view){if( check() ){StringBuilder sb = new StringBuilder();sb.append("登录成功!"+"\n");sb.append("用户名:" +userName.getText().toString()+"\n");sb.append("密码:" +userPass.getText().toString()+"\n");Toast.makeText(this, sb.toString(),Toast.LENGTH_LONG).show();Intent intent = new Intent(); //登录到ResultActivity 页面intent.setClass(this, ResultActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}}//打开忘记密码界面public void forgetPass(View view){StringBuilder sb = new StringBuilder();Intent intent = new Intent(); //忘记密码到PassActivity页面intent.setClass(this, PassActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}//打开注册界面public void register(View view){StringBuilder sb = new StringBuilder();Intent intent = new Intent(); //注册到RegisterActivity页面intent.setClass(this, RegisterActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}该类的布局如下图:(2)创建登录后的类ResultActivity,对于对于MainActivity传来的数据进行显示protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.activity_result);TextView result = (TextView)findViewById(R.id.result);result.setText("从前一个页面穿过来的内容如下:\n\n"+this.getIntent().getStringExtra("info"));}该类的布局如图:(3)创建忘记密码的类ForgetPassActivitypublic void complete(View view){//StringBuilder sb = new StringBuilder();Intent intent= new Intent(); //忘记密码到MainActivity 页面intent.setClass(this, MainActivity.class);//intent.putExtra("info", sb.toString());this.startActivityForResult(intent, 0x111);}该类的布局如图:(4)创建注册密码的类RegisterActivity,编写事件处理程序public void register(View view){Intent intent = new Intent(); //忘记密码到MainActivity页面intent.setClass(this, MainActivity.class);this.startActivityForResult(intent, 0x111);}五.总结1.实验过程中遇到的问题及解决办法;问题:在布局的嵌套过程中,不是顺利。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电大学(计算机学院)课内实验报告实验名称:界面设计:布局管理器专业:网络工程班级:姓名:学号:指导教师:日期:2017年5月4日一.实验目的1. 了解四种布局管理器的区别和各自特别的属性2. 掌握四种布局管理器的应用场合和用法3. 灵活使用四种布局文件管理器和嵌套实现各种复杂布局4. 掌握复用XML布局文件的方法5. 掌握代码控制UI界面的方法二.实验环境JDK的版本: "1.8.0_40"IDE: eclipse 4.6.1模拟器: 夜神模拟器三.实验内容设计的样式,完成Android应用UI的应用开发四.实验过程及分析1.用JA V A代码设置全屏打开工程src目录下的主Activity文件,在onCreate方法中的执行语句super. onCreate(savedInstanceState)之前,添加如下两句语句requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏this.getWindow().setFlags(youtParams.FLAG_F ULLSCREEN,youtParams.FLAG_FULLSCREEN); //隐藏运营商图标、电量等2. 按照图1设计的样式,完成一个Android应用UI的开发(1)添加代码<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><ImageViewandroid:id="@+id/imageView1"android:layout_width="350dp"android:layout_height="100dp"android:src="@drawable/ic_launcher4"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="76dp"android:layout_marginTop="14dp"android:orientation="horizontal"><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:src="@drawable/ic_launcher1"/><TableLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"/><EditTextandroid:id="@+id/userName"android:layout_width="120dp"android:layout_height="wrap_content"/> </TableRow><TableRowandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:"/><EditTextandroid:id="@+id/userPass"android:layout_width="wrap_content"android:layout_height="wrap_content"android:inputType="textPassword"><requestFocus/></EditText></TableRow></TableLayout></LinearLayout><Buttonandroid:layout_width="156dp"android:layout_height="28dp"android:layout_gravity="center"android:layout_marginBottom="10dp"android:layout_marginTop="20dp"android:background="#333"android:onClick="login"android:text="登录"android:textColor="#FFF"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="记住密码"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="自动登录"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="接收产品推广"/><FrameLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="12dp"><Buttonandroid:layout_width="124dp"android:layout_height="34dp"android:layout_marginLeft="160dp"android:background="#333"android:onClick="forgetPass"android:text="忘记密码"android:textColor="#FFF"/><Buttonandroid:layout_width="124dp"android:layout_height="34dp"android:layout_marginLeft="30dp"android:background="#333"android:onClick="register"android:text="注册账号"android:textColor="#FFF"/></FrameLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="63dp"android:orientation="vertical"><TextViewandroid:id="@+id/loading"android:layout_width="match_parent"android:layout_height="wrap_content"/> <ProgressBarstyle="?android:attr/progressBarStyleSmall"android:layout_width="match_parent"android:layout_height="30dp"android:layout_marginBottom="10dp"/> </LinearLayout></LinearLayout>(2)查看布局效果3. 在主Activity文件中,添加用于登录的Login方法用于处理忘记密码的forgetPass方法、用于注册界面Register方法,(1)在MainActivity类中添加登录、忘记密码、注册密码的时间监听程序public void login(View view){if( check() ){StringBuilder sb = new StringBuilder();sb.append("登录成功!"+"\n");sb.append("用户名:" +userName.getText().toString()+"\n");sb.append("密码:" +userPass.getText().toString()+"\n");Toast.makeText(this, sb.toString(),Toast.LENGTH_LONG).show();Intent intent = new Intent(); //登录到ResultActivity 页面intent.setClass(this, ResultActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}}//打开忘记密码界面public void forgetPass(View view){StringBuilder sb = new StringBuilder();Intent intent = new Intent(); //忘记密码到PassActivity页面intent.setClass(this, PassActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}//打开注册界面public void register(View view){StringBuilder sb = new StringBuilder();Intent intent = new Intent(); //注册到RegisterActivity页面intent.setClass(this, RegisterActivity.class);intent.putExtra("info", sb.toString());this.startActivity(intent);}该类的布局如下图:(2)创建登录后的类ResultActivity,对于对于MainActivity传来的数据进行显示protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.activity_result);TextView result = (TextView)findViewById(R.id.result);result.setText("从前一个页面穿过来的内容如下:\n\n"+this.getIntent().getStringExtra("info"));}该类的布局如图:(3)创建忘记密码的类ForgetPassActivitypublic void complete(View view){//StringBuilder sb = new StringBuilder();Intent intent= new Intent(); //忘记密码到MainActivity 页面intent.setClass(this, MainActivity.class);//intent.putExtra("info", sb.toString());this.startActivityForResult(intent, 0x111);}该类的布局如图:(4)创建注册密码的类RegisterActivity,编写事件处理程序public void register(View view){Intent intent = new Intent(); //忘记密码到MainActivity页面intent.setClass(this, MainActivity.class);this.startActivityForResult(intent, 0x111);}五.总结1.实验过程中遇到的问题及解决办法;问题:在布局的嵌套过程中,不是顺利。