《Android移动应用基础教程(Android Studio)(第3版)》全套教学课件_第1页
《Android移动应用基础教程(Android Studio)(第3版)》全套教学课件_第2页
《Android移动应用基础教程(Android Studio)(第3版)》全套教学课件_第3页
《Android移动应用基础教程(Android Studio)(第3版)》全套教学课件_第4页
《Android移动应用基础教程(Android Studio)(第3版)》全套教学课件_第5页
已阅读5页,还剩939页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章Android基础入门《Android移动应用基础教程(AndroidStudio)(第3版)》第1章Android基础入门.pptx第2章Android常见界面布局.pptx第3章Android常见界面控件.pptx第4章程序活动单元Activity.pptx第5章数据存储.pptx第6章阶段案例——记事本.pptx第7章内容提供者与内容观察者.pptx第8章广播机制.pptx第9章服务.pptx第10章Android事件处理.pptx第11章网络编程.pptx第12章阶段案例——智能聊天机器人.pptx第13章图形图像处理.pptx第14章多媒体应用开发.pptx第15章综合项目——网上订餐.pptx第16章拓展阅读——Flutter与鸿蒙.pptx全套可编辑PPT课件学习目标/Target

了解1G~5G的通信技术,能够阐述1G~5G技术的发展内容掌握AndroidStudio开发环境的搭建步骤,能够独立搭建AndroidStudio开发环境掌握编写简单Android程序的步骤,能够编写一个HelloWorld程序掌握资源的管理与使用方式,能够灵活使用程序中的资源掌握单元测试与Logcat的使用方式,能够对Android程序进行调试章节概述/SummaryAndroid是Google公司基于Linux平台开发的手机及平板电脑的操作系统,它自问世以来,受到了前所未有的关注,并迅速成为移动平台最受欢迎的操作系统之一。Android手机随处可见,如果能加入Android开发者行列,编写自己的应用程序供他人使用,想必是件诱人的事情。从今天开始,我们将开启Android开发之旅,逐渐成为一名出色的Android开发者。目录/Contents1.11.21.3Android简介Android开发环境搭建开发第一个Android程序目录/Contents1.41.51.6Android程序结构资源的管理与使用程序调试Android简介1.1

先定一个小目标!了解1G~5G的通信技术,能够阐述1G~5G技术的发展内容1.1.1通信技术1G(第一代移动通信技术):是指最初的模拟、仅限语音的蜂窝电话标准。2G(第二代移动通信技术):以数字语音传输技术为核心,代表为GSM,传输速度为9.6kbit/s。3G(第三代移动通信技术):是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。3G通信网在室内、室外和行车的环境中能够分别支持至少2Mbit/s、384Kbit/s以及144Kbit/s的传输速度。4G(第四代移动通信技术):该技术包含TD-LTE和FDD-LTE两种制式。4G通信网可以达到10Mbit/s至20Mbit/s,最高甚至可以达到100Mbit/s。5G(第五代移动通信技术):其理论传输速度可达20Gbit/s。1.1.1通信技术

先定一个小目标!了解Android的发展历史,能够描述Android各版本对应的系统名称和图标1.1.2Android发展历史1.1.2Android发展历史Android最初是由AndyRubin(安迪·鲁宾)创立的一个手机操作系统,后来被Google收购,并让AndyRubin继续负责Android项目。经过数年的研发,2007年11月,Google对外界展示了这款名为Android的操作系统,并与84家硬件制造商、软件开发商及电信营运商组建的开放手机联盟共同研发与改良Android系统。随后,Google以Apache开源许可证的授权方式,发布了Android的源代码。1.1.2Android发展历史2009年4月30日,Android1.5

Cupcake(纸杯蛋糕)正式发布。2009年9月15日,Android1.6

Donut(甜甜圈)版本发布。......Android13.0Android1.5Cupcake(纸杯蛋糕)1.1.2Android发展历史从Android10.0开始,Google将不再使用甜点名称作为版本命名的方式,而是直接使用数字作为版本命名的方式,所以只有Android1.5~Android9.0才有对应的甜点名称与甜点的图标,这些版本对应的版本号名称、甜点代号和图标如下图所示。Android图标的由来多学一招Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中,将外表像人的机器起名为Android。Android本意指“机器人”,Google公司将Android的标识设计为一个绿色机器人,表示Android系统符合环保概念。Android图标如下图所示。1.1.2Android发展历史

先定一个小目标!了解Android的体系结构,能够说出Android系统的4层架构1.1.3Android体系结构应用程序层应用程序框架层核心类库层Linux内核层1.1.3Android体系结构

先定一个小目标!了解Dalvik虚拟机,能够说出Dalvik虚拟机编译文件的过程1.1.4Dalvik虚拟机Dalvik是Google公司设计的,用于在Android平台上运行的虚拟机,其指令集基于寄存器架构,执行其特有的dex文件来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,Dalvik虚拟机编译文件的过程如下图所示。1.1.4Dalvik虚拟机Dalvik虚拟机编译文件过程ART模式多学一招ART模式英文全称为Android

