Android移动开发基础案例教程(黑马程序员)全套教案课件_第1页
Android移动开发基础案例教程(黑马程序员)全套教案课件_第2页
Android移动开发基础案例教程(黑马程序员)全套教案课件_第3页
Android移动开发基础案例教程(黑马程序员)全套教案课件_第4页
Android移动开发基础案例教程(黑马程序员)全套教案课件_第5页
已阅读5页,还剩333页未读 继续免费阅读

下载本文档

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

文档简介

Android移动开发基础案例教程

(黑马程序员)全套可编辑PPT幻灯片课件)·

Android开发环境搭建·

程序结构与打包过程·Android体系结构·

开发第一个程序Android移动开发基础案例教程第1章Android基础入门全套可编辑PPT幻灯片课件(共10章)1.1Android简介1.2

Android开发环境搭建1.3开发第一个Android程序主讲内容Android本意指“机器人”,Google公司将Android的标识设计为一个绿色机器人,

表示Android系统符合环保概念,是一个轻薄短小,功能强大的移动系统,是第一个真正为手机打造的开放性系统。什么是Android什么是Android对比项目AndroidiOS开发语言JavaObjective-c,Swift系统开放性Android源代码开放,开放性更好封闭操作系统,开放性较差系统安全性源代码开放,安全性较差封闭操作系统,安全性更高Android和iOS主要区别第一代通信技术(1G):是指最初的模拟、仅限语音的蜂窝电话标准。第二代通信技术(2G):是指第2代移动通信技术,代表为GSM,以数字语音传输技术为核心。第三代通信技术(3G):是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。第四代通信技术(4G):又称IMT-Advanced技术,它包括了TD-LTE和FDD-LTE。1.1.1通信技术通信技术Android操作系统最初是由安迪·鲁宾(AndyRubin)开发出的,2005年被Google收购,并于2007年11月5日正式向外界展示了这款系统。1.1.2Android起源Android起源2008年9月发布Android第1个版本Android1.1。2009年4月30日,Android1.5Cupcake(纸杯蛋糕)正式发布。2009年9月5日,Android1.6Donut(甜甜圈)版本发布。Android起源1.1.2Android起源1.1.3Android体系结构Dalvik是Google公司自己设计用于Android平台的虚拟机,它可以简单的完成进程隔离和线程管理,并且可以提高内存的使用效率。1.1.4Dalvik虚拟机Dalvik虚拟机1.1Android简介1.2Android开发环境搭建1.3开发第一个Android程序主讲内容JDK版本最低为1.7系统空闲内存至少为2GB配置环境下载AndroidStudio安装完成/1.2.1AndroidStudio安装完成创建配置模拟器属性选择合适的SDK版本选择设备类型及尺寸1.2.2模拟器创建DDMS全称DalvikDebugMonitorService是Android开发环境中Dalvik虚拟机调试监控服务,是一个可视化的调试工具,是开发环境与模拟器或者真机之间的桥梁。1.2.3DDMS的使用DDMS的使用开发人员通过DDMS看到设备的运行状态,可以查看进程信息,LogCat信息,进程分配内存情况,还可以向设备发送短信以及拨打电话等。DDMS的使用1.2.3DDMS的使用1.2.4快捷键设置Ctrl+D:复制光标所在行的代码,并在此行的下面粘贴出来。Ctrl+/:以双斜杠的形式注释当前行的代码,即“//”。Ctrl+Shift+/:将当前选中代码以文档形式进行标注,即“/*…*/”。Ctrl+F:在当前类搜索与输入匹配的内容。Ctrl+X:剪切整行内容。Ctrl+Y:删除整行内容。Ctrl+F12:显示当前文件的结构。Ctrl+Alt+L:格式化代码。Ctrl+Alt+S:打开设置界面。Ctrl+Shift+Space:自动补全代码。Shift+Enter:在当前行的下面插入新行,并将代码移动到下一行。Alt+Enter:自动导入包。快捷键再单击右键,选择【AddKeyboardShortcut】单击【RemoveTab】,将快捷键【Tab】删除选择【Keymap】选项,右键点击要修改的快捷键点击【File】中的【Settings…】1.2.4快捷键设置设置完成后,点击【OK】按钮在【FirstStroke】输入框中直接按下键盘上要设置的快捷键1.2.4快捷键设置1.1Android简介1.2Android开发环境搭建1.3开发第一个Android程序主讲内容学习Android可以开发出精美的APP。1.3.1实战演练——HelloWorld程序本小节就教大家如何编写一个HelloWorld程序,并了解Android项目的结构。1.3.1实战演练——HelloWorld程序功能描述:技术要点:AndroidStudio中选择【File】

