Android应用开发基础教程(微课版) 课件 第1、2章 Android基础、常用布局_第1页
Android应用开发基础教程(微课版) 课件 第1、2章 Android基础、常用布局_第2页
Android应用开发基础教程(微课版) 课件 第1、2章 Android基础、常用布局_第3页
Android应用开发基础教程(微课版) 课件 第1、2章 Android基础、常用布局_第4页
Android应用开发基础教程(微课版) 课件 第1、2章 Android基础、常用布局_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

Andriod应用开发基础教程李卓平时成绩:40%(出勤、作业、课堂表现等)期末实践考核:30%(综合性项目)期末试卷考核:30%(纸质试卷)成绩构成课程内容1Android基础2常用布局3常用控件与消息处理4Activity5数据存储6ContentProvider7广播8Service9网络编程10高级应用第1章Android基础1.1Android的起源和发展1.2Android的系统构架1.3Android平台优势和劣势1.4Android开发环境搭建

Android(安卓)是一种基于Linux的开源操作系统,由Google公司和开放手机联盟领导及开发,主要用于移动终端设备,如智能手机、平板电脑等。

什么是Android?(1)Android

(2)iOS

(3)WindowsPhone(4)BlackBerryOS(黑莓)

(5)Symbian(塞班)

(6)

HarmonyOS(鸿蒙)

移动互联的快速发展离不开智能手机操作系统,常用的智能手机操作系统包括以下几种:1.1Android的起源和发展1.1.1Android的起源1.1.2Android的发展1.1.1Android的起源

1886年法国作家AugusteVilliersdel'Isle-Adam(耶·德·利尔-阿达姆·利尔亚当)在科幻小说《L'Èvefuture(未来夏娃)》中,他把外表像人的机器人取名为Android,这个词本意是“机器人”,这是Android一词最早出现在公众视野。2003年,AndyRubin创立了Android公司。AndroidLOGO的设计者绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线。Android图标1.1.1.2Android的发展史

2003年10月,Android系统由AndyRubin等人创立2005年8月,Google收购了Android及其团队,AndyRubin成为Google公司工程部副总裁,继续负责Android项目2007年11月,Google公司正式对外展示了Android操作系统,并宣布与多家制造商共同研发改良Android系统2008年9月,Google公司正式发布了Android1.0系统,代号Astro(铁臂阿童木),这是Android系统最早的版本2008年10月,首款搭载安卓系统的设备HTCG1(也称为T-MobileG1)上市。HTCG1是一款具有全键盘设计的智能手机,标志着安卓系统正式进入公众视野Android最早的两个内部测试版本是以机器人名称来命名:AstroBoy(铁臂阿童木)和Bender(发条机器人),后因版权问题,从2009年Android1.5开始,谷歌将甜点作为Android系统版本代号,2019年Google官方宣布结束以甜点命名Android系统的方式,版本的内部代号仍以甜点命名。1.2Android的系统构架1.2Android的系统构架

1、应用层(Applications):应用层是Android系统的顶层,包括了各种预装和第三方应用程序,如电子邮件、浏览器、照相机、联系人等等。2、应用框架层(ApplicationFramework):开发人员可以访问核心应用程序所使用的API框架,是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,如Activity、Service、ContentProvider、BroadcastReceiver等。3、系统运行库层(Libraries):Android包含一些C/C++库,这些库能被Android系统中不同的组件使用,它们通过Android应用程序框架为开发者提供服务。其中,核心库包括系统C库(专门为基于EmbeddedLinux的设备定制)、媒体库(支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件)、SurfaceManager(管理显示子系统)、LibWebCore(web浏览器引擎)。4、Linux内核层(LinuxKernel):Android平台的基础是Linux内核,Android的Linuxkernel控制包括安全性,内存管理,进程管理,网络协议栈和驱动模型等。Linux内核也同时作为硬件和软件栈之间的抽象层。1.3