runtime,它是GoogleAndroid4.4系统新增的一种应用运行模式。ART模式与传统的Dalvik模式不同,它可以实现更为流畅的安卓系统体验,不过只能在Android4.4以上系统中采用此模式。ART模式与Dalvik模式最大的不同在于,当启用ART模式后,系统在安装应用的时候会进行一次预编译,并在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。1.1.4Dalvik虚拟机Android开发环境搭建1.2

先定一个小目标!掌握AndroidStudio开发环境的搭建步骤,能够独立搭建AndroidStudio开发环境1.2.1AndroidStudio安装1.2.1AndroidStudio安装

俗话说,“工欲善其事,必先利其器”。同样,在开发Android程序之前,首先要搭建好开发Android程序的环境。最开始Android是使用Eclipse作为开发工具的,但是在2015年底,Google公司声明不再对Eclipse提供支持服务,AndroidStudio将全面取代Eclipse。接下来,本节将针对AndroidStudio开发工具的环境搭建进行讲解。步骤1步骤2步骤3AndroidStudio的下载AndroidStudio安装包可以在AndroidStudio官网下载。这里我们以Windows64操作系统为例,下载AndroidStudio2021.2.1版本。AndroidStudio下载页面如下图所示。1.2.1AndroidStudio安装1.2.1AndroidStudio安装步骤1步骤3AndroidStudio的安装过程成功下载AndroidStudio安装包后,双击扩展名为.exe的文件,进入WelcometoAndroidStudioSetup窗口,如下图所示。步骤21.2.1AndroidStudio安装步骤1单击上一页图中的“Next”按钮,进入ChooseComponents窗口,如下图所示。步骤2AndroidStudio的安装过程步骤31.2.1AndroidStudio安装步骤1单击上一页图中的“Next”按钮,进入ConfigurationSettings窗口,如下图所示。步骤2AndroidStudio的安装过程步骤31.2.1AndroidStudio安装单击上一页图中的“Next”按钮进入ChooseStartMenuFolder窗口,该窗口用于设置在“开始”菜单中显示的文件夹名称,ChooseStartMenuFolder窗口如下图所示。步骤2AndroidStudio的安装过程步骤3步骤11.2.1AndroidStudio安装单击上一页图中的“Install”按钮进入Installing窗口开始安装,如下图所示。步骤2AndroidStudio的安装过程步骤3步骤11.2.1AndroidStudio安装安装完成后,单击上一页图中的“Next”按钮进入CompletingAndroidStudioSetup窗口,如下图所示。步骤2单击图中的“Finish”按钮,至此,AndroidStudio的安装全部完成。AndroidStudio的安装过程步骤3步骤11.2.1AndroidStudio安装步骤1步骤2AndroidStudio的配置如果我们在上一页图中勾选了StartAndroidStudio复选框,安装完成之后AndroidStudio会自动启动,弹出一个ImportAndroidStudioSettings对话框(选择导入AndroidStudio配置文件位置的对话框),如下图所示。步骤31.2.1AndroidStudio安装我们选择上一页图中的选项②后会进入AndroidStudio的开启窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装上一页图中的进度完成之后,会进入WelcomeAndroidStudio窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Don’tsend”按钮,会弹出一个AndroidStudioFirstRun对话框,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Cancel”按钮后进入WelcomeAndroidStudio窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Next”按钮进入InstallType页面,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Next”按钮进入

SelectUITheme(选择UI主题)窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Next”按钮进入VerifySettings窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Next”按钮,程序进入到LicenseAgreement窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“intel-android-extra-license”选项,窗口右侧显示的是额外许可协议信息,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Finish”按钮进入DownloadingComponents页面,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装下载完成后,会显示DownloadingComponents(下载完成)窗口,如下图所示。步骤3AndroidStudio的配置步骤1步骤21.2.1AndroidStudio安装单击上一页图中的“Finish”按钮,进入WelcometoAndroidStudio(Administrator)窗口,如下图所示。步骤3至此,AndroidStudio开发工具的配置已经完成。AndroidStudio的配置步骤1步骤2

先定一个小目标!掌握模拟器创建的步骤,能够独立创建模拟器1.2.2模拟器创建1.2.2模拟器创建Android程序可以运行在手机和平板等物理设备上,当运行Android程序时,没有手机或平板等物理设备,可以使用Android系统提供的模拟器。模拟器是一个可以运行在计算机上的虚拟设备。在模拟器上可预览和测试Android应用程序。1.2.2

模拟器创建步骤3步骤2弹出DeviceManager页面当创建完第一个Android程序时,在AndroidStudio中,单击工具栏中的“”图标或右侧工具栏中的“DeviceManager”选项,会弹出一个DeviceManager对话框,如下图所示。步骤11.2.2

模拟器创建步骤3步骤1选择模拟设备单击上一页图中的“Createdevice”按钮,此时会进入选择模拟设备的SelectHardware对话框,如下图所示。步骤21.2.2

模拟器创建步骤2步骤1下载SDKSystemImage我们选择上一页图中的Phone