【New】

【NewProject】选项创建项目点击工具栏中【AVDManager】按钮启动模拟器点击工具栏中的运行按钮运行程序案例代码(详见教材P21—P26)实现步骤:

展示HelloWorld界面。使用AndroidStudio创建程序,使用模拟器运行程序。31.3.1实战演练——HelloWorld程序存放AndroidManifest.xml文件存放java代码,可创建多个包存放Android程序所用到的资源存放项目创建的相关文件1.3.2Android程序结构Android程序开发完成后,如果要发布到互联网上供别人使用,就需要将自己的程序打包成正式的Android安装包文件(AndroidPackage简称APK),其后缀名“.apk”。程序打包1.3.3Android程序打包选择证书存放路径进入创建证书界面进入签名界面选择生成签名选项1.3.3Android程序打包证书创建完成选择证书构建类型返回到签名界面填写证书信息1.3.3Android程序打包

本章主要讲解了Android的基础知识,首先介绍了Android的起源以及体系结构,然后讲解Android开发环境的搭建,最后通过一个HelloWorld程序来讲解如何开发Android程序。本章的知识作为Android开发者的入门知识,要求初学者对Android开发有个简单的了解,方便学习后面的知识。1.4本章小结课后作业请简要说明Android体系结构中每个层的功能。请简要说明模拟器的创建过程。预习作业Android常用布局Android常用控件Android移动开发基础案例教程第2章Android

UI开发·

常用对话框·

程序调试·布局的类型·

常用控件简要说明Android体系结构中每个层次的功能。简要说明模拟器的创建过程。作业点评Android常用布局Android常用控件预习检查2.4

常见对话框2.1布局的创建

2.2

布局的类型2.3常用控件主讲内容第1部分第2部分第1部分第2部分第3部分布局的创建——关于布局关于布局在Android程序中界面是通过布局文件设定的,在每个应用程序创建时会默认包含一个主界面布局,该布局位于res/layout目录中。实际开发中每个应用程序都包含多个界面,而程序默认提供的一个主界面布局无法满足需求,因此经常会在程序中添加多个布局。布局的创建——关于布局布局的创建——步骤2.4

常见对话框2.1布局的创建2.2布局的类型2.3常用控件主讲内容五种常用布局线性布局相对布局帧布局表格布局绝对布局特点:以水平或垂直方向排列特点:通过相对定位排列特点:开辟空白区域,帧里的控件(层)叠加特点:表格形式排列特点:通过x,y坐标排列五种常用布局线性布局线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。2.2.1线性布局orientation属性<LinearLayoutxmlns:android="/apk/res/android"

android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical">

</LinearLayout>2.2.1线性布局

当控件水平排列时,控件属性layout_width只能设置为wrap_content(包裹内容让当前控件根据控件内容大小自动伸缩),否则其余控件会被挤出屏幕右侧不显示。同理,如果控件垂直排列也会出现同样情况。当控件水平排列时,如果控件未占满一行,会留有空白区域,这样既不美观又浪费空间。此时,可以利用layout_weight属性解决这个问题,该属性被称为权重,通过比例调整布局中所有控件的大小。<Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"/>

注意:当控件使用权重属性时,布局宽度属性值通常设置为0。2.2.1线性布局——注意事项相对布局相对布局(RelativeLayout)是通过相对定位的方式指定控件位置,即以其它控件或父容器为参照物,摆放控件位置。在设计相对布局时要遵循控件之间的依赖关系,后放入控件的位置依赖于先放入的控件。2.2.2相对布局相对布局<RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="20dp">

……..

