《手机平台应用开发》全册配套课件_第1页
《手机平台应用开发》全册配套课件_第2页
《手机平台应用开发》全册配套课件_第3页
《手机平台应用开发》全册配套课件_第4页
《手机平台应用开发》全册配套课件_第5页
已阅读5页,还剩276页未读 继续免费阅读

下载本文档

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

文档简介

《手机平台应用开发》全册配套课件手机平台应用开发Internet3/48课程介绍1、课程学习的目标和意义2、课程学习方法3、参考资源云端数据和服务AndroidIOS两种开发架构AndroidIOS系统架构基于Java虚拟机基于UNIX系统安全性安全性略低安全、稳定开发语言JavaObjectiveC,Swift是否开源开源不开源设备的种类各类手机和嵌入式设备iPhone/iPad等用户人群大量用户群体消费能力较高用户支撑企业GoogleApple应用商店各类安卓市场AppStore(08年上线)移动终端时代的典型产品线IOS终端Android终端WeChat入口Web终端SwiftJavaHTML+Javascript远程数据和服务:PHP、JavaEE、Python等数据存储:MySQL、Storage等合一的探索:TitaniumSDK发展:基于javascript的统一平台8/48实践目标:云服务支持的移动应用开源的移动app开发彼此开源、相互学习互助测试&迭代云端基础数据服务将用户数据的所有权归还给用户建立人人共享的开源数据服务技术研究论文前端、服务器端均可在自己的项目中实现了,或是能够实现个人演示&讲解9/48课程学习方法注重&研究交互设计面向用户的敲门砖,仔细测试用户体验整体性思维从数据表的设计,到服务器端接口,到客户端交互有计划的实践踏出第一步,你会发现惊喜互相开源,互相分享技能,互相测试保持良好学习心态循序渐进,不放过细节为了实现内心中一份爱的事业10/48参考资源网上获取知识//////参考书籍《Android开发艺术探索》《ModernPHP》《javascript高级程序设计》《JavaRESTfulWebService实战》第一章Android基础入门Android体系结构Android开发环境搭建开发第一个Android程序✎学习目标通信技术Android体系结构3重点了解掌握2Android程序结构Android程序打包过程Android开发环境搭建HelloWorld程序的编写1

目录Android简介1.1☞点击查看本小节知识架构Android开发环境搭建

1.2☞点击查看本小节知识架构开发第一个Android程序1.3☞点击查看本小节知识架构本章小结1.4

知识架构1.1Android简介返回目录1.1.1通信技术1.1.3Android体系结构1.1.2Android起源Dalvik虚拟机1.1.4

知识架构1.2Android开发环境搭建返回目录1.2.1ADTBundle开发工具集合1.2.3DDMS的使用1.2.2Android调试桥(ADB)

知识架构1.3开发第一个Android程序返回目录1.3.1案例——HelloWorld程序1.3.3Android程序打包过程Android程序结构1.3.21.1Android简介什么是Android?Android本意指“机器人”,Google公司将Android的标识设计为一个绿色机器人,

表示Android系统符合环保概念,是一个轻薄短小,功能强大的移动系统,是第一个真正为手机打造的开放性系统。1.1Android简介1.1Android简介1.1.1通信技术第一代通信技术(1G):是指最初的模拟、仅限语音的蜂窝电话标准。第二代通信技术(2G):是指第2代移动通信技术,代表为GSM,以数字语音传输技术为核心。第三代通信技术(3G):是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。第四代通信技术(4G):又称IMT-Advanced技术,它包括了TD-LTE和FDD-LTE。1.1Android简介1.1.2Android起源Android一词最早出现于法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中,将外表像人的机器起名为Android。Android操作系统最初是由安迪·罗宾(AndyRubin)开发出的,2005年被Google收购,并于2007年11月5日正式向外界展示了这款系统。2008年9月发布Android第1个版本Android1.1。Android系统一经推出,版本升级非常快,几乎每隔半年就有一个新的版本发布。从Android1.5版本开始,Android用甜点作为系统版本的代号。2009年4月30日,Android1.5Cupcake(纸杯蛋糕)正式发布。2009年9月5日,Android1.6Donut(甜甜圈)版本发布。1.1Android简介1.1.2Android起源界面演进1.1Android简介1.1.3Android体系结构1.1Android简介1.1.4Dalvik虚拟机Dalvik是Google公司自己设计用于Android平台的虚拟机,它可以简单的完成进程隔离和线程管理,并且可以提高内存的使用效率。基于架构基于栈架构基于寄存器架构JVM(jdkjavac)文件格式.java.class.jar.java.class.dex.odexDalvikVM(sdkdex)1.2Android开发环境搭建1.2.1ADTBundle开发工具集合到“/sdk/index.html”网址,下载相应的版本的ADTBundle。将ADTBundle解压后,会看到eclipse目录、sdk目录和SDKManager.exe。1.2Android开发环境搭建1.2.2Android调试桥(ADB)Android调试桥指的就是adb.exe工具(AndroidDebugBridge简称ADB),存在于SDK的platform-tools目录中,允许开发人员与模拟器或者连接的Android设备进行通信。ADB常见命令adbstart-server:开启adb服务adbdevice:列出所有设备adblogcat:查看日志adbkill-server:关闭adb服务