GalaxyNexus选项(此选项可根据自己需求选择不同屏幕分辨率的模拟器),单击“Next”按钮进入SystemImage对话框,如下图所示。步骤31.2.2模拟器创建步骤2步骤1下载SDKSystemImage选中上一页图中API33的系统版本,单击“Download”进入LicenseAgreement对话框,如下图所示。步骤31.2.2模拟器创建步骤2步骤1下载SDKSystemImage选中上一页图中的“Accept”单选按钮,接受页面中显示的许可协议信息,然后单击“Next”按钮进入SDKComponentInstaller对话框,如下图所示。步骤31.2.2

模拟器创建步骤2步骤1下载SDKSystemImage下载完成后的ComponentInstaller对话框,如下图所示。步骤31.2.2

模拟器创建步骤5创建模拟设备单击上一页图中的“Finish”按钮关闭当前对话框并返回到SystemImage对话框,此时在该对话框选中已下载完成的系统版本名称为API33的条目,单击“Next”按钮进入AndroidVirtualDevice(AVD)对话框,如下图所示。步骤41.2.2

模拟器创建步骤5创建模拟设备单击上一页图中的“Finish”按钮,完成模拟器的创建。此时在DeviceManager对话框中会显示创建完成的模拟器,如下图所示。步骤41.2.2

模拟器创建步骤4打开模拟设备单击上一页图中的启动按钮“”启动模拟器,启动完成后的Android模拟器界面,如下图所示。步骤5

先定一个小目标!掌握在AndroidStudio中下载SDK的步骤,能够独立下载SDK1.2.3在AndroidStudio中下载SDK1.2.3在AndroidStudio中下载SDK步骤2下载SDK版本打开AndroidStudio,单击工具栏中的“”图标,进入Settings对话框,如下图所示。步骤11.2.3在AndroidStudio中下载SDK下载SDK版本在SDKPlatforms选项卡下选择AndroidAPI32(Sv2)条目,单击上一页图中的“OK”按钮,会弹出确认安装SDK组件的ConfirmChange对话框,如下图所示。步骤2步骤11.2.3在AndroidStudio中下载SDK下载SDK版本单击上一页图中的“OK”按钮,进入SDKComponentInstaller下载对话框,如下图所示。步骤2步骤11.2.3在AndroidStudio中下载SDK下载SDK版本下载完成后的SDKComponentInstaller对话框,如下图所示。步骤2步骤11.2.3在AndroidStudio中下载SDK打开Settings对话框,在该对话框的右侧选择SDKTools选项卡,如下图所示。步骤1步骤2下载SDKBuild-Tools工具1.2.3在AndroidStudio中下载SDK勾选上一页图中“ShowPackageDetails”复选框,会打开AndroidSDKBuild-Tools33中的SDKBuild-Tools版本列表信息,在列表中勾选32.0.0条目,如下图所示。步骤1步骤2下载SDKBuild-Tools工具1.2.3在AndroidStudio中下载SDK单击上一页图中的“OK”按钮会弹出ConfirmChange对话框,如下图所示。步骤1步骤2下载SDKBuild-Tools工具1.2.3在AndroidStudio中下载SDK单击上一页图中的“OK”按钮进入SDK

ComponentInstaller下载对话框,如下图所示。步骤1步骤2下载SDKBuild-Tools工具1.2.3在AndroidStudio中下载SDK一段时间之后,SDKBuild-Tools下载完成,SDKComponentInstaller下载完成对话框的显示如下图所示。步骤1步骤2下载SDKBuild-Tools工具1.2.3在AndroidStudio中下载SDK下载SDKBuild-Tools工具单击“Finish”按钮关闭当前对话框,此时SDKBuild-Tools32.0.0版本已经下载完成。步骤1步骤2开发第一个Android程序1.31.3

开发第一个Android程序

先定一个小目标!掌握编写简单Android程序的步骤,能够编写一个HelloWorld程序1.3

开发第一个Android程序STEP01创建HelloWorld程序单击WelcometoAndroidStudio(Administrator)窗口中的“NewProject”选项,进入NewProject对话框,如下图所示。1.3

开发第一个Android程序STEP01创建HelloWorld程序在上一页图中选择完Activity模板之后,单击“Next”按钮,进入EmptyActivity对话框,如下图所示。1.3

开发第一个Android程序STEP01创建HelloWorld程序设置完上一页图中的信息后,单击“Finish”按钮,项目创建完成。此时会进入AndroidStudio工具的主窗口,如下图所示。1.3

开发第一个Android程序STEP02运行程序HelloWorld程序创建成功后,我们暂时不添加任何代码。单击工具栏中的运行按钮“

”,程序就会运行到模拟器上,运行结果如下图所示。Android程序结构1.41.4

Android程序结构

先定一个小目标!熟悉Android程序结构,能够归纳Android程序中常用的文件和文件夹的作用1.4

Android程序结构存放程序的代码和资源等内容配置在Android中使用的子项目(Moudle)指定项目中所使用的SDK路径程序的gradle构建脚本资源的管理与使用1.5

先定一个小目标!掌握图片资源的管理与使用方式,能够灵活使用程序中的图片资源1.5.1