</RelativeLayout>按钮3按钮2按钮1100dp20dp2.2.2相对布局控件属性功能描述android:layout_centerInParent设置当前控件位于父布局的中央位置android:layout_centerVertical设置当前控件位于父布局的垂直居中位置android:layout_centerHorizontal设置当前控件位于父控件的水平居中位置android:layout_above设置当前控件位于某控件上方android:layout_below设置当前控件位于某控件下方android:layout_toLeftOf设置当前控件位于某控件左侧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.2.2相对布局——控件位置属性控件属性功能描述android:layout_marginTop设置当前控件上边界与某控件的距离android:layout_marginBottom设置当前控件底边界与某控件的距离android:layout_marginLeft设置当前控件左边界与某控件的距离android:layout_marginRight设置当前控件右边界与某控件的距离2.2.2相对布局——控件位置属性控件属性功能描述android:paddingTop设置布局顶部内边距的距离android:paddingBottom设置布局底部内边距的距离android:paddingLeft设置布局左边内边距的距离android:paddingRight设置布局右边内边距的距离android:padding设置布局四周内边距的距离2.2.2相对布局——控件内边距属性常用单位为了让程序拥有更好的屏幕适配能力,在指定控件和布局宽高时应尽量避免将控件宽高设置为固定值。但特殊情况下,需要使用指定宽高值时,可以选择使用以下四种单位:px:像素,即在屏幕中可以显示最小元素单位。pt:磅数,一磅等于1/72英寸,一般pt会作为字体的单位来显示。dp:基于屏幕密度的抽象单位。不同设备有不同的显示效果,根据设备分辨率的不同来确定控件的尺寸。sp:可伸缩像素,采用与dp相同的设计理念,推荐设置文字大小时使用。2.2.2相对布局帧布局帧布局(FrameLayout)为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。所有控件都默认显示在屏幕左上角,按照先后放入的顺序重叠摆放。帧布局的大小由内部最大控件的决定。2.2.3帧布局<FrameLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:foreground="@mipmap/ic_launcher"android:foregroundGravity="left"></FrameLayout>按钮1

按钮22.2.3帧布局表格布局表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单元格都可以添加控件。表格布局需要和TableRow配合使用,每一行都由TableRow对象组成,因此TableRow的数量决定表格的行数。而表格的列数是由包含最多控件的TableRow决定的,例如第1个TableRow有两个控件,第2个TableRow有三个控件,则表格列数为3。2.2.4表格布局<TableLayoutxmlns:android="/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:stretchColumns="2"><TableRow><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"android:text="按钮1"/></TableRow></TableLayout>按钮1按钮2按钮3按钮4按钮52.2.4表格布局表格布局属性布局属性功能描述android:stretchColumns设置该列被拉伸android:shrinkColumns设置该列被收缩android:collapseColumns设置该列被隐藏表格布局控件属性控件属性功能描述android:layout_column设置该单元显示位置android:layout_span设置该单元格占据几行,默认为1行2.2.4表格布局绝对布局绝对布局(AbsoluteLayout)是通过指定x、y坐标来控制每一个控件位置的。2.2.5绝对布局<AbsoluteLayoutxmlns:android="/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_x="50dp"

android:layout_y="50dp"

android:text="按钮1"/></AbsoluteLayout>设置x坐标设置y坐标2.2.5绝对布局2.4

常见对话框2.1布局的创建2.2布局的类型2.3常用控件主讲内容控件是界面组成的主要元素,是与用户进行直接交互的。常用控件TextViewEditTextButtonRadioButtonImageView控件的分类TextViewTextView是用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能。<TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="HelloWorld!"android:textColor="#000000"android:textSize="25sp"android:gravity="center"/>2.3.1TextViewEditViewEditText继承自TextView,可以进行编辑操作,将用户信息传递给Android程序。还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。<EditTextandroid:layout_width="match_parent“android:layout_height="wrap_content“android:hint="请输入姓名"android:maxLines="2"android:textColor="#000000"android:textSize="20sp"android:textStyle="italic"/>2.3.2EditViewButtonButton是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完整。<Buttonandroid:id="@+id/btn"android:text="按钮"android:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="click"/>2.3.3Button点击事件实现方式指定Button的onClick属性方式首先在layout文件中指定onClick属性:然后在Activity中实现这个click方法android:onClick="click"publicvoidclick(Viewv){Log.i("指定onClick属性方式","buttonisclicked");}