adbshell:挂载到Linux的空间

1.2Android开发环境搭建1.2.3

DDMS的使用DDMS全称DalvikDebugMonitorService,它是Android开发环境中Dalvik虚拟机调试监控服务。DDMS作为IDE、emultor、真机之间的桥梁,将捕捉到终端的ID通过ADB建立调试桥,从而实现发送指令到测试终端的目的。小计算如果VGA分辨率指的是640*480,那么,HVGA(H表示half)表示什么分辨率?320*240?320*480?QVGAQ代表quarter,即1/4240*320WVGA800*480SVGA,WSVGA800*600,1024*6001.3开发第一个Android程序1.3.1案例——HelloWorld程序任何一门语言编写的第一个程序毫无疑问的都是HelloWorld,当然我们也不例外,本小节就教大家如何编写一个HelloWorld程序,以及了解Android项目的结构。1.3开发第一个Android程序1.3.2Android程序结构Android程序创建时,eclipse就为其构建了基本结构,设计者可以在此结构上开发应用程序,因此,掌握Android程序的结构是很有必要的。1.3开发第一个Android程序1.3.3Android程序打包过程Android程序开发完成后,如果要发布到互联网上供别人使用,就需要将自己的程序打包成正式的Android安装包文件(AndroidPackage简称APK),其后缀名“.apk”。使用runas也能生成一个apk安装包,但是使用runas生成的是测试的安装包,只供开发者自己测试使用。1.4本章小结本章主要讲解了Android的基础知识,首先介绍了Android的起源以及体系结构,然后讲解Android开发环境的搭建,最后通过一个HelloWorld程序来讲解如何开发Android程序。本章的知识作为Android开发者的入门知识,要求初学者对Android开发有个简单的了解,方便学习后面的知识。33/48再会!下一章:AndroidUI开发新学期进步!教师:金星办公室:逸夫楼C326电话Q:65149264手机平台应用开发✎学习目标3国际化重点了解掌握2样式和主题布局的类型程序调试1在Android应用中,UI(UserInterface)界面是人与手机之间数据传递、交互信息的重要媒介和对话接口。Android程序开发最重要的一个环节就是界面处理,界面的美观度直接影响用户的第一印象,因此,开发一个整齐、美观的界面是至关重要的。2.1UI概述2.1UI概述Android应用的界面是由View和ViewGroup对象构建而成的。View类是Android系统平台上用户界面表示的基本单元,View的一些子类被统称为Widgets(工具),它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。ViewGroup是View的一个扩展,它可以容纳多个View,通过ViewGroup类可以创建有联系的子View组成的复合控件。2.2布局文件的创建在Android应用程序中,界面是通过布局文件设定的。布局文件采用XML格式,每个应用程序默认包含一个主界面布局文件,该文件位于项目的“res/layout”目录中。

