版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章Android基础入门《Android移动开发基础案例教程(第3版)》第1章Android基础入门第2章Android常见界面布局第3章Android常见界面控件第4章
程序活动单元Activity第5章
数据存储第6章
内容提供者和内容观察者第7章
广播机制第8章
服务第9章
网络编程第10章
图形图形处理第11章
多媒体应用开发第12章
综合项目——仿美团外卖全套可编辑PPT课件
学习目标/Target
了解移动通信技术,对从1G到5G的发展有初步的认识
掌握编写简单Android程序的步骤,能够编写一个HelloWorld程序
掌握Android开发环境的搭建方法,能够独立完成
AndroidStudioJellyfish|2023.3.1的安装
掌握资源的管理与使用方式,能够灵活管理与使用程序中的资源
掌握单元测试及Logcat的使用方法,能够对Android程序进行调试章节概述/SummaryAndroid是Google公司基于Linux平台开发的主要应用于智能手机及平板电脑的操作系统,它自问世以来,受到了前所未有的关注,并迅速成为移动平台最受欢迎的操作系统之一。通过开发Android应用程序,开发人员不仅可以参与到规模不断扩大的移动应用市场,还可以提升自己的技术能力,为职业发展创造更多的机会。目录/Contents010203Android简介搭建Android开发环境开发第一个Android程序目录/Contents040506Android程序结构资源的管理与使用程序调试Android简介1.1
先定一个小目标!了解移动通信技术,对从1G到5G的发展有初步的认识1.1.1移动通信技术1.1.1移动通信技术从语音到万物互联:移动通信的演进时代核心特点标志性应用1G(第一代移动通信技术)模拟语音仅限通话语音通话2G(第二代移动通信技术)数字语音传输短信+低速数据GMS、彩信3G(第三代移动通信技术)移动多媒体视频通话、网页浏览移动QQ、网页浏览4G(第四代移动通信技术)高速宽带高清流媒体、手游微信、抖音、移动支付5G(第五代移动通信技术)万物智联高速率、低时延、大连接自动驾驶、VR/AR、物联网
先定一个小目标!了解Android发展历史,能够说出Android各版本对应的系统名称1.1.2Android发展历史1.1.2Android发展历史安迪·鲁宾:创立项目并奠定了Android的早期愿景和技术方向。Google收购:提供了充足的资金、资源和全球影响力,为项目保驾护航。开放手机联盟(OHA):联合84家产业链巨头,从源头解决了硬件、软件和市场的推广问题。Apache开源协议:免费、开放的策略吸引了全球开发者,迅速形成庞大的生态系统。2003年2005年2007年2008年从初创到开源1.1.2Android发展历史Android各版本发布时间及其代号发布时间代号2009年4月,Android1.5Cupcake(纸杯蛋糕)正式发布。9月,Android1.6Donut(甜甜圈)正式发布。10月,Android2.0/2.1Éclair(闪电泡芙)正式发布。2010年5月,Android2.2/2.2.1Froyo(冻酸奶)正式发布。12月,Android2.3Gingerbread(姜饼)正式发布。2011年2月,Android3.0Honeycomb(蜂巢)正式发布。5月,Android3.1Honeycomb(蜂巢)正式发布。7月,Android3.2Honeycomb(蜂巢)正式发布。10月,Android4.0IceCreamSandwich(冰激凌三明治)正式发布。1.1.2Android发展历史发布时间代号2012年6月,Android4.1JellyBean(果冻豆)正式发布。10月,Android4.2JellyBean(果冻豆)正式发布。2013年7月,Android4.3JellyBean(果冻豆)正式发布。11月,Android4.4KitKat(奇巧巧克力)正式发布。2014年10月,Android5.0Lollipop(棒棒糖)正式发布。2015年9月,Android6.0Marshmallow(棉花糖)正式发布。2016年8月,Android7.0Nougat(牛轧糖)正式发布。2017年8月,Android8.0/8.1Oreo(奥利奥)正式发布。2018年8月,Android9.0Pie(派)正式发布。Android各版本发布时间及其代号1.1.2Android发展历史发布时间代号2019年9月,Android10.0QuinceTart(榅桲果塔)正式发布。2020年9月,Android11.0RedVelvetCake(红丝绒蛋糕)正式发布。2021年10月,Android12.0SnowCone(刨冰)正式发布。2022年5月,Android13.0Tiramisu(提拉米苏)正式发布。2023年10月,Android14.0UpsideDownCake(翻转蛋糕)正式发布。2024年4月,Android15.0VanillaIceCream(香草冰淇淋)Beta版本正式发布,正式版在9月份发布。Android各版本发布时间及其代号Android一词最早出现于法国作家利尔·亚当在1886年发表的科幻小说《未来的夏娃》中,作者将外表像人的机器起名为Android。Android本意指“机器人”,Google公司将Android图标设计为一个绿色机器人,表示Android符合环保概念。Android图标的由来1.1.2Android发展历史
先定一个小目标!熟悉Android体系结构,能够解释Android系统的4种分层结构1.1.3Android体系结构1631.1.3Android体系结构Android体系结构应用程序层应用程序框架层核心类库Linux内核层用户可见应用(短信、联系人、游戏等)开发API(活动管理器、通知管理器等)系统库+Android运行时库硬件驱动(显示、音频、蓝牙等)1.1.3Android体系结构所有安装在设备上的应用集合。典型示例系统应用:联系人、短信、电话。第三方应用:GooglePlay下载的游戏、社交软件。特点用户直接交互层。依赖下层框架API实现功能。1.应用程序层1.1.3Android体系结构提供开发API,构建应用的基石。关键组件ActivityManager:管理应用生命周期与导航。NotificationManager:控制状态栏通知。ContentProvider:实现应用间数据共享。使用方法开发者直接调用API开发应用(无需重复造轮子)。2.应用程序框架层1.1.3Android体系结构核心类库(Library)中包含系统库及Android运行时(AndroidRuntime)库。系统库OpenGLES:3D图形渲染。WebKit:浏览器引擎支持。作用:提供高性能底层能力。Android运行时(AndroidRuntime)库Java核心库:支持Java语言开发。Dalvik虚拟机:专为移动设备优化。3.核心类库1.1.3Android体系结构硬件抽象层,驱动硬件运行。关键驱动支持:显示驱动音频驱动4.Linux内核层照相机驱动蓝牙驱动电源管理驱动网络驱动
先定一个小目标!熟悉Dalvik虚拟机与ART虚拟机,能够说明Dalvik虚拟机与ART虚拟机编译文件的过程1.1.4Dalvik虚拟机与ART虚拟机1.1.4Dalvik虚拟机与ART虚拟机为什么需要定制虚拟机?1.1.4Dalvik虚拟机与ART虚拟机Android应用主要采用Java开发,Java字节码无法直接在Android系统上运行,需要一个“翻译官”(虚拟机)来将字节码转换为机器码并管理应用运行。1.1.4Dalvik虚拟机与ART虚拟机Dalvik虚拟机指令集基于寄存器架构,通过执行其特有的dex文件来实现一系列管理,包括对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等。每一个Android应用程序在底层都会对应一个独立的Dalvik虚拟机,其代码在虚拟机的解释下得以执行。Dalvik虚拟机1.1.4Dalvik虚拟机与ART虚拟机Dalvik编译时机:在编译文件时采用的是JIT技术,即在运行时将字节码转换为机器码,这种技术并不高效。劣势:重复编译降低效率、占用CPU资源,增加功耗、应用启动与运行延迟较高。Dalvik虚拟机编译文件的过程如下图所示。Dalvik虚拟机1.1.4Dalvik虚拟机与ART虚拟机Android4.4引入了ART虚拟机替代Dalvik虚拟机ART虚拟机,提高Android程序的执行效率。从Android5.0开始,ART虚拟机成了Android平台的默认虚拟机。ART虚拟机工作流程与Dalvik虚拟机工作流程大致相同。ART编译时机:在安装Android应用程序时,将字节码预先编译成机器码并存储在本地,这样每次运行应用程序时就不需要执行编译了,这项技术被称为AOT技术。优势:提升运行效率,降低设备的耗电量,优化垃圾回收(缩短应用停顿时间)。ART虚拟机1.1.4Dalvik虚拟机与ART虚拟机特性Dalvik虚拟机ART虚拟机编译时机运行时(JIT)安装时(AOT)执行效率低(每次需编译)高
(直接运行机器码)安装速度快慢(需预编译)存储占用低较高(存储机器码)功耗较高较低DalvikVSART搭建Android开发环境1.2
先定一个小目标!掌握Android开发环境的搭建方法,能够独立完成AndroidStudioJellyfish|2023.3.1的安装1.2搭建Android开发环境1.2搭建Android开发环境AndroidStudio是Google公司为Android提供的一个官方IDE工具,它集成了Android所需的开发工具。AndroidStudio对安装环境的要求如下。JDK的版本不得低于1.8。系统空闲内存至少为4GB。从AndroidStudio官网下载AndroidStudioJellyfish|2023.3.1版本的安装包。AndroidStudio官网下载页面1.2搭建Android开发环境STEP011.下载AndroidStudioSTEP01单击上图的“下载AndroidStudioJellyfish”按钮,弹出关于AndroidStudioJellyfish|2023.3.1的条款说明与协议。条款说明与协议1.2搭建Android开发环境STEP02STEP011.下载AndroidStudio选中上图的“Ihavereadandagreewiththeabovetermsandconditions”复选框之后,单击复选框下方的“DownloadAndroidStudioJellyfish|2023.3.1forWindows”按钮,开始下载AndroidStudioJellyfish|2023.3.1。1.2搭建Android开发环境STEP031.下载AndroidStudio成功下载AndroidStudio安装包后,双击扩展名为.exe的文件,打开WelcometoAndroidStudioSetup界面。WelcometoAndroidStudioSetup界面1.2搭建Android开发环境STEP01STEP012.安装AndroidStudio单击上图的“Next”按钮,进入ChooseComponents界面。1.2搭建Android开发环境STEP02ChooseComponents界面STEP012.安装AndroidStudio单击上图的“Next”按钮,进入ConfigurationSettings界面。1.2搭建Android开发环境STEP01STEP03ConfigurationSettings界面STEP012.安装AndroidStudio单击上图的“Next”按钮,进入ChooseStartMenuFolder界面,该界面用于设置在开始菜单中显示的文件夹名称。1.2搭建Android开发环境STEP04ChooseStartMenuFolder界面STEP012.安装AndroidStudio单击上图的“Install”按钮,进入Installing界面开始安装。1.2搭建Android开发环境STEP05Installing界面STEP012.安装AndroidStudio单击上图的“Next”按钮,进入CompletingAndroidStudioSetup界面。1.2搭建Android开发环境STEP01STEP06CompletingAndroidStudioSetup界面STEP012.安装AndroidStudio选中上图中的“StartAndroidStudio”复选框,单击“Finish”按钮,会弹出ImportAndroidStudioSettings对话框。ImportAndroidStudioSettings对话框1.2搭建Android开发环境STEP01STEP01STEP013.配置AndroidStudio选中上图的第2个单选按钮,然后单击“OK”按钮,进入HelpimproveAndroidStudio界面。1.2搭建Android开发环境STEP02HelpimproveAndroidStudio界面STEP013.配置AndroidStudio单击上图的“Don'tsend”按钮,可以启动AndroidStudio。首次启动时,会弹出一个提示框,提示无法访问AndroidSDK插件列表。1.2搭建Android开发环境无法访问AndroidSDK插件列表注意:由于首次启动AndroidStudio时,还未下载AndroidSDK,我们可以忽略该提示。STEP033.配置AndroidStudio单击上图的“Cancel”按钮,进入WelcomeAndroidStudio界面。1.2搭建Android开发环境WelcomeAndroidStudio界面STEP043.配置AndroidStudio单击上图的“Next”按钮,进入InstallType界面。1.2搭建Android开发环境InstallType界面STEP053.配置AndroidStudio选中上图的第2个单选按钮“Custom”,表示自定义安装。选中该按钮后,单击“Next”按钮,进入SDKComponentsSetup界面。1.2搭建Android开发环境SDKComponentsSetup界面STEP063.配置AndroidStudio上图提供了AndroidSDK的下载选项与安装路径。AndroidSDK下载选项保持默认,安装路径可以修改。修改完安装路径之后,单击“Next”按钮,进入EmulatorSettings界面。1.2搭建Android开发环境EmulatorSettings界面STEP073.配置AndroidStudio上图用于设置Android模拟器内存空间大小。本书选择设置Android模拟器内存空间为4GB。设置完成之后,单击“Next”按钮,进入InstallingAndroidEmulatorhypervisordriver界面。1.2搭建Android开发环境InstallingAndroidEmulatorhypervisordriver界面STEP083.配置AndroidStudio单击上图的“Next”按钮,进入VerifySettings界面。1.2搭建Android开发环境VerifySettings界面STEP093.配置AndroidStudio检查之前的配置是否有误,如果配置有误则单击“Previous”按钮返回上一步重新配置;如果配置无误,则单击“Next”按钮,进入LicenseAgreement界面。1.2搭建Android开发环境LicenseAgreement界面STEP103.配置AndroidStudio选中上图的“Accept”单选按钮接受许可协议,然后选择第2个许可协议(*intel-android-extra-license),同样选中“Accept”单选按钮接受许可协议。1.2搭建Android开发环境接受许可协议STEP113.配置AndroidStudio单击上图中的“Finish”按钮,进入DownloadingComponents界面。1.2搭建Android开发环境DownloadingComponents界面STEP123.配置AndroidStudio下载完成后的界面。1.2搭建Android开发环境下载完成后的界面STEP133.配置AndroidStudio单击上图的“Finish”按钮,进入WelcometoAndroidStudio界面。1.2搭建Android开发环境WelcometoAndroidStudio界面STEP143.配置AndroidStudio开发第一个Android程序1.3
先定一个小目标!掌握HelloWorld程序的创建,能够完成基础HelloWorld项目的搭建1.3.1创建HelloWorld程序Templates界面STEP11.3.1创建HelloWorld程序单击该按钮WelcometoAndroidStudio界面使用AndroidStudio开发第一个Android程序。1.3.1创建HelloWorld程序在Templates界面,选择“EmptyViewsActivity”模板,单击“Next”按钮,进入EmptyViewsActivity界面。EmptyViewsActivity界面STEP021.3.1创建HelloWorld程序配置完成的EmptyViewsActivity界面。配置完成的EmptyViewsActivity界面STEP031.3.1创建HelloWorld程序单击上图的“Finish”按钮,进入AndroidStudio的代码编辑窗口。AndroidStudio的代码编辑窗口STEP041.3.1创建HelloWorld程序项目创建完成时,代码编辑窗口的右下角会弹出一个提示框。当弹出该提示框时,读者单击提示框左下方的“Automatically”链接即可,系统会自动将程序的相关路径添加至MicrosoftDefender的排除列表。提示框
先定一个小目标!掌握HelloWorld程序的运行,能够使用模拟器或真机运行调试程序1.3.2运行程序HelloWorld程序创建完成后,单击代码编辑窗口的顶部导航栏中的运行按钮,程序就会运行到模拟器上。程序运行结果1.3.2运行程序
先定一个小目标!掌握HelloWorld程序的分析,能够独立解析和修改界面与逻辑1.3.3程序分析HelloWorld程序主要包含两个文件:activity_main.xml文件和MainActivity.java文件。activity_main.xml文件:activity_main.xml是布局文件,用于构建界面。MainActivity.java文件:MainActivity.java用于编写Java代码,将activity_main.xml构建的界面呈现至模拟器上。1.3.3程序分析activity_main.xml文件代码1.3.3程序分析<?xmlversion="1.0"encoding="utf-8"?>//.xml文件的版本为1.0,编码方式为utf-8<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android" xmlns:app="/apk/res-auto" xmlns:tools="/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">//指定布局文件的上下文,即指定当前布局对应的Activity类指定activity_main.xml文件的根元素及其设置1.3.3程序分析 <TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="HelloWorld!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/></androidx.constraintlayout.widget.ConstraintLayout>添加TextView控件,并设置其属性MainActivity.java文件代码1.3.3程序分析packagecn.itcast.helloworld;//定义包名importandroid.os.Bundle;importandroidx.activity.EdgeToEdge;importandroidx.appcompat.app.AppCompatActivity;importandroidx.core.graphics.Insets;importandroidx.core.view.ViewCompat;importandroidx.core.view.WindowInsetsCompat;publicclassMainActivityextendsAppCompatActivity{//定义MainActivity类@Override//注解,表明下面的方法是重写的父类方法protectedvoidonCreate(BundlesavedInstanceState){//定义重写的父类的onCreate()方法导入包super.onCreate(savedInstanceState);//调用父类的onCreate()方法
EdgeToEdge.enable(this);//设置边缘到边缘布局模式setContentView(R.layout.activity_main);//将布局文件显示出来ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main),(v,insets)->{InsetssystemBars=insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom);returninsets;});}}1.3.3程序分析设置一个监听器,以便在窗口尺寸发生变化时作出响应1.3.3程序分析AndroidStudio默认主题是深色背景的,可以进行更换。在AndroidStudio的代码编辑窗口,单击工具栏中的设置按钮,弹出一个菜单列表。更换AndroidStudio主题设置菜单列表1.3.3程序分析在弹出的菜单列表中,选择“Theme…”选项,进入Theme…设置界面,选择Light主题。更换AndroidStudio主题Theme…设置界面
先定一个小目标!掌握模拟器的管理与使用,能够完成模拟器的查看、开关机控制及新设备添加等操作1.3.4模拟器管理AndroidStudio右侧工具栏中的“DeviceManager”按钮和“RunningDevices”按钮用于管理模拟器。“DeviceManager”按钮和“RunningDevices”按钮的位置1.3.4模拟器管理STEP011.查看模拟器单击“RunningDevices”按钮,可以查看正在运行的模拟器;单击“DeviceManager”按钮,可以查看AndroidStudio拥有的模拟器。AndroidStudio拥有的模拟器1.3.4模拟器管理STEP01AndroidStudio当前拥有一个模拟器,模拟器名称为Pixel3aAPI35。AndroidAPI35对应的操作系统版本为Android15.01.查看模拟器通过选择模拟器后面的→“ViewDetails”选项查看模拟器的详细信息。查看模拟器的详细信息1.3.4模拟器管理STEP01通过“Edit”编辑模拟器,通过“Delete”删除模拟器等。1.查看模拟器模拟器处于关机状态,单击模拟器后面的按钮即可开机。1.3.4模拟器管理STEP01模拟器关机状态模拟器开机状态2.模拟器开关机单击模拟器上方的添加按钮,弹出一个菜单列表,在该列表中选择“CreateVirtualDevice”,进入SelectHardware界面。1.3.4模拟器管理STEP01单击添加按钮SelectHardware界面3.添加模拟器在上图中选择屏幕尺寸为5.0英寸、分辨率为1080×1920的Pixel2,选择完成之后,单击“Next”按钮,进入SystemImage界面。1.3.4模拟器管理STEP01SystemImage界面3.添加模拟器在上图中选择的操作系统的版本为R,即Android11.0,选择之后,单击下载按钮,进入SDKComponentInstaller界面,显示模拟器所需资源的下载过程。1.3.4模拟器管理STEP01SDKComponentInstaller界面3.添加模拟器下载完成之后,单击“Finish”按钮,返回SystemImage界面,在SystemImage界面单击“Next”按钮,进入AndroidVirtualDevice(AVD)界面。在AndroidVirtualDevice(AVD)界面,修改模拟器名称为custom01,选择模拟器启动方向为垂直(Portrait),其他选项保持默认。1.3.4模拟器管理STEP01AndroidVirtualDevice(AVD)界面3.添加模拟器单击上图的“Finish”按钮即可完成模拟器的创建。创建完成之后,AndroidStudio就拥有了两个模拟器。1.3.4模拟器管理STEP01AndroidStudio的两个模拟器3.添加模拟器Android程序结构
1.4
先定一个小目标!掌握Android程序结构,能够具备基础开发环境配置能力1.4Android程序结构1.4Android程序结构整个Android项目的构建脚本存放程序的代码和资源等内容指定AndroidSDK路径配置在Android程序中使用的子项目1.4Android程序结构文件或文件夹说明备注app/src/androidTest用于存放调试的代码文件调试相关app/src/main/java用于存放程序的代码文件(核心)核心目录app/src/main/res用于存放程序的资源文件(核心)核心目录app/src/main/AndroidManifest.xml整个程序的配置文件(核心)核心文件app/build.gradle.ktsapp模块的gradle构建脚本构建配置核心文件build.gradle.kts整个Android项目的构建脚本项目级配置perties用于指定AndroidSDK路径环境配置settings.gradle.kts用于配置在Android程序中使用的子项目项目模块配置Android项目中的主要文件和文件夹及其功能资源的管理与使用1.5
先定一个小目标!掌握图片资源的使用,能够灵活管理与使用程序中的图片资源1.5.1图片资源1.5.1图片资源Android中的图片资源包括扩展名为.jpg、.gif、.png等的文件。图片资源分类资源类型存储位置主要用途应用图标资源mipmap开头的文件夹应用图标、启动器图标界面图片资源drawable开头的文件夹界面中的各种图片元素1.5.1图片资源密度范围/dpi名称以mipmap开头的文件夹名称以drawable开头的文件夹(120,160]mipmap_mdpidrawable_mdpi(160,240]mipmap_hdpidrawable_hdpi(240,320]mipmap_xdpidrawable_xdpi(320,480]mipmap_xxdpidrawable_xxdpi(480,640]mipmap_xxxdpidrawable_xxxdpi屏幕密度匹配规则Android根据设备屏幕密度自动匹配不同文件夹中的图片资源。1.5.1图片资源//调用名称以mipmap开头的文件夹中的图片资源文件getResources().getDrawable(R.mipmap.ic_launcher);//调用名称以drawable开头的文件夹中的图片资源文件getResources().getDrawable(R.drawable.icon);1.通过Java代码调用图片资源文件在Activity中可以使用以下方法调用图片资源:1.5.1图片资源//调用名称以mipmap开头的文件夹中的图片资源文件@mipmap/ic_launcher//调用名称以drawable开头的文件夹中的图片资源文件@drawable/icon2.在XML布局文件中调用图片资源文件在XML布局文件中可以使用以下语法调用图片资源:
先定一个小目标!掌握主题和样式资源的使用,能够灵活管理与使用程序中的主题和样式资源1.5.2主题和样式资源1.5.2主题和样式资源STEP011.主题主题资源:包含一种或多种格式化属性的集合,在程序中调用主题资源可改变窗体的样式,对整个应用程序或某个Activity存在全局性影响。定义主题资源的标签:<style></style>:定义主题的标签<item></item>:设置主题样式的标签1.5.2主题和样式资源STEP011.主题
<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><itemname="colorPrimary">@color/colorPrimary</item><itemname="colorPrimaryDark">@color/colorPrimaryDark</item><itemname="colorAccent">@color/colorAccent</item>
</style>在res/values目录下的styles.xml文件中定义主题。用于指定主题名称指定Android提供的父主题1.定义主题1.主题<application
.
android:theme="@style/AppTheme"></application>(2)在Java代码中应用(1)在AndroidManifest.xml文件中应用setTheme(R.style.AppTheme);1.5.2主题和样式资源2.应用主题调用styles.xml文件中定义的主题。1.5.2主题和样式资源STEP01样式资源:用于美化控件。手动创建styles.xml文件的步骤:(1)打开AndroidStudioJellyfish|2023.3.1,选中values文件夹并右击,在打开的菜单中选择“New”→“XML”→“ValuesXMLFile”选项。(2)在弹出的NewAndroidComponent对话框中将样式文件命名为styles,单击“Finish”按钮,完成styles.xml文件的创建。2.样式1.5.2主题和样式资源STEP01在res/values目录下的styles.xml文件中添加名为textViewStyle的样式。1.定义样式<resources><stylename="textViewStyle"><itemname="android:layout_width">20dp</item><itemname="android:layout_height">20dp</item><itemname="android:background">#f54e39</item></style></resources>用于指定样式名称2.样式1.5.2主题和样式资源STEP01<TextViewstyle="@style/textViewStyle"android:text="示例文本"/>在XML布局文件中应用。2.应用样式2.样式
先定一个小目标!掌握布局资源的使用,能够灵活管理与使用程序中的布局资源1.5.3布局资源1.5.3布局资源布局资源:通常用于搭建程序中的各个界面。布局资源存放位置:
在res/layout文件夹中。setContentView(R.layout.activity_main);<includelayout="@layout/activity_main"/>在Activity的onCreate()方法中使用setContentView()方法调用布局资源。1.通过Java代码调用布局资源文件2.在XML布局文件中调用布局资源文件使用<include>标签在XML布局文件中嵌入其他布局文件。
先定一个小目标!掌握字符串资源的使用,能够灵活管理与使用程序中的字符串资源1.5.4字符串资源<resources><stringname="app_name">字符串</string></resources>字符串是使用频率非常高的一种资源,每一款应用基本上都会用到一些字符串作为文本提示信息或者标题文字等。1.5.4字符串资源字符串资源定义在res/values/strings.xml文件中。用于指定字符串资源名称1.定义字符串资源1.5.4字符串资源2.调用字符串资源(2)在XML布局文件中调用字符串资源文件(1)通过Java代码调用字符串资源文件@string/app_namegetResources().getString(R.string.app_name);在Activity的onCreate()方法中调用名为app_name的字符串资源文件。在XML布局文件中调用名为app_name的字符串资源文件。
先定一个小目标!掌握颜色资源的使用,能够灵活管理与使用程序中的颜色资源1.5.5颜色资源<?xmlversion="1.0"encoding="utf-8"?><resources><colorname="colorPrimary">#3F51B5</color><colorname="colorPrimaryDark">#303F9F</color><colorname="colorAccent">#FF4081</color></resources>在Android程序中,View控件默认的颜色不足以满足设计需求,因此开发者通常会使用颜色资源来改变View控件的颜色。颜色资源定义在res/values/colors.xml文件中。用于指定颜色资源名称1.定义颜色资源1.5.5颜色资源2.调用颜色资源(2)在XML布局文件中调用颜色资源文件(1)通过Java代码调用颜色资源文件@color/colorPrimarygetResources().getColor(R.color.colorPrimary);在Activity的onCreate()方法中调用名为colorPrimary的颜色资源文件。在XML布局文件中调用名为colorPrimary的颜色资源文件。1.5.5颜色资源1.5.5颜色资源Android中的颜色值采用RGB(红、绿、蓝)和一个透明度(Alpha)表示,颜色值必须以“#”开头,“#”后面是Alpha-Red-Green-Blue形式的内容。其中,Alpha值可以省略,如果省略,表示颜色默认是完全不透明的。一般情况下,使用以下4种形式定义颜色:#RGB:使用红、绿、蓝三原色的值定义颜色,其中,红、绿、蓝分别使用十六进制数0~f表示。例如,可以使用#f00定义红色。#ARGB:使用透明度及红、绿、蓝三原色来定义颜色,其中,透明度、红、绿和蓝分别使用十六进制数0~f表示。例如,可以使用#8f00定义半透明的红色。定义颜色1.5.5颜色资源#RRGGBB:使用红、绿、蓝三原色定义颜色,与#RGB不同的是,这里的红、绿和蓝分别使用两位十六进制数00~ff表示。例如,可以使用#0000ff定义蓝色。#AARRGGBB:使用透明度及红、绿、蓝三原色来定义颜色,其中,透明度、红、绿和蓝分别使用两位十六进制数00~ff表示。其中#00表示完全透明,#ff表示完全不透明。例如,可以使用#8800ff00定义半透明的绿色。定义颜色
先定一个小目标!掌握尺寸资源的使用,能够灵活管理与使用程序中的尺寸资源1.5.6尺寸资源1.5.6尺寸资源在Android界面中,View控件的宽度、高度和View控件的间距值是通过尺寸资源设置的。尺寸资源定义在res/values/dimens.xml文件中(dimens.xml文件需要手动创建)。1.定义尺寸资源<resources><dimenname="activity_horizontal_margin">16dp</dimen><dimenname="activity_vertical_margin">16dp</dimen></resources>用于指定尺寸资源名称2.调用尺寸资源(2)在XML布局文件中调用尺寸资源文件(1)通过Java代码调用尺寸资源文件@dimen/activity_horizontal_margingetResources().getDimension(R.dimen.activity_horizontal_margin);在Activity的onCreate()方法中调用名为activity_horizontal_margin的尺寸资源文件。在XML布局文件中调用名为activity_horizontal_margin的尺寸资源文件。1.5.6尺寸资源1.5.6尺寸资源Android支持的常用尺寸单位。px(Pixel,像素):每个像素对应屏幕上的一个像素点。dp(Density-independentPixel,设备独立像素):是一种与屏幕密度无关的尺寸单位。sp(ScaledPixel,比例像素):主要用于处理字体大小,可以根据系统字体大小首选项进行缩放。in(Inch,英寸):标准长度单位。1in=2.54cm。mm(Millimeter,毫米):屏幕物理长度单位。Android支持的尺寸单位程序调试1.6
先定一个小目标!掌握单元测试的使用方法,能够对Android程序进行调试1.6.1单元测试1.6.1单元测试为什么使用单元测试?1.6.1单元测试在Android开发中,如果每次修改一个简单的功能代码后,都需要将程序重新运行到设备中,再进入修改功能的响应界面进行调试,将会浪费大量时间,降低开发工作效率。如果使用单元测试对某些功能进行调试,将会大大提高工作效率。单元测试是指在Android程序的开发过程中对最小的功能模块进行调试,它包括JUnit单元测试和Android单元测试。1.6.1单元测试1.本地运行,不需要依赖Android设备。2.运行速度速度快。3.适合只对Java代码功能进行的单元测试。4.测试目录为app/src/test/。JUnit单元测试Android单元测试1.需要连接Android设备或模拟器2.运行速度比较慢。3.适合需要调用AndroidAPI的单元测试。4.测试目录为app/src/androidTest/。1.6.1单元测试1.JUnit单元测试类ExampleUnitTest文件1-1使用@Test注解该类中的方法。publicclassExampleUnitTest{@Testpublicvoidaddition_isCorrect(){assertEquals(4,2+2);}}ExampleUnitTest.java核心代码在方法addition_isCorrect()上右右击,然后选择弹框中的“Runaddition_isCorrect()”选项运行程序。1.6.1单元测试运行成功的结果程序运行结束后,在AndroidStudio左侧导航栏中单击按钮查看运行成功的结果。1.6.1单元测试修改文件1-1中assertEquals()方法的参数,使得系统在调试addition_isCorrect()方法时,显示错误信息。publicclassExampleUnitTest{@Testpublicvoidaddition_isCorrect(){assertEquals(4,1+2);}}修改参数1.6.1单元测试运行失败的结果再次运行程序后,查看运行失败的结果。失败原因是期望值为4,但结果是3;失败位置是ExampleUnitTest.java文件中的第16行代码。1.6.1单元测试2.Android单元测试类ExampleInstrumentedTest@RunWith(AndroidJUnit4.class)publicclassExampleInstrumentedTest{@TestpublicvoiduseAppContext(){ContextappContext=InstrumentationRegistry.getTargetContext();assertEquals("cn.itcast.helloworld",appContext.getPackageName());}}ExampleInstrumentedTest.java核心代码判断“cn.itcast.helloworld”字符串和appContext.getPackageName()方法得到的程序包名是否相同。文件1-2使用@RunWith注解ExampleInstrumentedTest类,使用@Test注解该类中的方法。1.6.1单元测试运行成功的结果在方法useAppContext()上右击,然后选择弹框中的“RunuseAppContext()”选项执行程序,在AndroidStudio左侧导航栏中单击按钮查看运行成功的结果。@RunWith(AndroidJUnit4.class)publicclassExampleInstrumentedTest{@TestpublicvoiduseAppContext(){ContextappContext=InstrumentationRegistry.getTargetContext();assertEquals("helloworld",appContext.getPackageName());}}1.6.1单元测试修改文件1-2中assertEquals()方法的参数,使得系统在调试useAppContext()方法时,显示错误信息。修改参数1.6.1单元测试运行失败的结果再次运行程序后,查看运行失败的结果。失败原因是com.itcast.helloworld参数值;失败位置是ExampleInstrumentedTest.java文件中的第24行代码。
先定一个小目标!掌握Logcat的使用方法,能够对Android程序进行调试1.6.2Logcat的使用Logcat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。Android使用android.util.Log类(简称Log类)的静态方法输出程序的日志内容。1.6.2Logcat的使用Log类输出的日志内容级别(由低到高)Log类中的静态方法VerboseLog.v()DebugLog.d()InfoLog.i()WarningLog.w()ErrorLog.e()AssertLog.wtf()1.6.2Logcat的使用Log.v("MainActivity","Verbose");
Log.d("MainActivity","Debug");
Log.i("MainActivity","Info");
Log.w("MainActivity","Warning");
Log.e("MainActivity","Error");
Log.wtf("MainActivity","Assert");文件1-3在HelloWorld程序中编译MainActivity代码输出日志信息。MainActivity.java核心代码打印信息的标签需要打印的信息1.6.2Logcat的使用Logcat面板中输出的日志信息1.6.2Logcat的使用设置过滤器在过滤器输入框中输入标签“MainActivity”,AndroidStudio就会过滤出所有标签为“MainActivity”的日志信息。本章小结本章主要讲解了Android的基础知识,首先介绍了Android的发展历史及体系结构,然后讲解了如何搭建Android开发环境,接着开发了一个HelloWorld程序,帮助读者了解Android项目的创建、程序的结构,以及资源的管理与使用,最后介绍了程序调试,包括单元测试和Logcat的使用。通过对本章的学习,希望读者能对Android有一个大致的了解,并会独立搭建Android开发环境,为后续学习Android知识做好铺垫。本章小结第2章Android常见界面布局《Android移动开发基础案例教程(第3版)》学习目标/Target
了解View控件与ViewGroup容器,能够说出View控件与ViewGroup容器的作
用和关联
掌握线性布局,能够使用线性布局实现仿动物连连看游戏界面
掌握界面布局,能够在XML布局文件和Java代码中编写界面布局学习目标/Target
掌握相对布局,能够使用相对布局实现音乐播放器界面
掌握帧布局,能够使用帧布局实现霓虹灯界面
掌握表格布局,能够使用表格布局实现计算器界面章节概述/Summary在Android应用程序中,界面由布局和控件组成。布局类似于建筑里的框架,控件相当于建筑里的砖瓦。根据控件在界面中的不同排列位置,Android定义了多种布局进行管理。本章将针对Android界面中常见的布局进行详细讲解。目录/Contents010203View控件界面布局编写方式界面布局的通用属性04线性布局
目录/Contents050607相对布局表格布局帧布局View控件2.1
先定一个小目标!了解View控件与ViewGroup容器,能够说出View控件与ViewGroup容器的作用和关联2.1View控件2.1View控件所有UI元素由View和ViewGroup构成。View为基础视觉控件(如按钮、文本),ViewGroup为容器,用于组织其他View和ViewGroup。ViewGroup可包含普通View控件(如TextView、Button),也可包含其他ViewGroup容器(形成嵌套结构)。Android应用程序的每个界面必须有且只有一个ViewGroup容器,该容器是界面视图树的根节点(Root),承担承载和管理所有子元素的责任。2.1View控件ViewGroup容器和View控件的包含关系界面布局编写方式2.2
先定一个小目标!掌握在XML布局文件中编写布局,能够搭建简单的布局界面2.2.1在XML布局文件中编写布局Android可以使用XML布局文件控制界面布局,从而有效地将界面中的布局代码和Java代码隔离,使程序的结构更加清晰。因此多数Android程序采用这种方式编写布局。2.2.1在XML布局文件中编写布局2.2.1在XML布局文件中编写布局【文件2-1】activity_main.xml文件核心代码示例在res/layout文件夹的XML布局文件中编写布局代码。<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="使用XML布局文件控制UI界面"</RelativeLayout>定义相对布局,继承自ViewGroup定义TextView控件,继承自View
先定一个小目标!掌握在Java代码中编写布局,能够搭建简单的布局界面2.2.2在Java代码中编写布局Android程序的布局不仅可以在XML布局文件中编写,还可以在Java代码中编写。Android中所有布局和控件的对象都可以通过new关键字创建,将创建的布局和控件对象添加到ViewGroup容器中,从而在界面中显示。2.2.2在Java代码中编写布局2.2.2在Java代码中编写布局【文件2-1】activity_main.xml文件核心代码示例使用Java代码改写XML布局文件编写的布局代码。RelativeLayoutrelativeLayout=newRelativeLayout(this);RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);//addRule参数对应RelativeLayout的XML布局属性params.addRule(RelativeLayout.CENTER_IN_PARENT);//设置居中显示TextViewtextView=newTextView(this);//创建TextView控件textView.setText("Java代码实现界面布局");//设置TextView控件的文字内容textView.setTextColor(Color.RED);//设置TextView控件的文字颜色textView.setTextSize(18); //设置TextView控件的文字大小 //添加TextView控件和TextView的布局属性relativeLayout.addView(textView,params);setContentView(relativeLayout); //设置在Activity中显示RelativeLayout创建RelativeLayout对象将TextView控件和LayoutParams对象添加到RelativeLayout中界面布局的通用属性2.3
先定一个小目标!掌握布局的通用属性,能够设置布局的样式2.3界面布局的通用属性2.3界面布局的通用属性Android提供了四种常用布局:线性布局、相对布局、表格布局和帧布局,它们都继承自ViewGroup,并支持ViewGroup中定义的通用属性。这些属性可用于控制布局的尺寸、位置和外观等特性。2.3界面布局的通用属性Android提供的4种常用布局及其特点:线性布局以水平或垂直方向排列表格布局通过相对定位排列通过表格形式排列相对布局帧布局开辟空白区域,帧里的控件(层)叠加2.3界面布局的通用属性属性名称功能描述android:id设置当前布局的唯一标识android:layout_width设置当前布局的宽度android:layout_height设置当前布局的高度android:background设置当前布局的背景android:layout_margin设置当前布局与屏幕边界、周围布局或控件的距离android:padding设置当前布局与该布局中控件的距离布局的通用属性android:id
android:layout_width
android:layout_height1.用于设置当前布局的唯一标识。2.在XML文件中它的属性值是通过“@+id/属性名称”定义。1.用于设置布局的宽度,其值可以是具体的尺寸,也可以是系统定义的值。2.系统定义的值有fill_parent、match_parent和wrap_content。1.用于设置布局的高度,其值可以是具体的尺寸,也可以是系统定义的值。2.系统定义的值fill_parent、match_parent和wrap_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橡胶制品配料工班组管理考核试卷含答案
- 广东省惠州市一中教育集团2024-2025学年度八年级下学期英语期中试卷(解析版)
- 2026年自考00643短视频策划与制作试题及答案
- 2026年自考00079保险学原理试题及答案
- 2026年健康企业建设计划
- 2026年人工智能在智能仓储物流的解决方案
- 中小学防诈骗短视频宣传记录
- 2026年关于加强单位电梯安全维保管理的事宜
- 物业管理服务规范制度
- 产科急救理论试题
- 2025年安全生产法律法规电视知识竞赛考试卷库附答案
- 2026届江苏省南京市、盐城市高三一模物理卷(含答案)
- 2026年华峰重庆氨纶笔试题及答案
- 2026年糖尿病规范化诊疗指南解读及临床应用课件
- 2026年长治职业技术学院单招职业技能考试题库及答案详解(各地真题)
- 2025-2030中国低空经济行业运行形势与投融资发展状况监测研究报告
- 装饰装修工程验收资料表格
- 【教案】伴性遗传第1课时教学设计2022-2023学年高一下学期生物人教版必修2
- LY/T 2602-2016中国森林认证生产经营性珍稀濒危植物经营
- GB/T 36024-2018金属材料薄板和薄带十字形试样双向拉伸试验方法
- GB/T 19518.2-2017爆炸性环境电阻式伴热器第2部分:设计、安装和维护指南
评论
0/150
提交评论