注意:Activity中实现的方法名称要与onClick属性设置的名称一致。2.3.3Button点击事件实现方式独立类方式首先为按钮设置监听器:在onCreate()方法外实现接口btn.setOnClickListener(myListener);onClickListenermyListener=newOnClickListener(){@OverridepublicvoidonClick(Viewv){Log.i("独立类方式","buttonisclicked");}

}2.3.3Button点击事件实现方式接口方式首先当前Activity实现OnClickListener接口然后实现接口方法最后绑定到Button上publicclassMainActivityextendsActivityimplementsonClickListener;@OverridepublicvoidonClick(Viewv){Log.i("接口方式","buttonisclicked");}btn.setOnClickListener(this);2.3.3Button点击事件实现方式匿名内部类方式在Activity中添加匿名内部类btn.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Log.i("匿名内部类方式","buttonisclicked");}});2.3.3ButtonRadioButtonRadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。2.3.4RadioButton<RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男“/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女“/></RadioGroup>控制RadioButton按钮的排列方向2.3.4RadioButton设置监听事件利用setOnCheckedChangeListener()监听RadioGroup控件状态,通过if语句判断被选中RadioButton的id。radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){@OverridepublicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){if(checkedId==R.id.rbtn){textView.setText("您的性别是:男");}else{textView.setText("您的性别是:女");}}});2.3.4RadioButtonImageViewImageView是视图控件,它继承自View,其功能是在屏幕中显示图像。ImageView类可以从各种来源加载图像(如资源库或网络),并提供缩放、裁剪、着色(渲染)等功能。<ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/bg"/><ImageViewandroid:layout_width="100dp"android:layout_height="100dp"android:src="@android:drawable/sym_def_app_icon"/>2.3.5ImageView123功能描述:搭建QQ登录界面UI。技术要点:使用前几节学习的布局和控件搭建。案例代码(详见教材P23—P25)实现步骤:导入图片资源思考界面结构布局文件中编写界面代码2.3.6实战演练——QQ登录界面2.4常见对话框2.1布局的创建2.2布局的类型2.3常用控件主讲内容常见对话框分类对话框也是程序与用户交互的一种方式,通常用于显示当前程序提示信息以及相关说明,以小窗口形式展现。常见对话框有以下几种:普通对话框单选对话框多选对话框进度条对话框消息对话框自定义对话框常见对话框普通对话框普通对话框(Dialog)一般只会显示提示信息,并具有确定和取消按钮。AlertDialogdialog;

dialog=newAlertDialog.Builder(this).setTitle("Dialog对话框").setMessage("是否确定退出?").setIcon(R.mipmap.ic_launcher).setPositiveButton("确定",null).setNegativeButton("取消",null).create();dialog.show();2.4.1普通对话框单选对话框单选对话框和RadioButton作用类似,只能选择一个选项,它是通过AlertDialog对象调用setSingleChoiceItems()方法创建的。newAlertDialog.Builder(this).setTitle("请选择性别").setIcon(R.mipmap.ic_launcher).setSingleChoiceItems(newString[]{"男","女"},0,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){}}).setPositiveButton("确定",null).show();2.4.2单选对话框多选对话框多选对话框通常在需要勾选多种选项时使用,例如添加兴趣爱好、喜爱的电影等。创建多选对话框与创建单选对话框类似,调用setMultiChoiceItems()方法就可实现。newAlertDialog.Builder(this).setTitle("请添加兴趣爱好!").setIcon(R.mipmap.ic_launcher).setMultiChoiceItems(newString[]{"旅游","美食","汽车","宠物"},null,null).setPositiveButton("确定",null).show();2.4.3多选对话框进度条对话框进度条对话框一般在应用程序实现耗时操作时使用。Android中提供了两种进度条样式,圆形进度条和水平进度条。ProgressDialogprodialog;prodialog=newProgressDialog(this);prodialog.setTitle("进度条对话框");prodialog.setIcon(R.mipmap.ic_launcher);prodialog.setMessage("正在下载请等候...");prodialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);prodialog.show();2.4.4进度条对话框消息对话框消息对话框(Toast)是轻量级信息提醒机制,显示在应用程序界面的最上层,一段时间后自动消失不会打断当前操作,也不获得焦点。Toast.makeText(this,"Hello,Toast",Toast.LENGTH_SHORT).show();2.4.5消息对话框自定义对话框为了提高用户体验,达到更理想的效果,可根据需求自定义对话框样式。具体创建步骤如下:创建布局创建一个自定义对话框的布局文件(my_dialog.xml),布局中需要设定对话框的标题、对话框内容以及确定和取消按钮。创建自定义对话框创建一个类MyDialog继承自Dialog类,主要用于初始化自定义对话框中的控件以及响应按钮的点击事件。使用自定义对话框在MainActivity中,调用MyDialog的构造方法将自定义对话框显示出来2.4.6自定义对话框2.5样式和主题