Android平台优势和劣势

Android平台优势包括以下几点:1、Android系统可搭载多种设备,如智能手表等可穿戴式设备、手机、平板电脑、电视、车辆仪表板、智能家居等,设备和屏幕兼容性较好。2、在安全性方面,用户在进行下载应用、浏览网页和分享数据、接收来电等操作时,Android都会实时保护,当遇到恶意应用或有害链接时,系统会自动提醒用户,并提供有关后续应对措施的建议,在Android设备上,用户对于自己的数据拥有绝对处理的权力,用户可自主决定是否、何时分享自己的数据,从而保障了用户的系统安全和数据安全。3、Android开放性允许任何移动终端厂商加入到Android联盟中来,使其拥有更多的开发者,有利于积累消费者和厂商。

Android平台劣势包括以下几点:1、Android平台由于开发便利,血腥、暴力、情色方面的程序和游戏难以控制。2、Android存在安全漏洞,“黑客”能实施远程窃取文件、查收电邮乃至盗取用户名和密码等违反活动。3、2023年11月,据证券时报消息,目前鸿蒙HarmonyOSNEXT开发者预览版已不兼容安卓,华为可能推出不兼容安卓的鸿蒙版本。1.4

Android开发环境搭建1.4.1AndroidStudio安装1.4.2AndroidStudio新建项目1.4.3AndroidStudio主界面、应用程序目录结构及相关文件介绍1.4.4模拟器的创建和管理1.4.1AndroidStudio安装

AndroidStudio是谷歌在2013年推出的一个Android集成开发工具,基于IntelliJIDEA,提供了集成的Android开发工具用于开发和调试,并在2015年发布了正式版1.3,使开发代码变得更加容易。AndroidStudio可从官网下载:/studio?hl=zh-cn

1.4.2AndroidStudio新建项目

AndroidStudio安装完成后,打开AndroidStudio依次点击文件>新建>新建项目

1.4.3AndroidStudio主界面、应用程序目录结构及相关文件介绍

Android模式下应用程序目录结构Android模式下res目录中包含存储在其子目录中的图片资源、布局资源、字符串资源等,res目录下的资源目录作用如下:1、drawable:放置位图文件(PNG、.9.png、JPG或GIF)或编译为可绘制资源子类型的XML文件;2、layout:放置定义界面布局的XML文件;3、mipmap:放置应用图标;4、values:放置字符串、整数和颜色等简单值的XML文件;5、xml:放置各种XML配置文件。

项目模式下应用程序目录结构项目模式下各目录和文件作用如下:1、.gradle:存放构建工具的jar包和wrapper等;2、.idea:放置AndroidStudioIDE所需要的文件;3、build:app模块编译输出的目录;4、libs:app模块专用库;5、src:放置app模块所有代码和资源文件;6、build.gradle(app模块中):app模块的gradle配置文件;7、:app模块的proguard文件;8、build.gradle(应用中):适用于所有模块的gradle配置文件;9、settings.gradle:定义项目包含哪些模块,负责配置子工程;10、perties:和gradle相关的全局属性设置文件;11、localproperties:本地属性设置文件(设置key和SDK的位置等);12、外部库:项目依赖的库,编译时自动下载

AndroidManifest.xml清单文件1<?xmlversion="1.0"encoding="utf-8"?>2<manifestxmlns:android="/apk/res/android"3xmlns:tools="/tools">4