Android中有几种布局?2.3布局的类型Android中的布局如下:LinearLayoutRelativeLayoutTableLayoutGridLayoutFrameLayoutAbsoluteLayout2.3布局的类型控件盒子模型一般控件属性marginandroid:layout_marginTopandroid:layout_marginBottomandroid:layout_marginLeftandroid:layout_marginRight如果四面是相同的android:layout_marginpaddingandroid:paddingTopandroid:paddingBottomandroid:paddingLeftandroid:paddingRightandroid:background"#aa0000""@drawable/some"如果四面是相同的android:padding增强编程环境的自动提示功能XML粘贴到里面:<=:.abcdefghijklmnopqrstuvwxyz(,Alt+/:自动补全快捷键java粘贴到里面:.abcdefghijklmnopqrstuvwxyz(,Ctrl+1:快速修复Android有没有Border?没有提供。使用backgroundandroid:background只要是drawable均可drawable包括图片和长方形等矢量图案。<shapexmlns:android="/apk/res/android"><strokeandroid:width="1dp"android:color="#f00"/></shape>单位px:1个像素,不建议使用这个单位PPI(DPI):Pixels(Dots)perinch,屏幕上每英寸有多少个像素。dp:Density-independentpixels,dp*ppi/160=pxsp:Scale-independentpixels,安卓的字体单位不同屏幕分辨率ldpi低分辨率120dpi1dp=0.75pxmdpi标准分辨率160dpi1dp=1pxhdpi高分辨率240dpi1dp=1.5pxxhdpi超高分辨率320dpi1dp=2px真实手机的DPI计算屏幕分辨率测试shapeImageView、ImageButton等控件android:src设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)TextView等控件android:backgroundShape的子节点gradient--对应颜色渐变。solid--填充。stroke--描边。corners--圆角。padding--定义内容离边界的距离。圆角按钮背景shape代码节选<shapeandroid:shape="rectangle"><cornersandroid:topLeftRadius="5dp"android:bottomLeftRadius="5dp"android:topRightRadius="0.1dp"android:bottomRightRadius="0.1dp"/><strokeandroid:width="0.5dp"android:color="#0000ff"/><solidandroid:color="#00ffff"/></shape>其他控件属性android:gravitytop,bottom,left,right,center,center_vertical,center_horizontalandroid:ignoreGravityandroid:layout_gravity区别前两者是对内容的限定后者是相对父元素限定android:scaleType设置图片适配控件尺寸的不同方式。2.3.1相对布局(RelativeLayout)。在Eclipse中开发Android程序时,默认采用的就是相对布局。相对布局通常有两种形式,一种是相对于容器而言的,一种是相对于控件而言的。2.3布局的类型第一类:属性值为true或falseandroid:layout_centerHorizontal水平居中android:layout_centerVertical垂直居中android:layout_centerInparent相对于父元素完全居中android:layout_alignWithParentIfMissing如果对应的兄弟元素找不到的话就以父元素做参照物android:layout_alignParentBottom贴紧父元素的下边缘android:layout_alignParentLeft贴紧父元素的左边缘android:layout_alignParentRight贴紧父元素的右边缘android:layout_alignParentTop贴紧父元素的上边缘第二类:属性值必须为id的引用名“@id/id-name”android:layout_below在某元素的下方android:layout_above在某元素的上方android:layout_toLeftOf在某元素的左边android:layout_toRightOf在某元素的右边android:layout_alignTop本元素的上边缘和某元素的的上边缘对齐android:layout_alignLeft本元素的左边缘和某元素的的左边缘对齐android:layout_alignBottom本元素的下边缘和某元素的的下边缘对齐android:layout_alignRight本元素的右边缘和某元素的的右边缘对齐2.3布局的类型2.3.2线性布局(LinearLayout)线性布局是Android中较为常用的布局方式,它使用<LinearLayout>标签表示。线性布局有两种方式指定控件位置,一种是水平方向,一种是竖直方向。

属性android:orientation布局的方向layout_weight相对大小取值:一个非负整数值线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。注意:如果layout_weight指为0,控件会按原大小显示,不会被拉伸。2.3布局的类型2.3.3表格布局(TableLayout)表格布局就是让控件以表格的形式来排列组件的,只要将组件或信息放在单元格中,控件就可以整齐的排列。

在TableLayout中,行数由TableRow对象控制的,即布局中有多少TableRow对象,就有多少行。2.3布局的类型

2.3.4网格布局(GridLayout)网格布局是Android4.0新增的布局,它实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发。网格布局用一组无限细的直线将绘图区域分成行、列和单元,并指定控件的显示区域和控件在该区域的显示方式。2.3布局的类型

脚下留心:由于GridLayout是Android4.0之后有的新功能,如果要在项目中使用这种布局,需要把SDK的最低版本指定为Android4.0(API14)以上。AndroidManifest.xml中,配置SDK兼容的最低版本和最高版本示例代码如下:

<uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="17"/>2.3布局的类型

2.3.5帧布局(FrameLayout)帧布局为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。采用帧布局设计界面时,只能在屏幕左上角显示一个控件,如果添加多个控件,这些控件会按照顺序在屏幕的左上角重叠显示,且会透明显示之前控件的文本。

2.3布局的类型

2.3.6绝对布局AbsoluteLayout绝对布局需要通过指定x、y坐标来控制每一个控件的位置,放入该布局的组件需要通过android:layout_x和android:layout_y两个属性指定其准确的坐标值,并显示在屏幕上。2.3布局的类型

2.3.6绝对布局(AbsoluteLayout)绝对布局多用于游戏开发中,由于多分辨率兼容麻烦,绝对布局在Android1.5后被Google弃用,因此应用开发一般情况下不推荐使用绝对布局。2.3布局的类型

2.3.7案例——用户注册接下来通过一个用户注册的案例演示相对布局和线性布局的使用。2.4样式和主题2.4.1样式和主题的使用Android系统中,包含了很多定义好的样式和主题,这些样式和主题用于定义布局显示在界面上的风格。下图就是一幅设置了窗口化主题的应用。2.4样式和主题2.4.2案例——自定义样式和主题尽管Android系统提供了很多样式和主题,但有时这些效果并不能满足实际需求,此时还可以自定义样式或者主题。自定义样式和主题的步骤如下:

1)在res/values目录创建样式文件style.xml,添加<resources>根节点。

2)在<resources>节点中添加一个<style>节点,并在该节点中为样式或

主题定义一个名称。3)在<style>节点中声明一个或多个<item>,每个<item>节点需要定义一