2.6

国际化2.7程序调试主讲内容样式样式(style)是包含一种或多种控件的属性集合,可以指定控件高度、宽度、字体大小及颜色等。自定义样式代码如下(styles.xml):<resources>

<stylename="textStyle_one">

<itemname="android:layout_width">match_parent</item>

<itemname="android:layout_height">wrap_content</item>

<itemname="android:textColor">#999999</item>

<itemname="android:textSize">35sp</item>

</style></resources>2.5.1样式样式引用自定义样式代码如下(activity_main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=http:///apk/res/android

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<TextView

style="@style/textStyle_one"

android:text="TextView样式一"

/></LinearLayout>2.5.1样式主题主题(theme)应用到整个Activity和Application的样式,当设置好主题后,Activity或整个程序中的视图都将使用主题中的属性,当主题和样式中的属性发生冲突时,样式的优先级要高于主题。自定义主题代码如下(styles.xml):<resources>

<stylename="grayTheme"parent="Theme.AppCompat.Light.DarkActionBar"><itemname="android:background">#999999</item>

</style></resources>2.5.2主题主题引用自定义主题代码如下(AndroidManifest.xml):<manifestxmlns:android="/apk/res/android"package=".dialog">

<application

......android:theme="@style/AppTheme">

<activity

android:name=".MainActivity"

android:theme="@style/grayTheme">

......

</activity>

</application></manifest>2.5.2主题2.5样式和主题2.6国际化2.7程序调试国际化简介国际化(internationalization)的应用具备支持多种语言功能,能被不同国家或地区用户同时访问,提供符合访问者阅读习惯的页面和数据。由于国际化单词internationalization首字母“I”和尾字母“N”之间有18个字符,因此被简称为I18N。国际化国际化文件的创建编写中文内容(strings.xml(zh-rCN)):<?xmlversion="1.0"encoding="utf-8"?><resources>

<stringname="app_name">安卓_i18n</string>

<stringname="hello_world">你好,世界!</string></resources>编写英文内容(strings.xml(en-rUS)):<?xmlversion="1.0"encoding="utf-8"?><resources>

<stringname="app_name">Android_i18n</string>

<stringname="hello_world">Hello,world!</string></resources>国际化的使用编写布局文件内容(activity_main.xml):<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<Button

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/hello_world"

android:textSize="25sp"/></LinearLayout>国际化的使用2.5样式和主题2.6国际化2.7程序调试主讲内容单元测试单元测试是指在应用程序开发过程中对最小的功能模块进行测试,可以在完成某个功能之后对该功能进行单独测试。使用AndroidStudio开发工具完成单元测试非常简单,在项目创建时AndroidStudio就已经默认创建了一个androidTest包和ApplicationTest类,所有测试的功能模块写入此类即可。2.7.1单元测试单元测试在ApplicationTest类中添加test()测试方法publicclassApplicationTestextendsApplicationTestCase<Application>{publicApplicationTest(){super(Application.class);}publicvoidtest()throwsException{finalintexpected=1;finalintreality=1;assertEquals(expected,reality);}}2.7.1单元测试2.7.1单元测试测试结果正常测试结果错误2.7.1单元测试LogCat的使用LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。Log类所输出的日志内容分为五个级别,分别对应Log类中的Log.v()、Log.d()、Log.i()、Log.w()、Log.e()静态方法。Android4.0新增加Assert比较特殊,没有对应的静态方法。Log.v("MainActivity","Verbose");

Log.d("MainActivity","Degug");

Log.i("MainActivity","Info");

Log.w("MainActivity","Warning");

Log.e("MainActivity","Error");2.7.2LogCat的使用2.7.2LogCat的使用——过滤显示过滤显示除了设置过滤器过滤所需的信息外,还可以直接根据Log级别过滤信息。2.7.2LogCat的使用——过滤显示Debug的使用Debug是跟踪程序流程的一种模式,可以通过在代码处设置断点,再利用Debug窗口查看,所谓断点是在代码行加入停止点,当程序执行到该行时会暂停,开发者可以从中查看到此行的变量、数值和内容等。2.7.3Debug的使用首先编写一个案例,用户输入数字,然后点击按钮计算出累加的总和,接下来在代码行中加入断点查看程序计算过程。2.7.3Debug的使用2.7.3Debug的使用2.7.3Debug的使用2.7.3Debug的使用日志显示结果n(输入的整数)值为3,连续点击可查看整个计算过程,程序在for循环语句中反复执行,直到满足循环条件为止。2.7.3Debug的使用本章主要讲解了Android中布局以及控件和程序调试等知识。首先介绍了布局的创建,布局的类型,常用控件等,并通过一个QQ登录的案例将这些知识融合在一起。然后讲解几种常用的对话框以及如何通过样式和主题设置界面风格。最后讲解了Android最常用到的单元测试、LogCat以及Debug的使用。

本章所讲解的内容在实际开发中非常重要,基本上每个Android程序都会使用这些内容,因此要求初学者必须熟练掌握,为后面的学习做好铺垫。2.8本章小结✎本章作业Android中有几种布局,以及每种布局的特点。LogCat区域中的5种字母所代表的含义。✎预习作业Activity的生命周期Android中跳转Activity有几种方法Android移动开发基础案例教程第3章Activity·

Activity之间的跳转·

Activity中的数据传递·Activity生命周期·Activity启动模式作业点评请简要说明LogCat区域中的5种字母所代表的含义。请简要说明Android中有几种布局,以及每种布局的特点。Activity的生命周期Android中跳转Activity有几种方法预习检查3.4

Activity之间的跳转3.1Activity的创建

3.2

Activity的生命周期3.3Activity的启动模式主讲内容2)包名处点击右键选择【New】