5<!--allowBackup:提供了为应用程序数据的备份和恢复功能-->6<!--dataExtractionRules:控制自动备份-->7<!--fullBackupContent:指向包含备份规则的XML文件-->8<!--icon:普通图标;roundIcon:圆形图标-->9<!--label:程序名标签-->10<!--supportsRtl:支持右到左的布局-->11<!--theme:设置整个应用或者某个活动Activity的界面-->12<!--targetApi:目标版本-->13<!--name:设置Application子类的名称(注册自己的Application文件)-->14<application15android:allowBackup="true"16android:dataExtractionRules="@xml/data_extraction_rules"17android:fullBackupContent="@xml/backup_rules"18android:icon="@mipmap/ic_launcher"19android:label="@string/app_name"20android:roundIcon="@mipmap/ic_launcher_round"21android:supportsRtl="true"22android:theme="@style/Theme.Lesson"23tools:targetApi="31">24<activity25android:name=".MainActivity"26android:exported="true">27<!--intent-filter标签作用:把当前的MainActivity配置成为应用程序入口-->28<intent-filter>29<actionandroid:name="ent.action.MAIN"/>30

31<categoryandroid:name="ent.category.LAUNCHER"/>32</intent-filter>33</activity>34</application>35

36</manifest>

MainActivity.java:定义MainActivity布局的目的、功能,并包含各种方法的实际代码1//新建的Activity必须继承AppCompatActivity或者Activity2publicclassMainActivityextendsAppCompatActivity{3//onCreate方法是在Activity创建时被系统调用,是一个Activity生命周期的开始4@Override5protectedvoidonCreate(BundlesavedInstanceState){6//重写了父类中的onCreate方法7super.onCreate(savedInstanceState);8//与布局文件建立联系:res目录->layout目录->activity_main.xml布局文件9setContentView(R.layout.activity_main);10}11}

activity_main.xml:布局文件,定义页面样式1<?xmlversion="1.0"encoding="utf-8"?>2<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"3xmlns:app="/apk/res-auto"4xmlns:tools="/tools"5android:layout_width="match_parent"6android:layout_height="match_parent"7tools:context=".MainActivity">8

9<!--Android讲究逻辑与视图分离,所以在Activity是不写界面的,界面是放在局部文件里面的。-->10<!--ConstraintLayout:约束布局-->11<!--layout_width:设定宽度-->12<!--layout_height:设置高度-->13<!--text:设置文本内容-->14<TextView15android:layout_width="wrap_content"16android:layout_height="wrap_content"17android:text="HelloWorld!"18app:layout_constraintBottom_toBottomOf="parent"19app:layout_constraintEnd_toEndOf="parent"20app:layout_constraintStart_toStartOf="parent"21app:layout_constraintTop_toTopOf="parent"/>22

23</androidx.constraintlayout.widget.ConstraintLayout>1.4.4模拟器的创建和管理

Android模拟器包含在AndroidStudio中,是AndroidStudio中用于模拟Android设备的一个虚拟环境,这样就可以在各种设备上以及各个AndroidAPI级别测试应用程序,而无需拥有实体设备,具有灵活度高、高还原度和测试结果迅速等优势。

Andriod应用开发基础教程第2章常用布局

布局定义了应用中的界面结构,布局中的所有元素都是建立在View(视图)和ViewGroup(视图容器)的基础上的。View通常绘制用户可以看到的控件,例如Button(按钮)和TextView(文本框),是Android所有控件的的基类,View本身可以是单个控件也可以是由多个控件组成的一组控件,通过这种关系就形成了View树的结构。View还包含事件处理使用户和界面可以进行交互。ViewGroup是一个不可见的容器,例如LinearLayout(线性布局)和ConstraintLayout(约束),它定义了View和其他ViewGroup对象的布局结构,ViewGroup是View的子类因此它也是View,但是ViewGroup可以容纳View和ViewGroup,但View不可以再容纳其他View或ViewGroup。图2-1

Android界面视图层次结构

布局可以通过以下两种方式声明:1、在XML中声明UI元素:Android开发中最常用的布局方式,可以通过XML文件定义UI控件的位置、大小、颜色等属性。2、JAVA代码中实例化布局元素:Android还允许通过代码来动态创建布局,这通常在需要动态调整布局或在复杂布局时使用。代码布局相比XML布局更加灵活,但是过度使用代码布局会使得代码变得难以维护且不符合MVC的设计原则,通常建议在简单布局中使用代码布局,在需要重用布局或者需要动态调整布局时使用XML布局。2.1线性布局

