




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android Studio移动应用开发基础第1章 Android概述1.1 Android是什么?1.2 Android应用程序的组成1.3 Android的发展历史1.4 Android应用开发环境概述1.1 Android是什么?Android是一个平台,它包括:基础系统、开发工具和完整的文档;Android平台是一个通用的计算平台,它采用Linux为其支撑操作系统,以Java作为其开发环境,实现了完整的电话、视频、网络、界面设计等基础功能;Android平台的体系结构如图所示;不管Android的层次怎样复杂,你只要掌握Java语言,就可以在Android平台上开发自己的APP!1.2
2、 Android应用程序的组成任何一个应用程序都会包括如下一些基本的内容:应用程序的界面、业务功能的处理、部件之间的数据交互、数据存储,如此而已,Android应用程序也不例外,只是被赋予了不同的名称;Activity:一个界面就是一个Activity;View:组件;Intent:Android应用程序界面之间及功能部件之间实现信息交互的桥梁;Content Provider:内容提供者;Service:运行于后台的程序;广播接收器:广播接收器;AndroidManifest.xml:Android应用程序的配置文件。1.3 Android的发展历史1.4 Android应用开发环境概述An
3、droid平台采用Java语言作为应用程序开发语言;Android开发环境包括如下基本内容:Java基本包、Android基础组件、Android UI组件、Android服务组件、Android电话和媒体服务组件、Android仿真器(AVD,Android Virtual Device)、Android调试器等;还有众多的第三方功能包。第2章 建立Android应用开发环境2.1 下载和安装Android Studio2.2 开发第一个Android应用程序2.2.1 创建Hello World程序工程2.2.2 运行Hello World程序2.3 本章同步练习一2.4 Android应
4、用程序的结构2.1 下载和安装Android Studio在下载和安装Android Studio之前,你需要下载和安装Java SDK;从Android的开发网站下载Android Studio;运行下载得到的文件即可安装Android Studio开发环境;2.2 开发第一个Android应用程序启动Android Studio启动完毕,点击第一个功能选项“Start a new Android Studio project”即可创建一个新的Android应用程序工程;在“Application name”中,输入你的应用程序的名字,在“Company domain”中输入你的公司的域名(
5、可以是假想的域名),在“Project location”中输入应用程序文件存放的位置,之后点击“Next”按钮;选择应用程序运行的目标机,目前我们直接点击“Next”即可;选择“Blank Activity”,点击“Next”按钮;点击“Finish”按钮, Android Studio将创建一个新的Android App工程,Android Studio需要一些时间来创建工程文件;Android Studio已经成功创建了名称为“First”的Android APP工程!为了测试你的Android应用程序,你可以直接在你的Android真机上测试,也可以在Android SDK自带的模拟器
6、上测试。我们首先在Android模拟器上测试;为了配置一个Android模拟器,在Android Studio开发环境中的工具栏点击“AVD manager”按钮;在显示的界面点击“Create Virtual Device”按钮;选择“Phone”及“3.7 FWVGA slider”,然后点击“Next”按钮;界面中选择“Other Images”和“Jelly Bean”的Android影像;点击“Next”,点击“Finish”即完成了模拟器的配置;为了能够在模拟器上运行你的程序,你需要启动之:在界面中点击三角形按钮,即可启动刚才所配置的模拟器;你可以测试你的“Hello World”
7、程序了。为此,在Android Studio界面启动应用程序按钮;第一个Hello World程序正常运行!2.3 本章同步练习一建立你的Android开发环境,然后编写你的第一个Hello Android程序,运行之,并观察程序的结构。同时,熟悉Android Studio开发环境的各个功能的使用;2.4 Android应用程序的结构manifests目录下的AndroidManife.xml文件;java目录;res目录;第3章 剖析Android应用程序3.1 AndroidManifest.xml3.2 MainActivity.javaActivity介绍3.3 Android程序资
8、源3.4 本章同步练习一3.1 AndroidManifest.xmlAndroidManifest.xml文件非常重要的配置文件,在Android应用运行时,Android平台将首先读取这个文件并进行分析,然后再启动特定的Activity来运行;xml;manifest;package;application;activity;intent-filter;3.2 MainActivity.javaActivity介绍在启动Android应用程序时,Android平台将首先读取AndroidManifest.xml文件,从中获得入口Activity的相关信息,并启动入口Activity运行;在
9、Android Studio开发环境中查看MainActivity.java文件;当Android平台启动MainActivity运行时,它将首先调用它的onCreate( )方法,注意,Android要求,你必须首先调用父类的onCreate( )方法,然后,你可以做一些自己的初始化工作;调用setContentView(R.layout.activity_main)来显示Activity的主界面;对于MainActivity.java中的其他方法你现在可以完全不用理会;在Android Studio中打开activity_main.xml文件并查看代码;采用CoordinatorLayou
10、t布局管理器对组件的布局进行管理;android:layout_width=“match_parent”;android:layout_height=“match_parent”;包含一个称为AppBarLayout的可视组件;在这个AppBarLayout组件的下面,显示另一个布局文件的内容;语句:setContentView(R.layout.main)的作用就是:将资源R.layout.activity_main所指定的界面显示在MainActivity的主窗口中;在Android应用程序中,可以直接使用字符串常量在需要的任何地方,就像我们在TextView组件中使用的那样。但是,And
11、roid不建议这么做,Android建议:将字符串常量放置到res/values/stirngs.xml资源文件中进行集中管理;Android应用程序 = Java程序代码文件 + 资源文件 + AndroidManifest.xml3.3 Android程序资源Android程序资源在Android应用程序中起着十分重要的作用:Android程序资源或者是一个文件,例如布局资源,或者是一个值,例如字符串常量定;将应用程序的资源与应用程序代码分离的好处是:你可以直接改变资源的值,而不用修改或编译应用程序代码本身!在Android应用程序中,会用到各种各样的资源,包括:字符串资源、图片资源、界面
12、布局资源、动画资源等,下面对常用的资源类型的定义和使用进行简单的介绍。字符串资源:Android建议,将字符串常量统一定义到一个或多个xml资源文件中;用于定义字符串常量的xml文件必须放置到res/values工程目录下,而文件名则可以根据需要自行定义;在Java程序代码中,使用:R.string.app_name访问到由app_name定义的字符串;而在资源配置xml文件中,则使用:string/app_name来访问由app_name定义的字符串;布局资源:通过XML方式来构建程序界面的文件称为布局资源文件,或称为layout resource;Android规定,所有的布局资源文件必须
13、放置在res/layout工程目录下;使用语句:setContentView(R.layout.activity_main);来显示界面布局;ID资源:就像我们给字符串资源、布局资源一个唯一的标示符一样,我们也可以给布局资源中的各个组件分配一个唯一的ID。在给布局资源中的组件分配一个唯一的ID后,我们就可以在程序代码中引用这些组件;TextView tv = (TextView)this.findViewById(R.id.tv02);tv.setText(欢迎进入Android开发阵营);图片资源:为了程序的可用性和美观性,在程序中一般我们都会用到图片来装饰界面;Android将图片也定义为
14、资源,它将每个图片资源作为文件放置在res/ mipmap(或者res/drawable)工程目录下;对于图片资源文件,可以使任何目前支持的图片文件,包括:.jpg文件、.png文件、.bmp文件;可以在需要使用图片的任何地方使用图片资源;3.4 本章同步练习一编写一个Android应用程序,并可以显示一张你自己认为漂亮的图片,并以文本的形式介绍图片的内容;从Android的帮助文档中找出Android平台定义所有的图片资源,并在你的程序中显示其中任意一张图片第4章 深入分析Activity4.1 Activity的生命周期4.2 Activity生命周期示例4.3 使用Log类输出程序调试信
15、息4.4 Android常见Activity4.4 本章同步练习一4.1 Activity的生命周期Activity是Android的重要组成部分,它代表的是Android应用程序的界面;如果你打开我们之前的编写的例子Hello World这个Android程序的MainActivity.java这个Activity代码,你会发现其中并没有main( )函数;需要我们理解程序生命周期的概念;Android应用程序的Activity界面,它也是有生命周期的;当Android系统要启动一个应用程序的Activity时,例如,某个Android应用程序的入口Activity时,它将首先调用该Acti
16、vity的onCreate( )方法,之后调用该Activity的onStart( )方法,再之后调用Activity的onResume( )方法,在调用了onResume( )方法之后,该Activity已经所表示的界面显示在屏幕上了,此时,用户可以与该Activity进行交互。4.2 Activity生命周期示例修改MainActivity.java程序来观察一下Activity生命周期的变迁;为了观察程序显示的信息,打开Android Studio的Android Monitor视图:点击Android Studio右下方标签:4.3 使用Log类输出程序调试信息Android建议的方法
17、使用android.util.Log类的方法来显示信息;4.4 Android常见Activity4.4 本章同步练习一编写一个简单的程序,将Activity生命周期方法的调用过程写入到一个文件中,以便你能够更加方便查看Activity的生命周期过程。第5章 Android常用UI组件5.1 使用基于XML的布局5.2 Android基本组件5.3 Android容器组件5.4 本章同步练习二5.5 AdapterView5.6 Android其他常用组件5.7 本章同步练习三5.1 使用基于XML的布局Android建议采用将程序界面与程序业务逻辑分离的方式来进行程序设计;Android的使
18、用XML来布局界面;当点击按钮时,在按钮上显示当前的日期时间;如何来响应对按钮的点击呢?通过实现View.OnClickListener来达到这个目的;在这个接口中,只有一个方法:onClick(View v),它表示当指定的组件被点击时的具体响应;5.2 Android基本组件Android基本组件包括:Button、TextView、ImageView、EditText、CheckBox、RadioButton;Button组件的常用布局属性包括:android:text、android:textColor、android:textSize、android:textStyle、androi
19、d:typeface、android:id、android:background、android:clickable、android:visibility、android:padding、android:paddingTop、android:paddingBottom、android:paddingLeft、android:paddingRight、android:gravity等;TextView组建:TextView类似其他GUI的Label,用于显示一个字符串,显示在TextView中的字符串是不可编辑的;ImageView组件:ImageView组件用于显示一幅图片;ImageView
20、常用XML配置属性包括:android:maxHeight、android:maxWidth、android:scaleType、android:src、android:contentDescription;EditText组件:EditText是可编辑的文本组件,与TextView组件类似,只是提供了编辑功能,它的XML配置属性都是从TextView及View中继承来的,如下的几个XML配置属性可能有用:android:autoText、android:captalize、android:digits、android:singleLine、android:hint、android:input
21、Type;CheckBox组件:CheckBox组件就是在其他GUI组件我们常用的“复选框”,它继承了TextView和View组件的XML属性。该组件的常用方法:isChecked( )、setChecked(Boolean checked)、toggle( );RadioButton组件:RadioButton就是我们在其他GUI中使用单选按钮。一般情况下,我们总是将RadioButton与RadioGroup结合使用:使得在一组RadioButton中只有一个可以被选中;通过RadioGroup我们控制RadioButton的选中状态。常用的RadioGroup的方法:check(int
22、 rb)、clearCheck( )、getCheckedRadioButtonId( )本章同步练习一编写一个简单的Android程序,程序主界面上显示一个按钮,点击这个按钮,在这个按钮上一适合中国人阅读习惯的方式显示日期和时间。例如,显示日期时间的格式应该是:2015年-05月-05日 10:30:17。5.3 Android容器组件Android容器组件,也就是在其中放置其他组件并可以对放置在其中的组件进行布局的Android组件。常用的Android容器组件包括:LinearLayout、RelativeLayout、FrameLayout、ScrollView;LinearLayou
23、t是线性布局组件,放置在其中的组件要么按列、要么按行的方式进行顺序布局,LinearLayout的常用XML配置属性:android:orientation、android:gravity、其他从View中继承来的属性,包括android:backgroud、android:visibility;对于布局在LinearLayout中的组件,LinearLayout也提供如下这些XML配置属性,用以告知LinearLayout如何放置这些组件:android:layout_width、android:layout_height、android:layout_gravity、android:lay
24、out_weight、android:layout_margin、android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft、android:layout_marginRightRelativeLayout,顾名思义,就是相对布局:一个组件相对于另一个组件的位置来布局组件。例如,将组件A布局在组件B的右下方。RelativeLayout为布局在其中的组件提供了非常多的布局属性:FrameLayout以层叠的方式的布局组件:每次只能显示其中一个。这有点类似扑克牌,你只能看到最上面的那张。FrameL
25、ayout为布局在其中的组件提供了一个XML配置属性:android:layout_gravity,通过这个属性,布局在FrameLayout中的组件可以指定自己在容器中的重心位置;ScrollView也是一个容器,它是FrameLayout的子类,它的主要作用是可以包括多于屏幕可以显示的内容,ScrollView将提供垂直滚动,进而可将超出物理屏幕的内容显示出来。一般情况下,可以将一个采用垂直方式布局组件的LinearLayout作为ScrollLayout容器的子组件,同时,在LinearLayout容器中可以显示多于屏幕物理高度的内容。5.4 本章同步练习二编写一个简单的计算器程序,只需
26、完成基本的加、减、乘、除运算即可。要求:界面布局美观、绚丽。可作为课后作业;5.5 AdapterView在Android应用开发中,AdapterView是一类非常重要的和常用的组件。我们常见的以列表的形式显示信息的组件就是AdapterView的子类,称为ListView,还有我们经常以网格形式浏览照片缩略图的组件也是AdapterView类的子类,称为GridView,还有以下拉列表形式显示可选项的组件也是AdapterView类的子类,称为Spinner等等,它们都是AdapterView的子类;在程序中要使用ListView显示信息,你必须做如下的工作:(1)在你的界面布局中包含一个
27、ListView组件;(2)对在列表中显示的列表项进行布局;(3)设计及一个实现了Adapter接口的类,用于为ListView组件提供要显示的数据。AdapterAdapterView是如何与Adapter交互来完成信息显示功能的呢?AdapterView显示数据的处理逻辑如下:(1)当AdapterView要显示一项数据时,例如,对于ListView而言,就是当ListView要显示一行数据时,它首先会调用Adapter的getView()方法,并传递一个要显示的数据的位置参数;(2)Adapter根据这个位置参数从Data中获得指定的数据,并根据R.layout.childView的布局
28、样式将数据填入到样式布局中,然后,将这个构建好的View返回给AdapterView;(3)AdapterView将这个返回的View作为子View显示在控件中。Adapter接口定义的方法及其含义ListView:ListView以垂直的方式显示数据列表,并且,当要显示的数据多于屏幕高度时,可以以垂直滚动的方式显示其余数据;可以通过布局列表项来美化ListView的显示效果;ListView可以监听OnItemClickListener事件,从而实现对列表项点击事件的处理;Spinner就是我们熟悉的下拉列表框。与ListView类似,你也必须为Spinner对象指定一个Adapter;通过
29、布局下拉列表项,可以使下拉列表更为美观;GridView以二维表格的方式显示数据,若数据比较多,该组件将提供垂直滚动条;5.6 Android其他常用组件5.7 本章同步练习三自我学习:编写一个程序,可以使用WebView组件浏览网页。关于WebView组件的使用方法可以参考Android的帮助文档。第6章 样式和主题6.1 样式入门6.2 定义样式6.3 应用样式6.4 使用Android平台已定义的样式和主题6.5 Android应用程序的主题样式结构分析6.6 本章同步练习一在进行程序的界面设计时,我们经常需要对界面及界面上的组件设置统一的显示外观,例如,界面的背景颜色、使用的字体大小、
30、字体颜色、组件的显示大小、内填充、外填充、是否显示标题栏等等,你仍然可以为每个组件设置自己的显示属性,但是,为了便于对外观的统一管理,我们需要将这些外观设置集中起来。Android是通过样式,也就是Style来完成这个工作的。要在Android中使用样式来定制外观,需要做两个方面的工作:定义样式;将定义好的样式应用到界面中。6.1 样式入门在res/values工程目录下创建一个样式xml文件,并在其中定义样式;样式定义的例子:可将定义好的样式应用到组件、Activity乃至Application中:6.2 定义样式为了定义一个样式,你需要在res/values工程目录下新建一个XML文件,当
31、然,你也可以在现有的某个文件;定义样式的一般格式如下:在样式定义中parent=“父样式名称”,这意味着样式定义是支持继承的,也就是我们常说的级联样式,同时,样式定义中的parent属性是可选的;可以在Java程序中使用“R.style.定义样式名称”来访问所定义的样式,也可以在XML文件中使用“style/自定义样式名称”来访问;6.3 应用样式一旦我们完成样式定义后,我们就可以将定义好的样式应用到需要的地方:可以将样式应用到某个组件,也可以将样式应用某个Activity或整个Application;将定义好的样式应用到某个组件是一件非常简单的工作:在组件的配置中,添加“style”XML配
32、置属性即可;将样式应用到某个Activity或整个Application:6.4 使用Android平台已定义的样式和主题Android平台已经定义了一系列的风格和主题供应用程序使用,在所有定义的样式中,以Theme开头的样式是主题样式,其他的不是以Theme开头的则是普通样式;Android完整的样式定义可参考android.R.style类;要使用Android已定义的样式或主题,需要将样式或主题名中的下划线“_”替换为小数点“.”;6.5 Android应用程序的主题样式结构分析当你在Android Studio中新建一个Android工程时,Android已经为你制定了默认的主题;6.
33、6 本章同步练习一Android平台中预定义了很多主题样式,请将表6-1所示的主题样式应用到你的一个例子程序中,观察一下每个主题样式的外观。第7章 理解和使用Intent7.1 Intent应用入门7.2 细说Intent7.3 Intent解析7.4 获得Activity返回的结果7.5 Intent的综合应用举例7.6 本章同步练习二7.7 广播消息和广播接收器7.8 本章同步练习三在基于HTML的页面程序中,我们使用“超链接”来实现页面之间的跳转。之前我们也提到过,Android应用程序界面是由一个到多个Activity组成的,一个Activity相当于HTML的一个页面,那么,当一个A
34、ndroid应用程序具有多个有相互联系的Activity时,它们之间如何实现跳转呢?这就是通过使用我们在这里将要介绍的Intent来实现的;Intent的作用还不止于实现Activity之间的跳转,它还是Android平台的各个部分之间实现信息沟通的桥梁。7.1 Intent应用入门通过一个简单的例子来说明什么是Intent及Intent的基本应用;这个例子程序的目标是这样的:该程序首先显示一个Activity,在这个Activity上使用一个TextView显示一个图片的名字及一个Button按钮,点击这个Button,则在一个新的Activity中显示一张图片。本章同步练习一编写与例子相似
35、的、能通过Intent打开新的Activity的程序。例如,你可以通过点击一张图片来显示一个文本框,用来介绍该图片的一些基本情况。7.2 细说IntentAndroid的Intent对象是联系各个Activity的关键对象。Intent,翻译成中文就是“意图”,我们可以这样来理解Intent:通过Intent对象,我们告诉Android我们要做什么;显式Intent:在Intent中,我们明确的告诉Android我们要启动的Activity;还有一种Intent叫做隐式Intent:在Intent指定一些条件,由Android系统根据这些条件来启动最能满足条件的Activity;Intent与
36、Intent-FilterIntent的action:可以为我们自己创建的Activity定义一个用于打开这个Activity的action,这个action是一个字符串常量,你可以任意定义,但是,Android建议的做法是,在命名action时,采用“Java包名+特定串”的形式来命名action;在Intent类中已经预定义了一些常用的action;为了指明一个Intent的action,有两种方式:(1)通过Intent类的构造函数new Intent(String action)及new Intent(String action, URI uri)。(2)通过Intent类的setAc
37、tion(String action)函数;同时,为了指明一个Activity可以被哪个或哪些action打开,需要在AndroidManifest.xml文件中,使用标签来说明;Intent的data:在通过隐式Intent打开Activity时,除了指明Activity的action外,我们经常还指明Activity所支持的data;通过Intent的data指明要操作的数据,Android的data也是通过URI来指明的;为了指明某个Activity的data属性,需要在AndroidManifest.xml文件中,在Activity的配置的子标签中通过data标签指定;Intent的c
38、ategory:是Android对Activity进行分类的一种手段;Android已经在Intent类中定义了一些category常量,常用的category包括:Intent.CATEGORY_DEFAULT、Intent.CATEGORY_LAUNCHER、Intent.CATEGORY_INFO、Intent.CATEGORY_HOME、Intent.CATEGORY_PREFERENCE、Intent.CATEGORY_CAR_ DOCK、Intent.CATEGORY_CAR_MODE、Intent.CATEGORY_APP_MARKET等;Intent的extra:extra只作
39、为传递给目标Activity的附加数据,不作为挑选Activity的匹配依据;extra是key/value形式的数据,其中的key是String类型的“键”,而value可以是Java基本数据类型或实现了android.os.Parcelable接口的对象数据类型;7.3 Intent解析Intent对象与是密切相关的:在通过Intent对象来启动某个Activity时,必须对Intent对象中所设定的属性,包括,action、data和category与中所配置的属性进行匹配,从而打开能够匹配的Activity;7.4 获得Activity返回的结果为了获得被打开Activity返回的结果
40、,应该使用startActivityForResult()方法;通过startActivityForResult( )启动的Activity时,当被启动的Activity执行完毕时,Android平台将调用源Activity的onActivityResult( )方法;public void startActivityForResult(Intent intent, int requestCode);protected void onActivityResult(int requestCode, int resultCode, Intent data);7.5 Intent的综合应用举例7.6
41、 本章同步练习二继续7.5中所介绍的例子,完善这个例子,要求:(1)将显示在按钮右边的字体调大些,以便与左边的按钮大小匹配;(2)编写你自己的一个Activity,作为7.5的界面中的一项功能能够启动它运行,同时,该Activity将返回一些数据给主Activity。主Activity能够显示返回的信息。7.7 广播消息和广播接收器Android提供了两种可广播消息,即普通消息和有序消息;使用sendBroadcast(Intent intent)和sendBroadcast(Intent intent, String receiverPermission)方法来发送普通广播消息;要接收sen
42、dBroadcast发送的消息,接收者必须继承BroadcastReceiver类,且需要实现其中的onRecive(Content context, Intent intent)方法;需要在AndroidManifest.xml文件中注册该消息接收器(称这种注册方式为静态注册);或者在Java代码中注册消息接受者(称这种注册为动态注册);接收Android平台的广播消息7.8 本章同步练习三编写一个消息接收器程序,该程序既可以接收你自己的程序发送的普通广播消息,也可以接收Android平台的发送的Intent.ACTION_POWER_CONNECTED消息。并设计界面测试你的程序。第8章
43、菜单和Toolbar8.1 菜单8.2 ActionBar和Toolbar8.3 本章同步练习一菜单是一种常见的应用程序操作模式,在早期的Android设备上,提供了专门用于开启菜单的功能按钮,但是,从Android 3.0开始,Android已经不再要求设备制造商提供这个功能按钮,而代之以称为ActionBar或Toolbar的应用程序组件,这个组件在运行时出现在应用程序的最上方。虽然如此,ActionBar及Toolbar组件的构造仍是基本Android的菜单Menu组件进行的。8.1 菜单通过Android Studio构建的基本程序的界面中,会显示一个菜单弹出按钮;在res/menu下
44、定义XML菜单文件;通过onCreateOptionsMenu这个方法显示菜单;8.2 ActionBar和Toolbar其中框住的部分称为ActionBar或Toolbar。Android建议使用Toolbar组件来作为菜单及程序标题的组件;Toolbar组件是ViewGroup的子类,这说明,在Toolbar中你可以嵌套任何Android的其他组件;8.3 本章同步练习一探究练习:Toolbar可以作为独立使用。现在构建一个简单的Toolbar练习程序,在Toolbar中显示两个按钮用于切换在界面上显示不同的图片:“上一个”按钮显示上一张图片,“下一张”按钮显示下一张图片,同时,在菜单上也
45、实现了同样的功能,并将菜单显示在Toolbar上。第9章 动画9.1 View动画之补间动画基础9.2 本章同步练习一9.3 View动画之帧动画Android支持两种种类型的动画:属性动画和View动画。View动画又分为补间动画(Tween动画)和帧动画(Frame动画或AnimationDrawable动画)。动画的基本原理就是将组件的某个属性或整个组件的显示状态在一个特定的时间内从一个值或状态变化到一个新的值或状态;9.1 View动画之补间动画基础补间动画供包括4中动画形式:旋转动画、缩放动画、透明度动画和移位动画,标签分别为rotate、scale、alpha和translate;
46、定义的补间动画的文件必须放置在res/anim工程目录下,文件名称可以是任何合法的名称;在程序中引用动画资源时,采用R.anim.filename的方式来引用,在XML文件中采用package:anim/filename的方式来引用动画资源;定义rotate动画定义scale动画定义alpha透明度动画定义translate移位动画定义复合set动画使用动画监听器可以使用动画Animation.AnimationListener监听器接口来监听动画执行的各个阶段9.2 本章同步练习一编写一个简单的动画程序,这个程序在程序启动时首先执行一个开启动画,在动画执行完成后再显示应用程序的主界面。例如,
47、你可以在启动程序时在一个ImageView上执行一个动画,在动画执行完毕时显示程序主界面;9.3 View动画之帧动画帧动画就是按一定的时间顺序的显示一组预定义的图片;采用XML定义帧动画时,需要将定义文件放置在res/drawable工程目下;在XML或在Java程序中应用帧动画资源的与引用一般图片资源的形式是一样的,你可以在任何可以使用drawable资源的地方使用帧动画资源;第10章 多媒体播放10.1 使用MediaPlayer播放音频10.2 本章同步练习一10.3 播放视频10.4 本章同步练习二Android的多媒体框架提供了播放音频、视频及图像的相关手段。通过该框架,你可以处理
48、来自资源文件、手机本地存储系统、甚至来自于网络的多媒体内容。Android的多媒体框架中最重要和常用的类无疑就是MediaPlayer,通过MediaPlayer对象,程序可以获取、解码和播放包括音频和视频在内的多媒体资源;所播放的媒体内容可以来自程序资源(放置在res/raw目录下,因为Android不会对放置这个目录下的资源进行任何处理,所以,放置在这个目录下的文件将保持原样)、来自本地文件或来自网络等。10.1 使用MediaPlayer播放音频为播放简短的音频,MediaPlayer提供了几个静态的create方法用于创建MediaPlayer对象;create(Context con
49、text, int resId)用于播放存放在res/raw资源目录下的音频资源,而create(Context context, Uri uri)可以播放来自任何Uri的音频。对于需要播放简短的音效音频,我们建议将音频文件存放在资源目录中,也就是在res/raw目录下;10.2 本章同步练习一将10.1.2的例子加载到你的开发环境中,运行之,并做如下修正:(1)使界面更加美观;(2)在列表中只显示能够播放的音频文件和子目录。(3)按下手机上的返回键显示当前目录的上一级目录的内容。10.3 播放视频使用MediaPlayer来播放视频,当然要播放视频需要需要创建一个用于显示视频的Surface
50、;我们不准备介绍Surface,而是使用Android的便利组件VideoView来播放视频;看一个剧吐的例子;10.4 本章同步练习二修改10.2同步练习一的程序,使之既可以播放音频也可以播放视频。提示:判断文件为视频后,在一个新的Activity中使用VideoView播放视频;第11章 保存程序数据11.1 使用SharedPreferences保存程序数据11.2 本章同步练习一11.3 设置程序首选项11.4 本章同步练习二11.5 在程序目录下存储程序数据11.6 本章同步练习三11.7 访问外部存储器11.1 使用SharedPreferences保存程序数据SharedPref
51、erences提供了一个基本框架;通过使用SharedPreferences,你可以非常方便地将程序运行数据保存下来;为了得到一个SharedPreferences对象,你只需在Activity中,调用getSharedPreferences(String name, int mode)或getPreferences(int mode)函数;其中的name参数是你指定的用于保存数据的文件的文件名,mode参数设为0即可;看一个具体的例子;11.2 本章同步练习一完善11.1节的例子,做如下修改:当用户点击“登录”按钮时,不仅在SharedPreferences保存用户输入的用户名和密码,同时还
52、保存用户登录的日期时间。当用户下次再次运行程序,不仅将上次输入的用户名和密码自动填入到相应输入框中,还通过一个Toast显示上次登录的日期时间。完成程序后,运行程序,并使用DDMS视图,观察应用程序的安装目录下文件的变化和文件结构。11.3 设置程序首选项Android应用程序通常会包括一些设置以便用户可以改变程序的运行特征;为了使你的Android应用程序与Android自带的“系统设置”应用有一致的外观,Android提供了一个称为Preference的API;常用的Preference的组件包括: (1)CheckBoxPreference 显示一个复选框用于设置某个特性是否使能或不使能
53、; (2)ListPreference 显示一个列表框,并在列表框中显示一组单选按钮,用于选择某个特征; (3)EditTextPreference 显示一个输入框,用于输入某个值;看一个具体的例子;11.4 本章同步练习二将11.3节中的例子复制到你的开发环境中并运行之,观察程序的运行效果,并做如下修改:在首选项界面中,添加一项新的选项设置,用于设置动画的执行时间。提示:在获得动画对象后,使用setDuration函数来设置动画执行的时间;同时,对于动画执行时间这个选项,只有在执行动画时才有效,因此,你还需要使用android:dependency首选项属性来配置这个首选项的依赖。11.5
54、在程序目录下存储程序数据任何一个Android应用程序,在被安装到Android系统中时,系统都将在/data/data目录下,以这个应用程序的包名为名称为这个应用程序创建一个唯一的子目录,你可以在这个子目录下创建只有你的程序才可以访问的子目录或文件;Activity提供了如下的用于操作应用程序私有目录的方法;File Activity.getFilesDir( );File getDir(String name,int mode);boolean deleteFile(String name);String fileList( );FileOutputStream openFileOutpu
55、t(String name, int mode);FileInputStream openFileInput(String name);11.6 本章同步练习三编写一个简单的Android应用程序,观察11.5节中所介绍的各个文件访问方法的功能。提示:你可以简单的输出相关信息即可。11.7 访问外部存储器对于配备了外部SD卡的Android设备,可以使用Android提供的一个工具类Environment来检查外部SD卡的状态及获得SD卡上特定子目录;使用Environment的getExternalStorageState( )函数获得SD卡的状态;使用Environment的getExte
56、rnalStoragePublicDirectory(String type)方法可以获得SD卡上特定子目录的File对象;11.8 使用SQLite数据库保存程序数据SQLite是一个开源的、免费的数据库管理系统。与一般的基于C/S模式的数据库管理系统不同,例如Microsoft SQL Server,MySQL,这些基于C/S模式的数据库管理系统,数据库存储在称为服务器的计算机系统上,并通过数据库管理系统的服务器端程序来管理,需要使用数据库数据的程序,称为客户端程序,通过某种通信协议,例如TCP/IP与数据库管理系统的服务器端程序进行通信来进行数据库数据的操作。SQLite则全然不同,它不
57、是基于C/S模式的,它只是一个C语言程序包(C函数库),需要使用SQLite数据库的程序只需调用这个程序包中的函数即可创建数据库、访问数据库中的数据等;在Android系统中,Android整合了SQLite数据库管理系统,将SQLite的C语言程序包进行了Java封装,提供了基于Java语言的类库;SQLite数据类型:(1)TEXT 字符串类型;(2)NUMBERIC 精确表示的数值类型;(3)INTEGER 整数类型;(4)REAL类型 采用8字节表示的IEEE浮点数据类型,与NUMBERIC不同,这个数据类型可能会有数据精度损失;(5)BLOB类型 二进制数据类型在Android中使用
58、SQLite数据库;看一个例子我们要创建的数据库名称为“Teach.db”,其中包含三张表:student表、course表和score表,其中分别存放学生的基本信息、课程的基本信息和学生成绩的基本信息;第12章 使用后台任务12.1 使用Java线程执行后台任务12.2 本章同步练习一12.3 使用AsyncTask执行后台任务12.4 使用Service完成后台任务12.5 本章同步练习三在Android系统中,Activity运行在称为UI线程的主线程中,并且系统对Activity的响应时间有严格的要求:也就是对每个用户操作的响应时长不能超过规定的时间长度,否则系统将出现异常,也将导致用
59、户使用体验的严重下降。因此,在Android系统中,对于需要较长时间执行的功能都应该放在后台进行。不仅如此,Android也要求对于需要较长时间或执行时间不确定的功能,例如网络通信等都必须放在后台线程执行;12.1 使用Java线程执行后台任务对于一些需要较长时间执行的程序任务,我们完全可以使用Java的线程机制,也就是Thread类来执行这些任务;一个简单的例子:显示一个简单的时钟;看一个例子;12.2 本章同步练习一将12.1节中的程序复制到你的开发环境中,并做如下修改:每到一个整点,例如早上8:00、晚上10:00,系统自动播放一段简短的音乐。提示:每到一个整点,启动一个后台线程来播放音
60、乐;12.3 使用AsyncTask执行后台任务在Android程序中执行后台任务是一个普遍的要求,因此,Android为了便于实现后台任务,提供了AsyncTask工具类。使用AsyncTask,可以使应用程序在后台执行任务,并将任务的运行状态或结果显示在UI主界面线程中;需要重写AsyncTask的4个方法;protected void onPreExecute( );protected Result doInBackground (Params. params);protected void onProgressUpdate (Progress. values);protected vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020-2024年上海市春考语文试题汇编含答案
- 陕西安全b证考试试卷及答案
- 沙区7年级英语试卷及答案
- 纺织品技术创新与产业发展考核试卷
- 糖果与巧克力企业产品创新与市场开拓考核试卷
- 羽绒制品市场动态监测考核试卷
- 灌溉系统在农业水资源调配中的作用考核试卷
- 广播影视设备国内外贸易咨询批发考核试卷
- 网络安全防护体系建设与实施考核试卷
- 粮油产业现状与发展趋势考核试卷
- PA66ROHS无卤sgs报告环保报告
- 《送元二使安西》优秀课件
- 中国与俄罗斯渔业合作的潜力分析
- 2023年广东省高中学生化学竞赛试题与标准答案正式题(word可编辑版)
- 五年级心理健康教育课件-欣赏自己 全国通用(共19张PPT)
- 汽车轮胎教案
- 公司应急组织体系
- 局部解剖学:第八章 血 管
- 电子政务与电子商务的关系探讨
- 厨师菜品考核评分表201921
- 人工湿地设计方案综述
评论
0/150
提交评论