【JavaClass】选项,填写Java类名,完成创建。在该类中继承AppCompatActivity,并在清单文件中进行注册,完成Activity的创建。1)包名处点击右键选择【New】

【Activity】

【EmptyActivity】选项,填写Activity信息,完成创建。两种创建方式Activity的创建3.4

Activity之间的跳转3.1Activity的创建3.2Activity的生命周期3.3Activity的启动模式主讲内容当Activity启动之后便会进入下一状态。Activity处于屏幕最前端,可与用户进行交互。Activity仍然可见,但无法获取焦点,用户对它操作没有响应。Activity完全不可见,系统内存不足时会销毁该Activity。Activity将被清理出内存。启动状态运行状态暂停

状态停止状态销毁状态3.2.1生命周期状态3.2.2生命周期方法3.4

Activity之间的跳转3.1Activity的创建3.2Activity的生命周期3.3Activity的启动模式主讲内容栈是一种“先进后出”的数据结构。Android中,采用任务栈的形式来管理Activity。栈的特点3.3.1Android中的任务栈standard模式standard模式是Activity的默认启动方式,每启动一个Activity就会在栈顶创建一个新的实例。3.3.2Activity的四种启动模式singleTop模式singleTop模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,否则创建新的实例。3.3.2Activity的四种启动模式singleTask模式singleTask模式下每次启动该Activity时,系统首先会检查栈中是否存在当前Activity实例,如果存在则直接使用,并把当前Activity之上的所有实例全部出栈。3.3.2Activity的四种启动模式singleInstance模式singleInstance模式会启动一个新的任务栈来管理Activity实例,无论从哪个任务栈中启动该Activity,该实例在整个系统中只有一个。3.3.2Activity的四种启动模式3.4Activity之间的跳转3.1Activity的创建3.2Activity的生命周期3.3Activity的启动模式主讲内容Intent被称为意图,是程序中各组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。一般用于启动Activity、Service以及发送广播等。根据开启目标组件的方式不同,Intent被分为两种类型显示意图和隐式意图。Intent(意图)3.4.1Intent介绍显式意图可以直接通过名称开启指定的目标组件隐式意图通过指定action和category等属性,系统根据这些信息进行分析后寻找目标Activity3.4.1Intent介绍显式意图