个属性名,并在元素内部设置这个属性的值。2.4样式和主题2.4.2案例——自定义样式和主题接下来通过一个具体的案例来演示如何自定义样式和主题。2.5国际化2.5国际化国际化是指软件开发时,应该具备支持多种语言和地区的功能,为不同国家和地区的用户,提供符合来访者阅读习惯的页面或数据。由于国际化Internationalization这个单词的首字母“I”和尾字母“N”之间有18个字符,因此国际化被简称为I18N。为了提供不同语言版本,开发者只需要在res目录下新建对应的values文件夹。2.5国际化2.5国际化接下来通过一个案例I18N来展示图片、文字的国际化。I18N实现了在系统设置页面切换不同国家语言,在程序界面展示不同国家的国花以及文字。2.6程序调试2.6.1Junit单元测试JUnit是一个测试框架,它是Android

SDK1.5加入的自动化测试功能。在完成某个功能后对该功能进行单独测试,而不需要把程序安装到手机或模拟器中进行测试,这样会大大提高程序开发的准确性。JUnit单元测试既可以嵌入到项目中,也可以作为一个单独的项目,针对某个项目进行测试。具体步骤如下:1)配置JUnit环境2)创建测试类3)运行测试 2.6程序调试2.6.2LogCat使用LogCat用于输出Android程序中的日志信息。它支持五种输出方式,级别由低到高分别是:Verbose(V):

显示全部信息,黑色Debug(D):

显示调试信息,蓝色Info(I):

显示一般信息,绿色Warming(W):显示警告信息,橙色Error(E):

显示错误信息,红色2.6程序调试2.6.2LogCat使用由于LogCat中输出的信息多而繁杂,找到所需要的Log信息会比较困难,因此可以使用过滤器,过滤掉不需要的信息,点击加号,弹出LogCat信息过滤框。2.6程序调试2.6.3Toast的使用Toast会显示一个小消息告诉用户一些必要信息,该消息在短时间内自动消失,不会干扰用户操作。Toast组件有两个方法makeText()和show(),其中makeText()方法用于设置需要显示的字符串,show()方法显示消息框。Toasttoast=Toast.makeText(Context,Text,Time);toast.show();简写形式如下:Toast.makeText(context,"这是弹出消息!",0).show();2.6程序调试2.6.3Toast的使用接下来在程序中创建一个Toast显示“这是弹出消息!”,示例代码如下:

Toast.makeText(MainActivity.this,"这是弹出消息!",Toast.LENGTH_SHORT).show();2.7本章小结本章主要讲解了Android中的布局、样式和主题、国际化、程序调试等知识。本章所讲解的内容在实际开发中非常重要,基本上每个Android程序都会使用到这些内容,因此要求初学者必须熟练掌握,为后面的学习做好铺垫75/48再会!下一章:Activity循序渐进!第三章ActivityActivity生命周期Activity的启动模式显式意图和隐式意图Activity中的数据传递✎学习目标3Activity简介重点了解掌握2Android中的任务栈Activity的四种启动模式Activity的生命周期Activity中的数据传递显式意图和隐式意图1

目录Activity入门3.1☞点击查看本小节知识架构Activity的启动模式

3.2☞点击查看本小节知识架构在Activity中使用Intent3.3☞点击查看本小节知识架构Activity中的数据传递3.4☞点击查看本小节知识架构本章小节3.5

知识架构3.1Activity入门返回目录3.1.1Activity简介3.1.3Activity的生命周期Activity的创建3.1.2案例——Activity的存活3.1.4

知识架构3.2Activity的启动模式返回目录3.2.1Android下的任务栈3.2.2Activity的四种启动模式

知识架构3.3在Activity中使用Intent返回目录3.3.1Intent介绍3.3.3案例——打开系统照相机3.3.2显式意图和隐式意图

知识架构3.4Activity中的数据传递返回目录3.4.1数据传递方式3.4.3回传数据3.4.2案例——用户注册案例——装备选择3.4.43.1

Activity入门什么是Activity?3.1.1Activity简介

3.1

Activity入门3.1.1Activity简介

Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个用户界面的展现。Activity展示界面Activity展示界面3.1

Activity入门3.1.1Activity简介Activity是通过调用setContentView()方法来显示指定组件的。该方法既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管理的,下面列举几个Activity的常用事件。onKeyDown(intkeyCode,KeyEventevent):对应按键按下事件onKeyUp(intkeyCode,KeyEventevent):对应按键松开事件onTouchEvent(MotionEventevent):对应点击屏幕事件3.1

Activity入门3.1.2Activity的创建在Android应用中,可以创建一个或多个Activity,创建步骤如下所示:1)定义一个类继承自android.app.Activity或者其子类;2)在res/layout目录中创建一个xml文件,用于创建Activity的布局;3)在AndroidManifest.xml文件中注册Activity;4)重写Activity的onCreate()方法,并在该方法中使用setContentView()

加载指定的布局文件;3.1

Activity入门3.1.3Activity的生命周期生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态。运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,下面通过图例来展示。3.1

Activity入门3.1.3Activity的生命周期创建时执行可见时执行回到前台,再次可见时执行获取焦点时执行失去焦点时执行用户不可见,进入后台时执行销毁时执行3.1