线性布局(LinearLayout)是Android开发中最基础且常用的布局方式之一,适合比较简单的布局场景,它允许开发者将子视图按照垂直或水平方向进行有序排列。在XML中运用线性布局只需在根元素层级内添加一个<LinearLayout>标签并设置相应的属性和布局参数即可。

表2-1线性布局中常用的属性属性属性值作用android:orientationvertical:垂直horizontal:水平设置布局的方向android:layout_widthandroid:layout_heightwrap_content:根据内容自适应大小match_parent:匹配父容器的大小具体像素值:如10dp定义LinearLayout本身的宽度和高度android:layout_gravitycenter_horizontal:水平居中center_vertical:垂直居中center:居中left、right:左部、右部top、bottom:上部、下部子视图在LinearLayout内部的对齐方式android:gravity同layout_gravity设置自身内部元素的对齐方式android:layout_weight整数控制子视图在垂直或水平方向上占据的空间比例android:layout_marginandroid:padding具体像素值:如5dp分别设置LinearLayout的外边距和内边距案例2.1

使用线性布局制作如图2-2所示的用户登录界面(参考代码见LinearLayoutActivity)图2-2用户登录应用界面2.2相对布局相对布局(RelativeLayout),顾名思义,就是需要有一个参照物,根据参照物来确定视图的位置,该参照物可以是其它视图,也可以是父容器。通过前面的线性布局案例可以发现,如果需要在多个方向上进行布局,就要嵌套多个线性布局。界面越复杂工作量越大,为了减少工作量可以在需要嵌套多个线性布局才能实现的布局中使用相对布局。相对布局十分灵活,可以实现复杂界面的设计,但掌握起来比较难。表2-2相对布局中常用的属性属性属性值作用与父容器定位相关属性android:layout_alignParentToptrue、false值为true时此视图的顶部与父视图的顶部边缘对齐android:layout_alignParentBottomtrue、false值为true时此视图的底部与父视图的底部边缘对齐android:layout_alignParentLefttrue、false值为true时此视图的左部与父视图的左部边缘对齐android:layout_alignParentRighttrue、false值为true时此视图的右部与父视图的右部边缘对齐android:layout_alignParentStarttrue、false值为true时此视图的起始边与父视图的右部起始边对齐android:layout_alignParentEndtrue、false值为true时此视图的结束边与父视图的右部结束边对齐android:layout_centerInParenttrue、false值为true时此视图位于父视图的居中位置android:layout_centerHorizontaltrue、false值为true时此视图位于父视图的水平方向上的居中位置android:layout_centerVerticaltrue、false值为true时此视图位于父视图的垂直方向上的居中位置相对其它视图定位属性android:layout_above其他视图id将此视图的底部边缘定位在给定视图的上方android:layout_below其他视图id将此视图的顶部边缘定位在给定视图的下方android:layout_toLeftOf其他视图id将此视图的右部边缘定位在给定视图的左方android:layout_toRightOf其他视图id将此视图的左部边缘定位在给定视图的右方android:layout_alignTop其他视图id将此视图的顶部边缘和给定视图的顶部边缘对齐android:layout_alignBottom其他视图id将此视图的底部边缘与给定视图的底部边缘对齐android:layout_alignLeft其他视图id将此视图的左部边缘与给定视图的左部边缘对齐android:layout_alignRight其他视图id将此视图的右部边缘与给定视图的右部边缘对齐android:layout_alignStart其他视图id将此视图的起始边与给定视图的起始边对齐android:layout_alignEnd其他视图id将此视图的结束边与给定视图的结束边对齐android:layout_alignBaseline其他视图id将此视图的基线与给定视图的基线对齐案例2.2