Intentintent=newIntent(this,Activity02.class);

startActivity(intent);3.4.1Intent介绍<activityandroid:name="cn.itcast.Activity02"><intent-filter><actionandroid:name="cn.itcast.START_ACTIVITY"/><categoryandroid:name="ent.category.DEFAULT"/></intent-filter></activity>隐式意图Intentintent=newIntent();

intent.setAction("cn.itcast.START_ACTIVITY");

startActivity(intent);3.4.1Intent介绍23功能描述:技术要点:AndroidStudio中选择【File】

【New】

【NewProject】选项创建项目点击工具栏中【AVDManager】按钮启动模拟器点击工具栏中的运行按钮运行程序案例代码(详见教材P15—P21)实现步骤:

展示HelloWorld界面。使用AndroidStudio创建程序,使用模拟器运行程序。13.4.2实战演练——打开浏览器3.5Activity中的数据传递3.2Activity的生命周期3.3Activity的启动模式3.4Activity之间的跳转主讲内容数据传递Intentintent=newIntent(this,Activity02.class);

intent.putExtra("extra_data","HelloActivity02");

startActivity(intent);Activity之间传递数据需要用到Intent提供的putExtra()方法。Intentintent=getIntent();

Stringdata=intent.getStringExtra("extra_data");3.5.1数据传递23功能描述:技术要点:案例代码(详见教材P21—P26)实现步骤:

1注册界面的设计与实现数据展示界面的设计与实现注册界面逻辑代码的设计与实现数据展示界面逻辑代码的设计与实现将注册界面信息传递到展示界面进行展示。使用Intent传递数据,获取Intent中的数据。3.5.2实战演练——注册用户信息3.5.3数据回传

Intentintent=newIntent(this,Activity02.class);

startActivityForResult(intent,1);Intentintent=newIntent();

intent.putExtra("extra_data","HelloActivity01");

setResult(1,intent);protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if(requestCode==1){

if(resultCode==1){

Stringstring=data.getStringExtra("extra_data");

}}}3.5.3数据回传

23功能描述:技术要点:案例代码(详见教材P21—P26)实现步骤:

1宠物显示界面的设计与实现购买装备界面的设计与实现创建封装装备信息的实体类购买装备界面逻辑代码的设计与实现宠物显示界面逻辑代码的设计与实现将注册界面信息传递到展示界面进行展示。使用Intent回传数据,Activity之间的跳转。3.5.4实战演练——选择宝宝装备本章主要讲解了Activity的相关知识,包括Activity入门、Activity生命周期、Activity启动模式、Intent的使用以及Activity中的数据传递,并在讲解各个知识点时编写了相应的使用案例。在应用程序中凡是有界面都会使用到Activity,因此,要求初学者必须熟练掌握该组件的使用。3.6本章小结✎本章作业请简要说明Activity有几种启动模式,以及每种启动模式的特点。请简要写出Activity生命周期中的方法及其作用。✎预习作业Android平台提供了几种数据存储方式XML数据与JSON数据的区别Android移动开发基础案例教程第4章数据存储·

JSON解析·

SharedPreferences·数据存储方式·XML解析作业点评请简要说明Activity有几种启动模式,以及每种启动模式的特点。请简要写出Activity生命周期中的方法及其作用Android平台提供了几种数据存储方式XML数据与JSON数据的区别预习检查4.4

JSON解析4.1数据存储方式4.2