图片资源图片资源:扩展名为.png、.jpg、.gif、.9.png等的文件。根据图片资源的用途不同,将图片资源进行分类,具体如下。应用图标资源:存放在以mipmap开头的文件夹中。界面中使用的图片资源:存放在以drawable开头的文件夹中。根据设备屏幕密度的不同,Android系统会自动匹配不同文件夹中的图片资源。

res目录中的mipmap文件夹和drawable文件夹的匹配规则如下表所示。密度范围值mipmap文件夹drawable文件夹120~160dpimipmap_mdpidrawable_mdpi160~240dpimipmap_hdpidrawable_hdpi240~320dpimipmap_xdpidrawable_xdpi320~480dpimipmap_xxdpidrawable_xxdpi480~640dpimipmap_xxxdpidrawable_xxxdpi1.5.1

图片资源调用图片资源的方式有两种,具体如下:(1)通过Java代码调用图片资源(2)在XML布局文件中调用图片资源

1.5.1

图片资源

//调用mipmap文件夹中资源文件getResources().getDrawable(R.mipmap.ic_launcher);//调用以drawable开头的文件夹中的资源文件getResources().getDrawable(R.drawable.icon);

@mipmap/ic_launcher//调用mipmap文件夹中的资源文件@drawable/icon//调用以drawable开头的文件夹中的资源文件

先定一个小目标!掌握主题和样式资源的管理与使用方式,能够灵活使用程序中的主题和样式资源1.5.2

主题和样式资源1.主题主题是包含一种或多种格式化属性的集合,在程序中调用主题资源可改变窗体的样式。主题资源定义位置:在res\values目录下的themes.xml文件中定义主题资源的标签:1.5.2

主题和样式资源

<style></style>:定义主题的标签<item></item>:设置主题样式的标签主题资源定义在res\values\themes.xml文件中,示例代码如下:1.5.2

主题和样式资源

<resourcesxmlns:tools="/tools"><!--Baseapplicationtheme.--><stylename="Theme.HelloWorld"parent="Theme.MaterialComponents.DayNight.DarkActionBar"><!--Primarybrandcolor.--><itemname="colorPrimary">@color/purple_500</item><itemname="colorPrimaryVariant">@color/purple_700</item>

......</style></resources>想要调用themes.xml文件中定义的主题,可以在AndroidManifest.xml文件中设置,也可以在Java代码中设置。(1)在AndroidManifest.xml文件中设置主题的示例代码如下:(2)在Java代码中设置主题的示例代码如下:1.5.2

主题和样式资源<application

......

android:theme="@style/Theme.HelloWorld"></application>

setTheme(R.style.Theme_HelloWorld);1.5.2

主题和样式资源2.样式样式:设置View的宽度、高度和背景颜色等信息。样式资源定义位置:res\values目录下的styles.xml文件中样式的标签:在XML布局文件中引用textViewStyle样式的示例代码如下:

<style></style>:定义样式的标签<item></item>:设置控件样式的标签

<TextView

......

style="@style/textViewStyle"/>

先定一个小目标!掌握布局资源的管理与使用方式,能够灵活使用程序中的布局资源1.5.3

布局资源1.5.3

布局资源

布局资源:通常用于搭建程序中的各个界面。

布局资源存放位置:res\layout文件夹中调用布局资源的方式有两种:(1)通过Java代码调用布局资源文件

通过Java代码调用activity_main.xml文件,示例代码如下:

(2)在XML布局文件中调用布局资源文件

在XML布局文件中调用activity_main.xml文件,示例代码如下:

setContentView(R.layout.activity_main);

<includelayout="@layout/activity_main"/>

先定一个小目标!掌握字符串资源的管理与使用方式,能够灵活使用程序中的字符串资源1.5.4

字符串资源1.5.4

字符串资源字符串资源:用于显示界面上的文本信息。字符串资源定义位置:res\values目录下的strings.xml文件中定义字符串的标签:在res\values\strings.xml文件中定义字符串,示例代码如下:

<string></string>

<resources>

<stringname="app_name">字符串</string>

</resources>

调用字符串资源的方式有两种:(1)通过Java代码调用字符串资源

通过Java代码调用名称为app_name的字符串资源,示例代码如下:(2)在XML布局文件中调用字符串资源

在XML布局文件中调用名称为app_name字符串资源,示例代码如下:

getResources().getString(R.string.app_name);

@string/app_name1.5.4

字符串资源

先定一个小目标!掌握颜色资源的管理与使用方式,能够灵活使用程序中的颜色资源1.5.5

颜色资源1.5.5

颜色资源颜色资源:用于显示控件的不同色彩效果。颜色资源定义位置:res\values目录下的colors.xml文件中定义颜色的标签:

<color></color>

<resources>

<colorname="colorPrimary">#3F51B5</color>

</resources>示例代码如下:

调用颜色资源的方式有两种:(1)通过Java代码调用颜色资源文件

通过Java代码调用名称为colorPrimary的颜色资源,示例代码如下:(2)在XML布局文件中调用颜色资源文件

在XML布局文件中调用名称为colorPrimary的颜色资源,示例代码如下:

getResources().getColor(R.color.colorPrimary);

@color/colorPrimary1.5.5