相对布局中视图相对于父容器的位置演示(参考代码见:RelativeLayoutActivity)android:layout_centerInParent="true"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_alignParentTop="true"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:layout_alignParentLeft="true"案例2.3

相对布局中视图相对于其它视图的位置演示(参考代码见:RelativeLayoutActivity)android:layout_above="@+id/reference_1"android:layout_below="@+id/reference_2"android:layout_toLeftOf="@+id/reference_3"android:layout_toRightOf="@+id/reference_4"android:layout_alignTop="@+id/reference_5"android:layout_alignBottom="@+id/reference_6"android:layout_alignLeft="@+id/reference_7"android:layout_alignRight="@+id/reference_8"案例2.4

用相对布局完成案例2-1的用户登录界面(参考代码见:RelativeLayoutActivity)RelativeLayoutActivity加载布局文件activity_relative_layout_land.xml,运行RelativeLayoutActivity后生成应用界面如图2-2所示,用户名密码登陆部分代码部分得到了精简,可见相对布局在复杂界面设计中可一定程度上减少布局嵌套,优化代码。2.3绝对布局

AbsoluteLayout(绝对布局)中的控件是通过指定其在父容器中的精确坐标来确定的,否则将会被排在左上角,而手机应用需要适应不同的屏幕大小,而这种布局模型不能自适应屏幕尺寸大小,所以应用的相对较少。表2-3绝对布局中常用的属性属性属性值作用android:layout_x具体像素值:如20dp设置视图X坐标android:layout_y具体像素值设置视图Y坐标案例2.5

绝对布局演示(参考代码见:AbsoluteLayoutActivity)2.4表格布局

Android中也允许使用表格行与列的方式来排列控件即表格布局(TableLayout)。表格布局不需要声明包含了多少行、多少列,而是通过添加<TableRow>标签和其他控件的方式来确定表格的行数和列数,使用表格布局有以下注意事项;1、如果直接在TableLayout中添加控件,那么控件将和父容器等宽;2、如果想让控件出现在同一行,那么这些控件的外层一定要加一对<TableRow>;3、在TableRow中的控件,宽度都是默认wrap_content。表2-4

表格布局中常用的属性属性属性值作用android:stretchColumns列的索引值,从0开始,多个列索引值必须用逗号隔开,也可用通过“*”代替所有列拉伸列以填满剩下的多余空白空间。android:shrinkColumns收缩列。当可收缩的列过宽(内容过多)不会被挤出屏幕,注意:一列能同时收缩和拉伸android:collapseColumns隐藏列,从页面消失不占空间android:layout_span列数量列数跨度,指定当前View所占的列数。如android:layout_span="2"该控件占据2列android:layout_column列的索引值设置当前View所在的列,如android:layout_column="1"该控件显示在第2列案例2.6

使用表格布局设计一个简单的计算器界面。(参考代码见:TableLayoutActivity)2.5网格布局

网格布局(GridLayout)相对于表格布局和线性布局嵌套更加灵活,网格布局中可以自定义网格行数和列数、控件位于网格的行列位置、控件跨越的行列数及控件排列方式等网格布局和线性布局一样,也分为水平和垂直两种方式,默认水平布局下一个控件挨着一个控件从左到右依次排列,达到设置列数后控件会自动换行进行排列。表2-5网格布局中常用的属性属性属性值作用android:columnCount整数定义网格列数android:rowCount定义网格行数android:layout_columnSpan设置当前Viw所占的列数android:layout_rowSpan设置当前Viw所占的行数android:layout_column设置当前view所在的列注:某控件跨越多行或多列,需要将该控件的lavout_rowSpan或lavout_columnSpan属性设置为跨越的行列数,再设置layout_gravity=“fill”,表明该控件填满所跨越的行或列。案例2.7

使用网格布局改进计算器界面显示(参考代码见:GridLayoutActivity)2.6帧布局