Activity入门3.1.4案例——Activity的存活为了让初学者掌握Activity的生命周期,接下来通过Activity存活的案例来演示两个Activity跳转时,生命周期方法变化的过程。3.1

Activity入门

脚下留心:横竖屏切换时的生命周期当手机横竖屏切换时,Activity会销毁重建(模拟器中横竖屏切换可以使用ctrl+F11)。如果不希望在横竖屏切换时Activity被销毁重建,可以在AndroidManifest.xml文件中设置Activity的android:configChanges的属性,具体代码如下所示:android:configChanges="orientation|keyboardHidden|screenSize“如果希望某一个界面一直处于竖屏或者横屏状态,可以在清单文件中通过设置Activity的属性来完成,具体代码如下所示:竖屏:android:screenOrientation="portrait"横屏:android:screenOrientation="landscape"参考资料:/article/31833.htm3.1

Activity入门

多学一招:设置View的点击事件监听Android程序中,设置View的点击事件监听共有四种,分别是:1)在布局文件中为控件设置onClick属性指定点击方法;2)创建一个内部类实现OnClickListener接口并重写onClick()方法,

之后需要为控件设置setOnClickListener(Listenerlistener);3)主类中实现OnclickListener接口,然后重写onClick()方法;4)创建匿名内部类,即在为控件设置监听时直接创建一个OnClickListener实例,不为该实例指定名称。3.2

Activity的启动模式3.2.1Android下的任务栈Android系统中的任务栈,类似于一个容器,用于管理所有的Activity实例。在存放Activity时,满足“先进后出(First-In/Last-Out)”的原则。从图可以看出,先加入任务栈中的Activity会处于容器下面,后加入的处于容器上面,而从任务栈中取出Activity是从最顶端先取出,最后取出的是最底端的Activity。3.2

Activity的启动模式3.2.2Activity的四种启动模式Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInstance。在AndroidManifest.xml中,可以通过<activity>标签的android:launchMode属性设置启动模式。3.2

Activity的启动模式3.2.2

Activity的四种启动模式standard标准模式standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式。在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,每次启动都会创建一个新的实例。3.2

Activity的启动模式3.2.2

Activity的四种启动模式singleTop模式singleTop启动模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它,不再创建新的实例。3.2

Activity的启动模式3.2.2

Activity的四种启动模式singleTask模式当Activity的启动模式为singleTask时,每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。3.2

Activity的启动模式3.2.2

Activity的四种启动模式singleInstance模式singleInstance模式加载Activity时,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。/kf/201311/254450.html/kf/201503/380172.html3.3在Activity中使用Intent3.3.1Intent介绍Intent中文翻译为“意图”,它是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。Intent启动Activity的方法有:startActivity(Intentintent)

startActivityForResult(Intentintent,intcode)

3.3在Activity中使用Intent3.3.2显式意图和隐式意图显式意图即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。Intentintent=newIntent(this,Activity02.class);startActivity(intent);显式意图还可以根据目标组件的包名、全路径名来指定开启组intent.setClassName("cn.itcast.xxx","cn.itcast.xxx.xxxx");startActivity(intent);3.3在Activity中使用Intent3.3.2显式意图和隐式意图隐式意图没有明确指定组件名的Intent称为隐式意图。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。

<activityandroid:name="ent.Activity02"><intent-filter><actionandroid:name="cn.itscast.xxx"/><categoryandroid:name="ent.category.DEFAULT"/></intent-filter></activity><action>标签指明了当前Activity可以响应的动作为"cn.itscast.xxx",而<category>标签则包含了一些类别信息,只有当<action>和<category>中的内容同时匹配时,Activity才会被开启。3.3在Activity中使用Intent3.3.2显式意图和隐式意图隐式意图使用隐式意图开启Activity的示例代码如下所示:Intentintent=newIntent();//设置动作和清单文件一样intent.setAction("cn.itscast.xxx");startActivity(intent);

3.3在Activity中使用Intent3.3.3案例——打开系统照相机在实际开发中,避免不了要调用其他应用程序的组件。例如,在开发新浪微博时,需要启动系统的相机功能。接下来通过打开系统照相机的案例向大家演示如何使用隐式意图。3.4

Activity中的数据传递3.4.1数据传递方式Intent不仅可以用来开启Activity,也可以在Activity之间传递数据。在数据传递时,可以使用putExtra()方法将数据存储在Intent中。

Stringdata="HelloActivity02"Intentintent=newIntent(this,Activity02.class);intent.putExtra("extra_data",data);startActivity(intent);将数据从Activity02中取出Intentintent=getIntent();Stringdata==intent.getStringExtra("extra_data");3.4

Activity中的数据传递3.4.1数据传递方式putExtra()不仅可以传递基本类型数据,还可以传递Bundle对象。Bundlebundle=newBundle();bundle.putString("name","Linda");Intentintent=newIntent(this,Activity02.class);intent.putExtra(bundle);startActivity(intent);将数据从Activity02中取出