颜色资源定义颜色值在Android中,颜色值是由RGB(红、绿、蓝)三原色和一个透明度(Alpha)表示,颜色值必须以“#”开头,“#”后面显示Alpha-Red-Green-Blue形式的内容。其中,Alpha值可以省略,如果省略,表示颜色默认是完全不透明的。一般情况下,使用以下4种形式定义颜色。#RGB#ARGB#RRGGBB#AARRGGBB多学一招1.5.5

颜色资源

先定一个小目标!掌握尺寸资源的管理与使用方式,能够灵活使用程序中的尺寸资源1.5.6

尺寸资源1.5.6

尺寸资源尺寸资源:用于设置View的宽高和View之间的间距值。尺寸资源定义位置:res\values\dimens.xml文件中,如果程序中没有dimens.xml文件,可自行创建。定义尺寸的标签:

示例代码如下:

<dimen></dimen>

<resources>

<dimenname="activity_horizontal_margin">16dp</dimen>

</resources>

调用尺寸资源的方式有两种:(1)通过Java代码调用尺寸资源

通过Java代码调用activity_horizontal_margin尺寸资源,示例代码如下:

(2)在XML布局文件中调用尺寸资源

在XML布局文件中调用activity_horizontal_margin尺寸资源,示例代码如下:

getResources().getDimension(R.dimen.activity_horizontal_margin);

@dimen/activity_horizontal_margin1.5.6

尺寸资源Android支持的尺寸单位

尺寸单位:px(pixels,像素):每个px对应屏幕上的一个像素点。dp(Density-independentPixels,设备独立像素):是一种与屏幕密度无关的尺寸单位。sp(scaledpixels,比例像素):主要处理字体的大小,可以根据用户字体大小首选项进行缩放。in(inches,英寸):标准长度单位。pt(points,磅):屏幕物理长度单位,1磅为1/72英寸。mm(Millimeters,毫米):屏幕物理长度单位。多学一招1.5.6

尺寸资源程序调试1.6

先定一个小目标!掌握单元测试的使用方式,能够对Android程序进行单元测试1.6.1

单元测试1.6.1

单元测试单元测试是指在Android程序开发过程中对最小的功能模块进行测试,单元测试包括Android单元测试和Junit单元测试。

1.该测试方式执行测试的时候需要连接

Android设备。

2.

速度比较慢。

3.适合需要调用AndroidAPI的单元测试。Android单元测试Junit单元测试

1.该测试方式不需要依赖Android设备,在本地即可运行。

2.

速度快。

3.适合只对Java代码功能进行的单元测试。1.6.1

单元测试AndroidStudio2021.2.1版本在创建项目时,会默认在app\src\androidTest和app\src\test文件夹中分别创建Android单元测试类ExampleInstrumentedTest和Junit单元测试类ExampleUnitTest。

(1)Android单元测试类使用@RunWith(AndroidJUnit4.class)注解ExampleInstrumentedTest类@Test注解ExampleInstrumentedTest类中的方法

(2)Junit单元测试类@Test注解ExampleUnitTest类中的方法ExampleInstrumentedTest类中的代码