帧布局(FrameLayout)是一种可叠加的布局,后添加的控件会层叠在先添加的控件上,后添加控件会覆盖先添加的控件。表2-6帧布局的常用属性属性属性值作用android:layout_marginTop像素值设置上外边距android:layout_marginBottom设置下外边距android:layout_marginLeft‌设置左外边距android:layout_marginRight‌设置右外边距android:paddingLeft‌设置左内边距android:paddingRight设置右内边距android:paddingTop设置上内边距android:paddingBottom‌设置下内边距android:gravitycenter、left、right等位置值控制子View在父容器内部的位置案例2.8

帧布局演示(参考代码见:FrameLayoutActivity)2.7约束布局

约束布局(ConstraintLayout)主要是为了解决布局嵌套过多的问题,它通过定义界面元素之间的相对位置和尺寸关系,自动调整布局以适应不同的屏幕尺寸和方向。要在约束布局中定义某个视图的位置,必须为该视图添加至少一个水平约束条件和一个垂直约束条件,每个约束条件均表示与其他视图、父布局或隐形引导线之间连接或对齐方式。2.7.1添加删除约束

成功创建ConstraintLayoutActivity后,在本模块res资源目录下打开布局文件activity_constraint_layout.xml,点击界面“Design”进入Design(设计)界面添加约束条件前先从“Palette”中拖入控件到Design界面中选中“Button”后可见该控件四周出现蓝色矩形框,该方框四个角有4个实心方框,四条边中心位置有4个空心圆圈,鼠标左键拖动这四个4个实心方框可对Button控件进行拉伸收缩操作,鼠标左键按住空心圆圈,将其拖动到边界或其它控件对应位置,即可为该控件添加对应的水平或垂直约束删除约束时,可以一次性删除所有约束,也可删除指定的约束1、删除所有约束:点击Design界面中的“ClearAllConstraints”。2、删除指定的约束:选中约束对应的圆点后按下“Delete”键。2.7.2约束布局中的约束方式

1、相对定位约束相对定位约束即用目标控件对被约束控件进行约束定位,需要注意的是垂直方向的约束,其目标控件件的约束也必须是垂直方向的,同理水平方向的约束,其目标控件的约束也必须是水平方向的。表2-7常用的相对定位约束属性及说明要设置被约束控件在父控件或目标控件居中对齐方法如下:(1)垂直居中layout_constraintBottom_toBottomOf="parent"layout_constraintTop_toTopOf="parent"(2)水平居中layout_constraintLeft_toLeftOf="parent"layout_constraintRight_toRightOf="parent"(3)垂直水平居中layout_constraintBottom_toBottomOf="parent"layout_constraintTop_toTopOf="parent"layout_constraintLeft_toLeftOf="parent"layout_constraintRight_toRightOf="parent"2、角度定位约束约束布局中的角度定位,通过设置角度和距离来确定两个控件的相对位置,其中距离是指被约束控件和目标控件中心点距离,角度是以Y轴正半轴为旋转起始线顺时针旋转来计算的。表2-8常用的角度定位约束属性及说明当角度设置为0时,被约束控件在目标控件正上方;当角度设置为90时,被约束控件在目标控件正右方;当角度设置为180时,被约束控件在目标控件正下方;当角度设置为270时,被约束控件在目标控件正左方。属性属性值作用android:layout_constraintCircle目标控件id用目标控件中心点确定定位原点android:layout_constraintCircleAngle角度旋转角度android:layout_constraintCircleRadius像素值被约束控件和目标控件中心点距离3、引导线约束可以添加垂直或水平引导线来约束控件,该引导线用户不可见。引导线定位需要先设置引导线方向再确定引导线的起始位置,起始位置可用像素值或百分比设置。表2-9常用的引导线约束属性及说明属性属性值作用android:orientationvertical:垂直horizontal:水平设置引导线的显示方向an

温馨提示

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

最新文档

评论

0/150

提交评论