Intentintent=getIntent();Bundlebundle=intent.getExtras();StringstuName=bundle.getString("name");3.4

Activity中的数据传递3.4.2案例——用户注册为了让初学者更好的掌握Activity中的数据传递,接下来通过用户注册的案例来演示Activity中的数据传递。3.4

Activity中的数据传递3.4.3回传数据在使用新浪微博APP时,能发现在微博发布页面进入图库选择图片后,会回到微博发布页面并带回了图片选择页面的图片信息。这个功能的实现利用了Activity回传数据。Andorid提供了一个startActivityForResult()方法,来实现回传数据。startActivityForResult()方法接收两个参数,第一个参数是Intent,第二个参数用于判断数据的来源。3.4

Activity中的数据传递3.4.4案例——装备选择接下来通过案例装备选择来演示Activity回传数据。本案例实现了购买装备增加生命值的功能。3.5本章小结本章主要讲解了Activity的相关知识,包括Activity入门、Activity启动模式、Intent使用以及Activity中的数据传递,并在讲解各个知识点时都编写了实用的案例用来巩固知识点。由于凡是有界面的Android程序都会使用到Activity,因此,要求初学者必须熟练掌握该组件的使用。第四章数据存储

文件存储XML序列化和解析SharedPreferences✎学习目标重点了解掌握文件存储SharedPreferences13数据存储的方式2XML序列化和解析

目录数据存储方式4.1文件存储

4.2XML序列化和解析4.3☞点击查看本小节知识架构SharedPreferences4.4☞点击查看本小节知识架构本章小结4.5☞点击查看本小节知识架构

知识架构4.2文件存储

返回目录4.2.1文件存储简介4.2.2案例——存储用户信息

知识架构4.3XML序列化和解析返回目录4.3.1XML序列化XML解析4.3.3案例——天气预报4.3.44.3.2案例——XML序列化

知识架构4.4SharedPreferences返回目录4.4.1SharedPreferences的使用4.4.2案例——QQ登录Android中有几种数据存储方式?4.1数据存储方式Android中的数据存储方式有五种,分别是文件存储、SharedPreferences、SQLite数据库、ContentProvider以及网络存储。4.2.1文件存储简介数据存储文件存储Sharedpreferences网络存储ContentProviderSQLite数据库4.1数据存储方式4.2文件存储4.2.1文件存储简介。文件存储是Android中最基本的一种数据存储方式,它与Java中的文件存储类似,都是通过I/O流的形式把数据原封不动的存储到文档中。Android中的文件存储分为内部存储和外部存储。内部存储指将应用程序中的数据以文件方式存储到设备的内部存储空间中(位于data/data/<packagename>/files/目录)外部存储指将文件存储到一些外部设备上(通常位于mnt/sdcard目录下,不同厂商生产的手机路径可能不同),属于永久性的存储方式。

4.2文件存储4.2.2案例——存储用户信息为了让初学者更好地掌握文件存储数据的方式,接下来通过一个存储用户信息的案例来学习。

4.3XML序列化和解析4.3.1XML序列化序列化是将对象状态转换为可保持或传输的过程。在序列化对象时,需要使用XmlSerialize序列化器,它可以将IO流中传输的对象变得像基本类型数据一样,实现数据传递的功能。序列化后的对象以XML形式保存,因此,先来看一下person.xml文件。4.3XML序列化和解析4.3.1XML序列化XML序列化的示例代码如下:

XmlSerializerserializer=Xml.newSerializer();serializer.setOutput(fileOutputStream,"utf-8");

serializer.startDocument("utf-8",ture);

serializer.startTag(null,"persons");

serializer.text("张三");

serizlizer.endTag(null,"persons");serializer.endDocument();

创建XmlSerializer对象设置文件编码方式写入XML文件标志开始节点写入内容结束节点文档结束4.3

XML序列化和解析

4.3.2案例——XML序列化为了让初学者更好的掌握XML序列化。接下来通过一个“XML序列化”的案例来演示如何将Person对象序列化为XML文件。

01将XML文件所有内容以文档树方式存放在内存中。允许使用DOM

API遍历XML树、检索所需的数据,这样便能根据树的结构以节点形式来对文件进行操作0203PULL解析SAX解析DOM解析逐行扫描XML文档,当遇到标签时触发解析处理器,采用事件处理的方式解析XML。在读取文档的同时即可对XML进行处理,不必等到文档加载结束,相对快捷。Android集成了PULL解析器,因此,常用的解析方式就是PULL解析使用PULL解析,首先要创建XmlPullParser解析器,该解析器提供了很多属性,通过这些属性可以解析出XML文件中各个节点内容。4.3

XML序列化和解析4.3.3XML解析4.3

XML序列化和解析4.3.4案例——天气预报大多数人会在手机中安装一个天气预报的软件,如墨迹天气、懒人天气等。这些软件在获取天气信息时,都是通过解析XML文件得到的。下面就通过一个案例“天气预报”来演示如何解析XML文件。4.4