packagecn.itcast.helloworld;@RunWith(AndroidJUnit4.class)publicclassExampleInstrumentedTest{@TestpublicvoiduseAppContext(){//Contextoftheappundertest.ContextappContext=InstrumentationRegistry.getTargetContext();assertEquals("cn.itcast.helloworld",appContext.getPackageName());}}断言,期望两个参数值相等注解类注解方法1.6.1

单元测试Android单元测试类测试通过结果1.6.1

单元测试在上一页代码中的方法useAppContext()上右击,在弹出框中选择“RunuseAppContext()”选项。将程序运行到模拟器后,在AndroidStudio底部工具栏中单击“

”图标查看运行结果。测试不通过结果1.6.1

单元测试接下来修改文件ExampleInstrumentedTest.java中assertEquals()方法的参数,使测试useAppContext()方法时,显示错误信息,修改的具体代码如下:运行程序,运行结果如下图所示。assertEquals("helloworld",appContext.getPackageName());ExampleUnitTest类中的代码packagecn.itcast.helloworld;publicclassExampleUnitTest{@Testpublicvoidaddition_isCorrect(){assertEquals(4,2+2);}}断言,期望两个参数值相等注解方法Junit单元测试类1.6.1

单元测试测试通过结果1.6.1

单元测试在上一页代码中的方法addition_isCorrect()上右击,在弹出框中选择“Runaddition_isCorrect()”选项。程序运行结束后,在AndroidStudio底部工具栏中单击“

”图标查看运行结果,如下图所示。测试不通过结果1.6.1

单元测试接下来修改文件ExampleUnitTest.java中的assertEquals()方法中的参数,使测试addition_isCorrect()方法时,显示错误信息,修改的具体代码如下:运行程序,运行结果如下图所示。assertEquals(4,1+2);注意1.6.1

单元测试AndroidStudio在创建项目时,会自动在build.gradle文件中添加单元测试的支持库,如果在进行单元测试时,程序中的build.gradle文件中没有添加单元测试的支持库,则需要手动进行添加。dependencies{......

testImplementation'junit:junit:4.13.2'androidTestImplementation'androidx.test.ext:junit:1.1.3'androidTestImplementation'androidx.test.espresso:espresso-core:3.4.0'}

先定一个小目标!掌握Logcat的使用方式,能够对Android程序进行调试1.6.2

Logcat的使用LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。Log类所输出的日志内容分为六个级别。1.6.2

Logcat的使用级别显示信息日志信息颜色Log类中的静态方法verbose(V)全部信息黑色Log.v()debug(D)调试信息黑色Log.d()info(I)一般信息黑色Log.i()warning(W)警告信息蓝色Log.w()error(E)错误信息红色Log.e()assert断言失败后的错误消息红色Log.wtf()

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.6.2

Logcat的使用1.6.2

Logcat的使用测试结果运行上一页中的代码,此时Logcat窗口中输出的Log信息,如下图所示。过滤器名称根据定义的TAG过滤信息1.6.2

Logcat的使用点击创建完成除了设置过滤器过滤所需的信息外,还可以输入TAG信息、根据Log级别等方式过滤信息。1.6.2

Logcat的使用本章小结本章主要讲解了Android的基础知识,首先介绍了Android的发展历史与体系结构,然后讲解Android开发环境的搭建,接着开发了一个HelloWorld程序,帮助大家了解Android项目的创建、程序的结构,以及资源的管理与使用。最后介绍了程序调试,包括单元测试和Logcat的使用。通过本章的学习,希望读者能对Android有一个大致的了解,并会独立搭建Android开发环境,为后续学习Android知识做好铺垫。本章小结第2章Android常见界面布局《Android移动应用基础教程(AndroidStudio)(第3版)》学习目标/Target

了解View与ViewGroup的简介,能够说出View与ViewGroup的作用和关系

掌握界面布局的编写方式,能够独立在XML文件中与Java代码中编写布局

掌握常见界面布局的特点及使用,能够搭建简单的界面布局章节概述/

Summary在Android应用中,界面由布局和控件组成。布局好比是建筑里的框架,控件相当于建筑里的砖瓦。针对界面中控件不同的排列位置,Android定义了相应的布局进行管理。本章将针对Android的常见界面布局进行详细讲解。目录/Contents2.12.22.3View界面布局的编写方式常见界面布局View2.12.1View

先定一个小目标!了解View与ViewGroup的简介,能够说出View与ViewGroup的作用和关系2.1ViewView是Android程序中可视化的界面组件的实体,它主要提供了组件绘制和事件处理的方法。View可分为容器类型和实体类型:容器类型的View是ViewGroup,ViewGroup作为容器盛装Android程序界面中的控件;实体类型的View主要用于用户交互,例如,界面上的按钮、文本框、输入框等。ViewGroup容器可以包含View的实体类型,也可以包含ViewGroup容器。界面布局的编写方式2.22.2.1在XML文件中编写界面布局

先定一个小目标!掌握在XML文件中编写布局的方式,能够搭建简单的界面布局在Android程序中可以使用XML文件控制界面布局,从而有效地将界面中布局的代码和Java代码隔离,使程序的结构更加清晰。因此多数Android程序采用这种方式编写布局。前面讲解过布局文件通常放在res\layout文件夹中,我们可以在该文件夹中的XML文件中编写布局。2.2.1在XML文件中编写界面布局<?xmlversion="1.0"encoding="utf-8"?><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界面"android:textColor="#ff0000"android:textSize="18sp"android:layout_centerInParent="true"/></RelativeLayout>TextView控件继承自View相对布局继承自ViewGroup设置文字的样式2.2.1在XML文件中编写界面布局2.2.2在Java代码中编写界面布局

先定一个小目标!掌握在Java代码中编写布局的方式,能够搭建简单的界面布局Android程序的布局代码不仅可以在XML布局文件中编写,还可以在Java代码中编写。在Android程序中所有布局和控件的对象都可以通过new关键字来创建,将创建的View组件(控件)添加到ViewGroup布局中,从而实现View控件在布局界面中显示的效果。2.2.2在Java代码中编写界面布局RelativeLayoutrelativeLayout=newRelativeLayout(this);RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);params.addRule(RelativeLayout.CENTER_IN_PARENT);//设置布局中的控件居中显示TextViewtextView=newTextView(this);

//创建TextView控件textView.setText("Java代码实现界面布局");//设置TextView的文字内容textView.setTextColor(Color.RED);//设置TextView的文字颜色textView.setTextSize(18);

//设置TextView的文字大小relativeLayout.addView(textView,params);

//添加TextView对象和TextView的布局属性setContentView(relativeLayout);

//设置在Activity中显示RelativeLayout2.2.2在Java代码中编写界面布局常见界面布局2.3为了适应不同的界面风格,Android系统提供了一些界面布局,常用的五种布局,分别为RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)、TableLayout(表格布局)、ConstraintLayout(约束布局),接下来,本节将针对这些常见界面布局进行详细讲解。2.3常见界面布局2.3.1布局的通用属性

先定一个小目标!掌握布局的通用属性,能够设置布局的样式Android系统提供的五种常用布局直接或者间接继承自ViewGroup,因此这五种常用的布局也支持在ViewGroup中定义的属性,这些属性可以看作是布局的通用属性。这些通用属性如下表所示。属性名称功能描述android:id设置布局的标识android:layout_width设置布局的宽度android:layout_height设置布局的高度android:background设置布局的背景android:layout_margin设置当前布局与屏幕边界或与周围控件的距离android:padding设置当前布局与该布局中控件的距离2.3.1布局的通用属性用于设置当前布局的唯一标识。在XML文件中它的属性值是通过“@+id/属性名称”定义。android:id用于设置布局的宽度,其值可以是具体的尺寸,如50dp、30dp等,也可以是系统定义的值。系统定义的值有fill_parent、match_parent和wrap_content。android:layout_width用于设置布局的高度,其值可以是具体的尺寸,如50dp、30dp等,也可以是系统定义的值。系统定义的值有fill_parent、match_parent和wrap_content。android:layout_height布局的通用属性2.3.1布局的通用属性用于设置布局背景。其值可以引用图片资源,也可以是颜色资源。android:background用于设置当前布局与屏幕边界、周围布局或控件的距离。属性值为具体的尺寸,如45dp、20dp等。android:layout_margin用于设置当前布局内控件与该布局的距离,其值可以是具体的尺寸,如45dp、20dp等。android:padding布局的通用属性2.3.1布局的通用属性2.3.2RelativeLayout

先定一个小目标!掌握RelativeLayout的语法格式与属性,能够搭建简单的相对布局界面RelativeLayout通过相对定位的方式指定子控件的位置。在XML布局文件中定义相对布局时使用<RelativeLayout>标签,基本语法格式如下所示。<RelativeLayout

xmlns:android="/apk/res/android"

属性="属性值"

......></RelativeLayout>2.3.2RelativeLayout在RelativeLayout中的子控件具备一些属性,用于指定子控件的位置,控件的属性如下表所示。属性名称功能描述android:layout_centerInParent设置当前控件位于父布局的中间位置android:layout_centerVertical设置当前控件位于父布局的垂直居中位置android:layout_centerHorizontal设置当前控件位于父控件的水平居中位置android:layout_above设置当前控件位于某控件上方android:layout_below设置当前控件位于某控件下方android:layout_toLeftOf设置当前控件位于某控件左侧android:layout_toRightOf设置当前控件位于某控件右侧android:layout_alignParentTop设置当前控件是否与父控件顶端对齐android:layout_alignParentLeft设置当前控件是否与父控件左边对齐android:layout_alignParentRight设置当前控件是否与父控件右边对齐android:layout_alignParentBottom设置当前控件是否与父控件底部对齐android:layout_alignTop设置当前控件的上边界与某控件的上边界对齐android:layout_alignBottom设置当前控件的下边界与某控件的下边界对齐android:layout_alignLeft设置当前控件的左边界与某控件的左边界对齐android:layout_alignRight设置当前控件的右边界与某控件的右边界对齐2.3.2RelativeLayout接下来,我们通过一个案例来演示如何在相对布局中指定3个按钮的位置。本案例中使用了相对布局RelativeLayout,在相对布局中添加了3个按钮,这3个按钮以不同的位置进行显示,相对布局界面的效果如下图所示。1创建程序:修改程序主题样式:添加界面控件:添加三个Button控件创建一个名为RelativeLayout的应用程序指定包名为cn.itcast.relativelayout23在themes.xml文件中修改程序的主题样式注意:在RelativeLayout布局中定义的控件默认与父布局左上角对齐。2.3.2RelativeLayout布局和控件的宽度与高度为了让Android程序拥有更好的屏幕适配能力,在设置控件和布局的宽度与高度时最好使用“match_parent”或“wrap_content”,尽量避免将控件的宽与高设置为固定值。因为控件在很多情况下会相互挤压,从而导致控件变形。但特殊情况下需要使用指定的宽度与高度的值时,可以选择使用px、pt、dp、sp等四种类型的单位。例如:android:layout_width="20dp",表示控件宽度为20dp。多学一招2.3.2RelativeLayout2.3.3LinearLayout

先定一个小目标!掌握LinearLayout的语法格式与属性,能够搭建简单的线性布局界面LinearLayout(线性布局)通常指定布局内的子控件水平或垂直排列。在XML布局文件中定义线性布局的基本语法格式如下:<LinearLayout

xmlns:android="/apk/res/android"

属性="属性值"

......></LinearLayout>2.3.3LinearLayout

android:orientation属性的可选值为vertical和horizontal。(1)

vertical:表示LinearLayout布局内控件依次从上到下垂直排列。(2)horizontal:表示LinearLayout布局内控件依次从左到右水平排列。

android:layout_weight属性。(1)该属性被称为权重,通过设置该属性值,可使布局内的控件按照权重比显示大小。(2)在进行屏幕适配时起到关键作用。除了布局的通用属性外,LinearLayout布局还有两个比较常用的属性,分别是android:orientation和android:layout_weight,具体如下表所示。属性名称功能描述android:orientation设置布局内控件的排列顺序android:layout_weight在布局内设置控件权重,属性值是int类型的数据2.3.3LinearLayout接下来,我们通过一个案例来演示如何使用android:layout_weight属性为LinearLayout中的控件分配权重。本案例中使用了线性布局LinearLayout,在线性布局中添加了三个按钮,这三个按钮的宽度在水平方向的比重是1:1:2,线性布局界面的效果如下图所示。1创建程序:添加界面控件:创建一个名为LinearLayout的应用程序指定包名为cn.itcast.linearlayout2添加三个Button控件2.3.3LinearLayout注意LinearLayout布局中的android:layout_width属性值不可设为wrap_content。这是因为LinearLayout的优先级比Button高,如果设置为wrap_content,则Button控件的android:layout_weight属性会失去作用。当设置了Button控件的android:layout_weight属性时,控件的android:layout_width属性值一般设置为0dp才会有权重占比的效果。2.3.3LinearLayout2.3.4

TableLayout

先定一个小目标!掌握TableLayout的语法格式与属性,能够搭建简单的表格布局界面TableLayout(表格布局)采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局或控件来控制表格的行数,在TableRow布局中添加控件来控制表格的列数。在XML布局文件中定义表格布局的基本语法格式如下:<TableLayoutxmlns:android="/apk/res/android"

属性="属性值">

<TableRow>

UI控件

</TableRow>

UI控件......</TableLayout>2.3.4

TableLayoutTableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性,此外它还有其他的常用属性,这些常用属性如下表所示。表格布局属性属性名称功能描述android:stretchColumns设置可被拉伸的列android:shrinkColumns设置可被收缩的列android:collapseColumns设置可被隐藏的列表格布局中控件的常用属性属性名称功能描述android:layout_column设置该控件显示的位置android:layout_span设置该控件占据几列,默认为1列需要注意的是,在TableLayout布局中,列的宽度由该列中最宽的那个单元格(控件)决定,整个表格布局的宽度则取决于父容器的宽度。2.3.4

TableLayout接下来,我们通过一个案例来讲解如何设置三行三列的表格。本案例中使用了表格布局TableLayout,在表格布局中添加了五个按钮,将这五个按钮按照三行三列的形式进行排列,表格布局界面的效果如下图所示。1创建程序:添加界面控件:创建一个名为TableLayout的应用程序指定包名为cn.itcast.tablelayout2添加三个TableRow布局在TableRow布局中添加不同数量的按钮2.3.4

TableLayout2.3.5

FrameLayout

先定一个小目标!掌握FrameLayout的语法格式与属性,能够搭建简单的帧布局界面FrameLayout(帧布局)用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。在XML布局文件中定义FrameLayout的基本语法格式如下所示。<FrameLayoutxmlns:android="/apk/res/android"属性="属性值"></FrameLayout>2.3.5

FrameLayout除了前面小节介绍的通用属性外,帧布局还有两个特殊属性,具体如下表所示。FrameLayout的特殊属性属性名称功能描述android:foreground设置帧布局容器的前景图像(始终在所有子控件之上)android:foregroundGravity设置前景图像显示的位置2.3.5

FrameLayout接下来,我们通过一个案例来讲解如何在帧布局中使用属性android:foreground和android:foregroundGravity指定帧布局中的前景图像与前景图像的位置。本案例中使用了帧布局FrameLayout,在帧布局中添加两个按钮,分别是按钮1和按钮2,按钮2在按钮1的上一层进行显示,帧布局界面的效果如下图所示。1创建程序:添加界面控件:创建一个名为FrameLayout的应用程序指定包名为cn.itcast.framelayout2添加两个Button控件2.3.5

FrameLayout2.3.6ConstraintLayout

先定一个小目标!掌握ConstraintLayout的内容,能够使用可视化的方式编写界面布局ConstraintLayout(约束布局)是AndroidStudio2.2新添加的布局。与前面介绍的界面布局相比,ConstraintLayout并不太适合使用XML代码的方式编写布局,但是它非常适合使用可视化的方式编写界面布局。当然,可视化操作的背后仍然是使用XML代码实现的,只不过这些代码是AndroidStudio根据我们的操作自动生成的。2.3.6ConstraintLayout相对于传统布局,ConstraintLayout在以下几个方面提供了一些新的特性:1.相对定位相对定位是在ConstraintLayout中创建布局的基本构建方法之一。相对定位即一个控件相对于另一个控件进行定位,ConstraintLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位,其中,横向边包括left、start、right、end,纵向边包括top、bottom、baseline(文本底部的基准线),控件中横向和纵向的边的分布如下图所示。2.3.6ConstraintLayout上一页图中的每一条边(top、bottom、baseline、left、start、right、end)都可以与其他控件形成约束,这些边形成相对定位关系的属性如下表所示。属性名称功能描述layout_constraintLeft_toLeftOf控件的左边与另外一个控件的左边对齐layout_constraintLeft_toRightOf控件的左边与另外一个控件的右边对齐layout_constraintRight_toLeftOf控件的右边与另外一个控件的左边对齐layout_constraintRight_toRightOf控件的右边与另外一个控件的右边对齐layout_constraintTop_toTopOf控件的上边与另外一个控件的上边对齐layout_constraintTop_toBottomOf控件的上边与另外一个控件的底部对齐layout_constraintBaseline_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论