




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
张霞深圳职业技术学院Android应用开发案例教程(AndroidStudio第二版)
课程网络平台https:///course/218803748.html0103020405AndroidUI设计图像和动画数据存储广播Broadcast与服务Service媒体播放与录制Activity与多个用户界面07网络编程技术书目录06Android发展简史Android发展简史2003年10月,AndyRubin等人创建Android公司,并组建Android团队2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。2005年Google收购了刚刚成立22个月的Android公司。2007年11月5日,以Google为首的34家公司宣布成立开放手机联盟(OpenHandsetAlliance,简称OHA)2008年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google手机——T-MobileG1Android发展简史2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(OpenHandsetAlliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件。Google以Apache免费开源许可证的授权方式,发布了Android的源代码。什么是Android?Android发展史2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android1.0系统,这也是Android系统最早的版本。2009年4月,谷歌正式推出了Android1.5这款手机,从Android1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,Android1.5命名为Cupcake(纸杯蛋糕)。该系统与Android1.0相比有了很大的改进。Android发展史2010年10月份,谷歌宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,谷歌正式发布了Android2.3操作系统Gingerbread(姜饼)。Android开发环境的搭建Android开发环境的搭建以前我们在Eclipse上搭建Android开发环境,过了这么多年,Android系统已经更新换代太多次,开发工具换成了AndroidStudio。Windows下的AndroidStudio环境搭建,见教材附录创建和管理Android虚拟设备Android应用程序的特点Android应用程序组成ActivityIntentBroadcastReceiver010203Android应用程序由松散耦合的组件组成,并使用Manifest绑定到一起。文件Manifest描述了每一个组件和他们的交互方式,还用于指定应用程序元数据、平台要求、外部库以及必须的权限。以下几个组件提供了应用程序的基本结构模块:ServiceContentProvider0405Activity组件相当于手机屏幕的一个页面,上面可以放各种UI组件。一个应用包含多个Activity。Android使用堆栈存放多个Activity对象,并自动进行管理。Activity存在生命周期。Intent组件Intent:是一个将要执行的操作的抽象描述(Google)。主要用于在不同Activity之间跳转,并且传递数据。主要动作类型:Main、PICK、VIEW、EDIT等,对应的数据以URI表示。IntentFilter用于描述Activity能够操作那些Intent对象。5GBroadcast,BroadcastReceiver主要用于对应用程序app的外部事件进行响应。通过NotificationManager来通知用户发生了什么事件。需要在AndroidManifest.xml注册,或者通过context.RegisterReceiver()注册。可以通过Context.sendBroadcast()把自己的Broadcast广播给其他app。Service组件后台运行的应用程序。处理与用户界面无关的业务逻辑。例如音乐的后台播放,app即便是关闭,音乐也可继续播放。ContentProvider组件用于在不同应用程序app之间交换数据。通过实现ContentProvider的抽象接口,从而把自己的数据暴露给其他应用程序调用,而其他应用程序无需关心数据的存储的具体细节。第1章AndroidUI设计Android应用开发案例教程(AndroidStudio版第二版)1.1新建Android项目1.2Android布局管理1.3用户界面组件包widget1.4常用组件章目录1.5列表组件启动AndroidStudio,出现弹出窗,选择“CreateNewProject”。然后在后面的对话框中输入应用程序名称(Chap01)、包名等参数,并选择AndroidSDK的版本。1.1.1创建一个新项目1.1.1创建一个新项目1.1.2Android项目结构app模块下的文件目录结构:manifests:项目的配置信息文件。java:源代码和测试代码。res:资源目录,存储项目资源。GradleScripts模块下的文件目录结构Gradle是一种依赖管理工具基于Groovy的内部领域特定(DSL)语言打开Chap01项目,可以看到应用项目的目录和文件结构。定义121.1.2Android项目结构res目录用于存放项目所需要的声音、图片、用户界面等资源文件。其中最重要的三个目录:3drawable目录存放图标资源。layout目录存放用户界面布局文件。values目录存放参数描述文件资源,都是XML文件,如字符串string.xml、颜色color.xml、数组arrays.xml等。res目录结构资源目录res及其资源类型例如在Activity中显示布局视图setContentView(R.layout.main);例如Java程序要获得布局文件中的图片组件img=(Image)findViewById(R.id.img);例如Java程序要获得布局文件中的列表组件alist=(List)findViewById(R.id.alist);1.1.3res资源引用方法程序中引用资源时,需要使用R类,其引用形式为:R.资源类型.资源名称3121.1.4AndroidManifest.xml项目配置文件每个应用程序都需要配置文件,它位于应用程序根目录下。1.1.5Android应用程序架构分析01逻辑控制层与表现层在Android应用程序中,逻辑控制层与表现层是分开的设计的。逻辑控制层由Java应用程序实现,表现层由XML文档描述。逻辑控制层与表现层关系图1.1.5Android应用程序架构分析02Activity主程序介绍布局文件与Activity关联是非常重要的一个环节。Activity须重写方法onCreate()。每个Activity都要进行一些必要的初始化。1.1新建Android项目1.2Android布局管理1.3用户界面组件包widget1.4常用组件章目录1.5列表组件1.2Android布局管理-÷×+设计思想:Android系统应用程序的设计模式是采用MVC模式,即把应用程序分为表现层(View)、控制层(Control)、业务模型层(Model)。按照这种模式,图形界面布局为表现层,Activity控制程序为控制层,将应用程序的界面设计与功能控制设计分离,从而可以单独地修改用户界面。1.2.1布局文件的规范与重要属性布局文件的规范1)布局文件作为应用项目的资源存放在res/layout目录下,其扩展名为.xml。2)布局文件的根节点通常会定义一个布局方式,在根节点内可以添加组件作为节点。3)根节点必须包含一个命名空间:xmlns:android=/apk/res/android4)如果要在Java程序中控制界面组件,则必须为组件定义一个ID标识。5)文件名只能由小写英文字母、数字和下划线组成,并且只能以小写字母开头。属性值对齐方式设置组件大小的属性值,单位
px(piexls,像素):即屏幕上的发光点。
dp(或dip)设备独立像素:支持多分辨率设备的抽象单位。
sp(scaledpixels,比例像素):设置字体大小。由android:gravity属性控制,其属性值有top、bottom、left、right、center_horizontal、center_vertical等。新建布局文件1.2.2常见的布局方式布局文件可以单独创建,创建时需要输入文件名,文件名的字母必须全部小写,然后输入布局文件的类型。新建布局1.2.2常见的布局方式AndroidStudio4.2版本默认的布局是线性布局LinearLayout
。在工作区中有两种预览,一种设计预览在左侧,一种叫做蓝图在右侧。两者可以辅助进行布局预览。1.2.2常见的布局方式01线性布局LinearLayout线性布局LinearLayout将组件按照水平或垂直方向排列。
1)设置线性布局为水平方向 android:orientation="horizontal”
2)设置线性布局为垂直方向 android:orientation="vertical"【例1-1】线性布局应用示例
设计一个5个按钮的线性布局线性布局的控件层级关系1.2.2常见的布局方式02帧布局FrameLayout帧布局FrameLayout是将组件放置到左上角位置,当添加多个组件时,后面的组件将遮盖之前的组件。在XML布局文件中,由根元素FrameLayout来标识帧布局。【例1-2】帧布局应用示例
将图像文件复制到res/drawable目录下布局的控件层级关系和属性帧布局示例结果1.2.2常见的布局方式03表格布局TableLayout表格布局将页面划分成行列构成的单元格。由根元素TableLayout来标识表格布局。行由<TableRow></TableRow>定义。组件放置到哪一列,由android:layout_column指列序号。TableLayout的三个常用属性:android:collapseColumns:设置需要被隐藏的列序号android:shrinkColumns:设置允许被收缩的列序号android:stretchColumns:设置运行被拉伸的列序号
设计一个3行4列的表格布局1.2.2常见的布局方式04相对布局RelativeLayout相对布局是采用相对其它组件的位置的布局方式。通过指定ID关联其他组件,与之右对齐、上下对齐等方式来排列组件。
【例1-4】应用相对布局设计一个图片和4个按钮,如右图。1.2.2常见的布局方式05网格布局GridLayout网格布局是把设置区域划分为若干行和若干列的网格,网格中的一个组件可以占据多行或多列。
可以设置每个组件在网格中的大小和摆放方式。GridLayout主要属性如下:alignmentMode:设置布局管理器的对齐方式。columnCount:设置网格列的数量。rowCount:设置网格行的数量。layout_columnSpan:设置组件占据的列数。layout_rowSpan:设置组件占据的行数。
应用网格布局设计一个计算器界面1.2.2常见的布局方式06约束布局ConstraintLayout约束布局是一个ViewGroup,它的出现是为了解决布局嵌套过多的问题,以灵活的方式定位和调整组件。在工作区中有两种预览,左侧是设计预览,右侧是蓝图。组件的四个小圆圈是用来关联和定位,四个小方格子用来调整组件的大小。1.1新建Android项目1.2Android布局管理1.3用户界面组件包widget1.4常用组件章目录1.5列表组件1.3.1用户界面组件包widget大多数用户界面组件都放在widget包及其子包中。widget包中的常用组件如表1-3所示。1.3.2View类视图组件View类,是用户界面组件的共同父类。几乎所有的高级UI组件都继承自View类。例如TextView、Button、List、EditText、RadioButton、CheckBox等。一个View就是屏幕上一块矩形区域,负责渲染和上面的事件处理,并可以设置该区域是否可见,是否可以获取焦点等。对于View类及其子类的属性,可以在布局文件中设置,也可以在Java文件中动态设置。1.1新建Android项目1.2Android布局管理1.3用户界面组件包widget1.4常用组件章目录1.5列表组件1.4.1文本框TextView文本框(TextView)用于显示文本内容,是最常用的组件之一。布局文件xml控制文件java1.4.1文本框TextView颜色属性在XML文件中表示颜色的方法有多种。
Android系统在android.graphics.Color中定义了12种常见的颜色常数。Color.BLACK 黑色Color.BLUE 蓝色Color.CYAN 青绿色Color.DKGRAY 灰黑色Color.GRAY 灰色Color.GREEN 绿色Color.LTGRAY 浅灰色Color.MAGENTA
红紫色Color.RED
红色Color.TRANSPARENT 透明Color.WHITE
白色Color.YELLOW
黄色1.4.1文本框TextView例1-7设计一个文本标签组件程序,有标题和正文,而且翻看的文字超过一屏。把大段文字TextView放在一个ScrollView里面,当文字内容很长的时候,ScrollView自动会显示滚动条。1.4.1文本框TextView例1-7strings.xml部分源代码:values目录下的strings.xml,添加属性为”hello”的元素项的文本内容。<stringname="title">少年中国说(节选)\n梁启超〔近代〕</string><stringname="hello">故今日之责任,不在他人,而全在我少年。少年智则国智,少年富则国富;少年强则国强,少年独立则国独立;少年自由则国自由;少年进步则国进步;少年胜于欧洲,则国胜于欧洲;少年雄于地球,则国雄于地球。红日初升,其道大光。河出伏流,一泻汪洋。潜龙腾渊,鳞爪飞扬。乳虎啸谷,百兽震惶。鹰隼试翼,风尘翕张。奇花初胎,矞矞皇皇。干将发硎,有作其芒。天戴其苍,地履其黄。纵有千古,横有八荒。前途似海,来日方长。美哉我少年中国,与天不老!壮哉我中国少年,与国无疆!</string>1.4.2文本编辑框
EditText文本编辑框(EditText),在设计面板上的名称是PlainText,用于接收用户输入的文本信息内容。它继承了文本框(TextView)的主要方法。
【例1-8】制作登陆界面1.4.3图像显示类
ImageView图像显示(ImageView)类用于显示图片或图标等图像资源,并提供图像缩放及着色(渲染)等图像处理功能。1.4.4按钮ButtonButton用于处理人机交互的事件。Button是TextView的子类,继承了TextView所有的方法和属性。事件处理的实现步骤:给控件设置监听、给监听接口添加事件处理代码。Button常需要设置OnClickListener(点击事件监听),当单击按钮时,监听触发onClick事件,实现用户需要的功能。OnClickListener(点击事件监听接口)有一个onClick()方法,一定要重写这个方法。1.4.5进度条进度条(ProgressBar)能以形象直观地显示某个过程的进度。例如音乐播放,文件下载都需要时间完成,最需要进度条提示执行进度,ProgressBar的常用属性:android:max,进度条的最大值android:progress,进度条的当前进度
【例1-9】进度条应用示例1.4.6单选按钮与复选按钮单选组件RadioGroup由一组单选按钮RadioButton组成。单选组件RadioGroup用于多项选择中,只允许任选其中一项的情形。复选按钮CheckBox用于多项选择的情形,用户每次可选择多个选项。复选按钮CheckBox是按钮Button的子类,其属性与方法继承于按钮Button。【例1-10】单选按钮与复选框应用示例。1.1新建Android项目1.2Android布局管理1.3用户界面组件包widget1.4常用组件章目录1.5列表组件列表也是常用组件,ListView类是Android程序开发中经常用到的组件,该组件必须与适配器配合使用,由适配器提供显示样式和显示数据。1.5.1ListView类1.5.1ListView类批量数据的输出,需要借助适配器接口Adaper,由Adaper提供显示数据和显示样式的联系。Adaper是连接后端数据和前端显示的接口,是数据和UI(View)之间的纽带。在常见的ListView、GridView都需要用到Adapter。适配器接口AdapterData、Adapter、View三者关系图1.5.1ListView类Android中所有的Adapter一览1.5.1ListView类常用的AdapterArrayAdapter支持泛型操作,最为简单。例如大部分程序会用到String,我们可以将ArrayAdaper泛型指定为String。BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;SimpleAdapter有最好的扩充性,可以自定义出各种效果。1.5.2ArrayAdapter数组适配器ArrayAdapter的构造需要3个参数,依次为this上下文、行布局(注意是列表每一行的布局)、数据源(一个数组)。使用ArrayAdapter来装配数据,连接列表视图和数组。Android系统内置了多种ListItem
布局方式。android.R.layout.simple_list_item_1:一行text。android.R.layout.simple_list_item_2:一行title,一行text。用setAdapter()完成适配的最后工作。1.5.1ListView类
【例1-11】简单列表示例,效果如图1.5.2ArrayAdapter数组适配器示例1-11:ArrayAdapterOnItemClickListener是一个接口,用于监听列表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全景式复习2024年特许金融分析师考试试题及答案
- 实战演练2024年特许金融分析师考试试题及答案
- 2024年特许金融分析师考试个人经验分享及答案
- 特许金融分析师高效复习试题及答案
- 优化准备流程的特许金融分析师考试策略与试题及答案
- 门禁管理系统C语言实现
- 2025年广东省深圳市新希望联盟高考英语四模试卷
- 特许金融分析师考试重要术语解析与试题及答案
- 面试公司要求做
- CFA知识体系的深度理解试题及答案
- 陕西省2023年中考英语试题(附真题答案)
- 食管胃底静脉曲张护理
- 中小学必背飞花令诗词-(春、月、风、花、山、江、人、日、动物、颜色、数字)
- DB32-T 2283-2024 公路工程水泥搅拌桩成桩质量检测规程
- 基于3D打印的机械零件轻量化设计与制造
- 文言文《守株待兔》说课稿
- 地震演练预案中的应急高层建筑疏散策略
- 双相情感障碍护理
- 2024年中国中信集团招聘笔试参考题库含答案解析
- 2024年国家能源集团招聘笔试参考题库含答案解析
- 2023风电机组基础锚笼环技术规范
评论
0/150
提交评论