文件存储4.3XML解析主讲内容文件存储是一种较常用的方法,与Java中的文件存储类似,都是通过I/O流的形式存储数据。SharedPreferences是Android提供的用来存储一些简单的配置信息的一种机制。SQLite数据库是Android自带的一个轻量级数据库,支持基本SQL语法。ContentProvider是Android四大组件之一,可以将自己的数据共享给其他应用程序。网络存储是通过网络提供的存储空间来存储/获取数据信息。Android中的五种数据存储方式4.4

JSON解析4.1数据存储方式4.2文件存储4.3XML解析主讲内容文件存储是Android中最基本的一种数据存储方式,它与Java中的文件存储类似,都是通过I/O流的形式把数据存储到文档中。Android中的文件存储分为内部存储和外部存储。内部存储将应用程序中的数据以文件方式存储到设备的内部,当创建的应用程序被卸载时,其内部存储文件也随之被删除。是将文件存储到一些外部设备上,例如SD卡或者设备内嵌的存储卡,属于永久性的存储方式。外部存储4.2.1文件存储简介内部存储—写入

StringfileName="data.txt";

Stringcontent="helloworld";

FileOutputStreamfos;

try{fos=openFileOutput(fileName,MODE_PRIVATE);fos.write(content.getBytes()); fos.close(); }catch(Exceptione){e.printStackTrace();}4.2.1文件存储简介内部存储—读取

Stringcontent="";

FileInputStreamfis;

try{

fis=openFileInput("data.txt");

byte[]buffer=newbyte[fis.available()];fis.read(buffer);

content=newString(buffer);fis.close();

}catch(Exceptione){e.printStackTrace();

}4.2.1文件存储简介

Stringstate=Environment.getExternalStorageState();

if(state.equals(Environment.MEDIA_MOUNTED)){

FileSDPath=Environment.getExternalStorageDirectory();

Filefile=newFile(SDPath,"data.txt");

Stringdata="HelloWorld";

FileOutputStreamfos;try{

fos=newFileOutputStream(file);

fos.write(data.getBytes());

fos.close();

}catch(Exceptione){

e.printStackTrace();}

}外部存储—存入4.2.1文件存储简介Stringstate=Environment.getExternalStorageState();if(state.equals(Environment.MEDIA_MOUNTED)){FileSDPath=Environment.getExternalStorageDirectory();Filefile=newFile(SDPath,"data.txt");

FileInputStreamfis;try{ fis=newFileInputStream(file); BufferedReaderbr=newBufferedReader(newInputStreamReader(fis)); Stringdata=br.readLine();}catch(Exceptione){ e.printStackTrace();}}外部存储—读取4.2.1文件存储简介<uses-permission

android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>外部存储—声明权限Android系统为了保证应用程序的安全性做了相关规定,如果程序需要访问系统的一些关键信息,必须要在清单文凭中声明权限才可以,否则程序运行时会直接崩溃。由于操作SD卡中的数据属于系统中比较关键的信息,因此需要在清单文件的<manifest>节点中添加SD卡的读写权限。4.2.1文件存储简介23功能描述:技术要点:案例代码(详见教材P15—P21)实现步骤:

1用户交互界面的设计与实现工具类(FileSaveQQ.java)的设计与实现界面逻辑代码的设计与实现实现保存QQ密码功能。使用文件存储的方式保存数据。4.2.2实战演练——保存QQ密码4.4

JSON解析4.1数据存储方式4.2文件存储4.3XML解析主讲内容DOM解析SAX解析PULL解析将XML文件中所有内容以DOM树形式存放在内存中,支持删除、修改等功能。缺点是消耗内存较大。逐行扫描XML文件,读取文件的同时即可进行解析处理,不必等到文件加载结束。缺点是无法进行增、删、改等操作。一个开源的Java项目,既可以用于Android应用,也可以JavaEE程序。Android中已经集成了PULL解析器。三种解析方式4.3.1XML解析23功能描述:技术要点:案例代码(详见教材P21—P26)实现步骤:

1用户交互界面的设计与实现XML文件(weather1.xml)的创建实体类(WeatherInfo.java)的创建工具类

温馨提示

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

评论

0/150

提交评论