SharedPreferences4.4.1SharedPreferences的使用SharedPreferences是Android平台上一个轻量级的存储类,用于存储一些应用程序的配置参数,例如用户名、密码、自定义参数的设置等。SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于“data/data/<packagename>/shared_prefs”文件夹中。

4.4

SharedPreferences4.4.1SharedPreferences的使用存储数据

SharedPreferencessp=getSharedPreferences("data",MODE_PRIVATE);Editoreditor=sp.edit();editor.putString("name","传智播客");editor.putInt("age",8);mit();取出数据

SharedPreferencessp=context.getSharedPreferences(); Stringdata=sp.getString("name","");编辑数据SharedPreferencessp=context.getSharedPreferences(); Editoreditor=sp.edit();editor.remove("name");editor.clear();mit();4.4

SharedPreferences4.4.2案例——QQ登录大多数人使用电脑第一件事基本上都是登录QQ,为了方便,大家通常会使用记住密码功能,直接点击登录按钮即可完成登录功能。在Android手机中,同样可以实现这个功能,接下来通过一个“QQ登录”的案例来演示如何使用SharedPreferences存储数据。4.5本章小结本章主要讲解了Android中的数据存储,首先介绍了Android中常见的数据存储方式,然后讲解了文件存储以及XML序列化和解析,最后讲解了SharedPreferences。数据存储是Android开发中非常重要的内容,每个应用程序基本上都会涉及到数据存储,因此要求初学者必须熟练掌握本章知识。SQLite基本操作SQLite事务操作ListView控件的使用常见的数据适配器第五章SQLite数据库

✎学习目标3SQLite数据库重点了解掌握2SQLite的事务操作

sqlite3.exe工具的使用SQLite的基本操作ListView控件的使用常见的数据适配器1

目录SQLite数据库简介5.1SQLite数据库的使用

5.2☞点击查看本小节知识架构ListView控件5.3☞点击查看本小节知识架构本章小节5.4

知识架构5.2SQLite数据库的使用返回目录5.2.1SQLite操作API5.2.3SQLite事务操作数据库的常用操作5.2.2sqlite3工具5.2.4

知识架构5.3ListView控件返回目录5.3.1ListView控件的使用5.3.3案例——Android应用市场5.3.2常用的数据适配器(Adapter)5.3.4案例——商品展示5.1

SQLite数据库简介什么是SQLite?5.1

SQLite数据库简介

是一个轻量级数据库,第一个版本诞生于2000年5月。它最初是

为嵌入式设计的,占用资源非常低,在内存中只需要占用几百KB的存储

空间。

SQLite是遵守ACID关联式的数据库管理系统。ACID是指数据库事务正确执行的基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)五种数据类型。

5.2

SQLite数据库的使用5.2.1SQLite操作APIAndroidSDK提供了一系列对数据库进行操作的类和接口。常用的数据库操作类有:

SQLiteOpenHelper类该类是一个抽象类,用于创建数据库和数据库版本更新。SQLiteDatabase类该类是一个数据库访问类,封装了一系列数据库操作的API,可以对数据进行增删改查操作。

Cursor接口是一个游标接口,在数据库操作中作为返回值,相当于结果集ResultSet。5.2

SQLite数据库的使用5.2.2数据库的常用操作AndroidSDK提供的一系列操作SQLite数据库的API。SQLiteDatabase就是其中的一个,它提供了一些列用于操作数据库的方法。insert()update()delete()query()5.2.3SQLite事务操作5.2

SQLite数据库的使用现实生活中,经常会进行转账操作,在转账的过程中,为了确保转账金额正确,会使用事务进行操作。

事务是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,如果有一条语句无法执行,那么所有语句都不会执行。也就是说,事务中的语句要么都执行,要么都不执行。转入转出银行转账操作都执行,或都不执行5.2.4sqlite3工具5.2

SQLite数据库的使用在Android开发中,使用真机测试时无法进入data目录(只有获得Root权限的手机可以进入data目录)因此也无法直接操作应用程序下的数据库。为了解决该问题,SQLite数据库为开发者提供了sqlite3.exe工具。sqlite3.exe是一个简单的SQLite数据库管理工具,位于AndroidADTEclipse中的sdk/tools目录下。

在使用该工具时,首先需要打开DOS命令行,依次输入如下命令:adbshell(挂载到linux的空间)cddata/data(进入data/data目录)cdcn.itcast.db(应用程序包名)ls

(Linxus命令列出当前文件夹下的文件)

cddatabases(进入databases文件夹)ls–l(列出当前文件夹所有文件的详细格式)sqlite3person.db(使用sqlite3操作应用程序下的数据库)select*fromperson;(利用sql语句查询person表中的信息)

5.2.4sqlite3工具5.2

SQLite数据库的使用5.3

ListView控件5.3.1ListView控件的使用在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。

<ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="match_parent"></ListView>5.3

ListView控件5.3.2常用数据适配器(Adapter)在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。

适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。

BaseAdapter即基本的适配器。它实际上就是一个抽象类,该类拥有四个抽象方法。在Android开发中,就是根据这几个抽象方法来对ListView进行数据适配的SimpleAdapterSimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法。

ArrayAdapterArrayAdapter也继承自BaseAdapter,与SimpleAdapter相同。ArrayAdapter通常用于适配TextView控件,例如Android系统中的设置菜单(Setting)。5.3

ListView控件5.3.3案例——Android应用市场前面介绍了ListView和几种常见的数据适配器,接下来通过一个案例Android应用市场来演示如何使用ListView以及如何对其进行数据适配。

5.3

ListView控件

多学一招:如何使用其他Adapter适配数据前面的案例只运用了BaseAdpater适配ListView,使用BaseAdapter适配数据需要重写其四个方法。而SimpleAdapter和ArrayAdapter只需一行代码即可适配数据。ListViewmListView=(ListView)findViewById(R.id.lv);mListView.setAdapter(newArrayAdapter<String>(this,R.layout.list_item,

R.id.tv_list),names));5.3

ListView控件5.3.4案例——商品展示

开发一个购物车,需要将购物车中的商品以列表的形式展示,并且还需要对购物车中的商品进行增删改查操作。要实现这些功能就需要使用ListView和SQLite数据库。接下来通过一个商品展示案例结合ListView和SQLite数据库来实现在界面上操作数据库。

5.4本章小结本章讲解了SQLite数据库和ListView控件的相关知识,首先简单地介绍了SQLite数据库,然后讲解了如何使用SQLite数据库以及ListView。SQLite数据库和ListView这两个知识点非常重要,在实际开发中可以实现很多功能,例如电子商城中的购物车、网易新闻客户端等。第六章内容提供者创建内容提供者访问内容提供者内容观察者的使用✎学习目标重点了解掌握创建内容提供者访问内容提供者12内容观察者的使用3

ContentProvider工作原理

目录内容提供者简介6.1创建内容提供者

6.2访问内容提供者6.3☞点击查看本小节知识架构内容观察者的使用6.4☞点击查看本小节知识架构本章小结6.5☞点击查看本小节知识架构

知识架构6.2创建内容提供者6.2.1创建一个内容提供者6.2.2Uri简介6.2.3案例——读取联系人信息返回目录6.2创建内容提供者

知识架构返回目录6.3访问内容提供者6.3.1ContentResolver的基本用法6.3.2案例——短信备份

知识架构返回目录6.4内容观察者的使用6.4.1什么是内容观察者6.4.2案例——短信窃听器6.1内容提供者简介什么是内容提供者?内容提供者(ContentProvider)是Android系统四大组件之一,用于保存和检索数据,是Android系统中不同应用程序之间共享数据的接口。ContentProvider是不同应用程序之间进行数据交换的标准API,以Uri形式对外提供数据,允许其他应用操作本应用数据。其他应用则使用ContentResolver,并根据ContentProvider提供的Uri操作指定数据。6.1内容提供者简介内容提供者简介6.2创建内容提供者6.2.1创建一个内容提供者。定义一个类继承android.content包下的ContentProvider类(抽象类)。子类需要重写它的onCreate()、delete()、getType()、insert()、query()、update()这几个抽象方法。ContentProvider是四大组件之一,必须要在清单文件中注册<providerandroid:name="cn.itcast.db.PersonDBProvider"android:authorities="cn.itcast.db.personprovider"></provider>是继承于ContentProvider类的全路径名称表示访问本provider的路径,注意这里的路径必须要唯一。6.2创建内容提供者6.2.2Uri简介ContentProvider的几个抽象方法,这几个抽象方法中有一个参数Uri,它代表了数据的操作方法。Uri是由scheme、authorites、path三部分组成。scheme:“content://”是一个标准的前缀,表明这个数据被内容提供者所

控制,它不会被修改;authorities:“cn.itcast.db.personprovider”是在清单文件中指定的android:authorities属性值,该值必须唯一,它表示了当前的内容提供者;path:“/person”代表资源(或者数据),当访问者需要操作不同数据时,这个部分是动态改变的6.2创建内容提供者

6.2.2Uri简介Uri.parse(Stringstr)方法是将字符串转化成Uri对象的。为了解析Uri对象,Android系统提供了一个辅助工具类UriMatcher用于匹配Uri。UriMatcher中的常用方法如表所示:方法名称方法说明publicUriMatcher(intcode)创建UriMatcher对象时调用,参数通常使用UriMatcher.NO_MATCH,表示路径不满足条件返回-1publicvoidaddURI(Stringauthority,Stringpath,intcode)添加一组匹配规则,authority即Uri的authoritites部分,path即Uri的path部分publicintmatch(Uriuri)匹配Uri与addURI方法相对应,匹配成功则返回addURI方法中传入的参数code的值。6

温馨提示

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

评论

0/150

提交评论