Android应用基础实验指导书_第1页
Android应用基础实验指导书_第2页
Android应用基础实验指导书_第3页
Android应用基础实验指导书_第4页
Android应用基础实验指导书_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一:搭建Android平台和创建HelloWorld- 2 -实验目的- 2 -实验要求- 2 -实验内容- 2 -实验二:UI设计4实验目的4实验要求4实验内容4实验三:Intent、Activity应用12一、实验目的12二、实验要求12三、实验步骤12实验四 XML文件序列化17实验5 ContentProvider应用249.1 实验目的249.2 实验内容249.3 实验原理249.4 实验步骤25实验6 广播事件处理Broadcast Receiver2611.1 实验目的2611.2 实验内容2611.3 实验原理2611.4 实验步骤28实验7 SQLite和SQLiteD

2、atabase应用318.1 实验目的318.2 实验内容318.3 实验原理318.4 实验步骤31实验8 网络访问与服务39【实验要求】39【实验过程】39实验一:搭建Android平台和创建HelloWorld实验目的本次实验的目的是让大家熟悉搭建智能手机开发平台的过程,了解Andorid开发项目的基本文件目录结构,并实现HelloWorld小例程。实验要求1. 完成Android开发平台的搭建及相关配置2. 创建项目并熟悉文件目录结构3. 实现例程HelloWorld实验内容1、 安装Java JDK下载所需版本的JDK,点击安装到C盘Java SE Development Kit 8

3、u102You must accept the Oracle Binary Code License Agreement for Java SE to download this software.窗体顶端Accept License Agreement Decline License Agreement窗体底端Thank you for accepting the Oracle Binary Code License Agreement for Java SE; you may now download this software.Product / File DescriptionFile

4、 SizeDownloadWindows x86189.2 MBjdk-8u102-windows-i586.exeWindows x64194.68 MBjdk-8u102-windows-x64.exe二、安装Android studio 从安卓中文社区(/)下载最新版本的 安装包, 安装软件开发平台。对软件进行个性化设置。 3、 建立新项目HelloWorld步骤。4、 运行调试程序步骤。实验二:UI设计实验目的本次实验的目的是让大家熟悉Android开发中的UI设计,包括了解和熟悉常用控件的使用、界面布局和事件处理等内容。实验要求

5、1. 熟悉和掌握界面控件设计2. 了解Android界面布局3. 掌握控件的事件处理实验内容一、常用控件1.常用控件介绍Android中有许多常用控件(简单分类):文本框:TextView、EditText按钮:Button、RadioButton、RadioGroup、CheckBox、ImageButton列表:List、ExpandableListView、Spinner、AutoCompleteTextView、GridView、ImageView进度条:ProgressBar、ProgressDialog、SeekBar、RatingBar选择器:DatePicker、TimePic

6、ker菜单:Menu、ContentMenu对话框:Dialog、ProgressDialog常用的控件有文本框、按钮和列表等。2.控件的实现在上一个实验中,我们用TextView实现了在界面显示一句“Hello The Android World!”。 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);TextView textView = new TextView(this);textView.setText(Hello The Android World!);setCont

7、entView(textView);现在我们来看一看.xml文件和编码的相互关系。在HelloWorld.java中敲入如下代码:package tju.scs.android.test;import android.app.Activity;import android.os.Bundle;import android.widget.Button;import android.widget.TextView;public class HelloWorld extends Activity /* Called when the activity is first created. */ Ove

8、rride public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView = (TextView)findViewById(R.id.textView01); Button button = (Button)findViewById(R.id.button01);注意在上面并没有为textView和button设置文本内容等,另外textView的初始化代码为:TextView textVie

9、w = (TextView)findViewById(R.id.textView01);此处初始化用到了id为textView01的TextView。在项目目录中找到/res/layout/main.xml,如下: 注意上面列出了两个控件:TextView和Button,id分别为textView01和button01,它们的文本内容分别为string/hello和string/button。在项目目录中找到/res/values/strings.xml,如下: Hello The Android World! I am a button! HelloWorld可以看到两个string:hel

10、lo和button的内容分别为“Hello The Android World!”和“I am a button!”,即使文本框和按钮在界面上显示的内容,如下图所示:3.控件的属性可以直接在类中为控件设置属性,也可以在xml文件中设置属性。每个控件都有一系列的属性,例如id、size、text、color等等,大家可以找找API查看控件的属性。二、界面布局Android中有很多布局:l FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。Android屏幕元素中所有的显示对象都将会固定在屏幕的左上角,不能指定位置。但允许有多个显示对象,但后一个将会直接在前一个之上进行覆盖显

11、示,把前一个部份或全部挡住(除非后一个是透明的)。l LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。l TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。l AbsoluteLayout:允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0, 0),向下及向右,坐标值变大。这种布局管理器由于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终的显示效果不一

12、致。l RelativeLayout:允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。布局中可以放置控件,而每个布局又可以嵌套其他布局,这种思想和之前学习java的布局是一样的。例如在main.xml中如下布局: 在一个LinearLayout布局下嵌套了两个LinearLayout,出来的效果如下图所示:其他布局请大家自行尝试。三、事情处理事件监听和时间处理的概念大家以前都学习过,android中主要有如下事件方法:l onClick(View v) 一个普通的点击按钮事件 l boolean onKeyMu

13、ltiple(int keyCode,int repeatCount,KeyEvent event)用于在多个事件连续时发生,用于按键重复l boolean onKeyDown(int keyCode,KeyEvent event) 用于在按键进行按下时发生 l boolean onKeyUp(int keyCode,KeyEvent event) 用于在按键进行释放时发生l onTouchEvent(MotionEvent event)触摸屏事件,当在触摸屏上有动作时发生l boolean onKeyLongPress(int keyCode, KeyEvent event)当长时间按时发生

14、下面以点击一个Button为例子:package tju.scs.android.test;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class HelloWorld extends Activity /* Cal

15、led when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button01); button.setOnClickListener(buttonListener); private OnClickListener buttonListene

16、r = new OnClickListener()public void onClick(View v) Toast.makeText(v.getContext(), You have clicked a button!,Toast.LENGTH_LONG).show(); ;为button添加了一个监听buttonListener,对应的onClick方法则抛出了一则文本框提示用户,效果图如下所示:其他事件处理请大家自行尝试。实验三:Intent、Activity应用一、实验目的本次实验的目的是让大家熟悉Intent和Activity的使用。Intent的最常用的用途是绑定应用程序组件。In

17、tent用来在应用程序Activity间启动、停止和传输。并实现添加用户名,密码小例程。二、实验要求4. 完成Android开发平台的搭建及相关配置5. 创建项目并熟悉文件目录结构6. 实现例程添加用户名,密码实验步骤三、实验步骤项目界面:添加用户名,密码,在另一页面显示用户名。1、创建项目新建一个Android工程命名为test1,目录结构如下图:2、添加布局文件修改main.xml布局文件(这里增加了两个TextView,两个EditView,一个按钮),如下图新建test2.xml布局文件(这里增加了两个TextView),这个页面是用来显示添加的用户名,如下图:3、创建Activity

18、修改test1.java,并且新建一个Activity,一个是test2.java。,代码分别如下:Test1.java作用:获得页面输入的内容,存储并跳转到test2.xml。 Test2.java作用:从Intent中获得需要显示name的值,并给TextView赋值。4修改AndroidManifest.xml文件比较重要的一步啦,修改AndroidManifest.xml文件(将新增的Activity,test2) 注册一下,代码如下(第16行):实验四 XML文件序列化【目的】理解原始XML资源与其他使用XML文件定义资源的区别。【要求】1)创建原始XML资源;2)在程序中使用原始X

19、ML资源。【原理】Android资源管理机制,XML文件操作。【过程】1、创建工程a)Projectname:Chapter03_Resourceb)Packagename:com.example.chapter03_resourcec)Activityname:TestXmlActivityd)Applicationname:Chapter03_Resourcee)MinSDKVersion:3图1创建工程图1.原始XML资源文件的定义原始XML资源文件的定义信息通过表3.6来描述。表3.6原始XML资源文件定义和使用资源位置res/xml/test.xm(文件名称任意)原始XML文件格式使

20、用根元素子元素:子元素及属性名称任意获得XML资源的方法getResources().getXml()引用XML资源的格式Java代码中:R.xml.xml_name2.原始XML文件的使用获得原始XML文件的基本思路是,通过getResources().getXml()获得XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开始还是结尾、是某个标签的开始还是结尾,并通过一些获得属性的方法来遍历XML文件,从而访问XML文件的内容。下面的实例演示了如何访问XML文件内容,并将内容显示在一个TextView中。2.1在Chapter03_Resource工程中的r

21、esxml目录下,创建一个test.xml文件。该文件中定义了两条客户信息,属性信息有姓名、年龄、性别和E-mail地址,内容如下所示。123452.2在该工程的reslayout目录下,创建一个test_xml.xml布局文件,该布局文件中添加一个Button和一个TextView视图组件。Button用于响应单击事件访问XML内容,TextView用于显示XML内容。67101116172324图2布局显示图3.源工程代码在该工程的包中创建一个TestXmlActivity类。在该类顶部声明使用到的TextView和Button,在onCreate()方法中实例化,添加Button的单击事

22、件,获得XML内容显示在TextView中。packagecom.amaker.ch03.xml;importjava.io.IOException;importorg.xmlpull.v1.XmlPullParser;importorg.xmlpull.v1.XmlPullParserException;importandroid.app.Activity;importandroid.content.res.Resources;importandroid.content.res.XmlResourceParser;importandroid.os.Bundle;importandroid.v

23、iew.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;importcom.amaker.test.R;publicclassTestXmlActivityextendsActivityprivateTextViewmyTextView;privateButtonmyButton;OverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstance

24、State);/设置当前Activity的内容布局视图setContentView(R.layout.test_xml);/通过findViewById方法获得TextView实例myTextView=(TextView)findViewById(R.id.xmlContentTextView01);/通过findViewById方法获得Button实例myButton=(Button)findViewById(R.id.xmltTestButton01);/设置按钮的单击事件监听器myButton.setOnClickListener(newOnClickListener()Override

25、publicvoidonClick(Viewv)/定义计数器intcounter=0;/实例化StringBuilderStringBuildersb=newStringBuilder();/获得Resources实例Resourcesr=getResources();/通过Resources,获得XmlResourceParser实例XmlResourceParserxrp=r.getXml(R.xml.test);try/如果没有到文件尾继续循环while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT)/如果是开始标签if(xrp.g

26、etEventType()=XmlResourceParser.START_TAG)/获得标签名称Stringname=xrp.getName();/判断标签名称是否等于customerif(name.equals(customer)counter+;获得标签属性追加到StringBuilder中sb.append(第+counter+条客户信+n);sb.append(xrp.getAttributeValue(0)+n);sb.append(xrp.getAttributeValue(1)+n);sb.append(xrp.getAttributeValue(2)+n);sb.append

27、(xrp.getAttributeValue(3)+nn);elseif(xrp.getEventType()=XmlPullParser.END_TAG)elseif(xrp.getEventType()=XmlPullParser.TEXT)/下一个标签xrp.next();/将StringBuilder设置为TextView的文本myTextView.setText(sb.toString();catch(XmlPullParserExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace(););4.运行程序,

28、结果如下图图3结果运行显示图 附件:实验6 源码实验5 ContentProvider应用5.1 实验目的 掌握Android操作系统ContentProvider的基本概念; 掌握使用ContentProvider的实现方法。5.2 实验内容 编写工程ContentProviderTest,并进行数据插入、查询、删除等操作5.3 实验原理一般计算机所使用的操作系统大都会提供共享文件机制,让应用程序彼此间可以存储和访问文件,数据可以相互共享。Android操作系统所采用的方法是不同的,在Android操作系统中,所有应用程序的数据和文件都是属于该应用程序所私有的。但是Android操作系统通过

29、提供内容提供器(Content Providers)方法来公开数据,可以公开数据到数据内容容器内,其他应用程序经过授权可以读取。数据内容提供器的数据类型可以是图像(Image)、音频(Audio)、视频(Video)和个人通讯薄(Personal Content Information)。Content Providers 为存储和获取数据提供了统一的接口,使得在不同的应用程序之间可以共享数据。调用Content Providers可以访问这些数据库,而不用关心存储的细节。内容提供器是应用程序的一个可选的机制,它提供标准语法来读取和写入数据。实现内容提供器和实现SQLite数据库有什么不同呢?

30、应用程序实现SQLite数据库时,由应用程序直接和数据库接口,所以在应用程序中需要实现SQLite的接口db.onCreate()、db.insert ()、db.update()、db.delete()、db.query()和db.close(),而实现内容提供器时,在应用程序和数据库之间要实现一个Content Providers程序,这个Content Providers程序会直接和数据库接口,此时应用程序需要实现和Content Providers程序接口的方法。建立内容提供器的实现,要先完成以下3项工作:建立一个系统来存储数据,大部分内容提供器(Content Providers)采

31、用Android文件存储方法或以SQLite数据库来管理;继承ContentProvider类来读取数据,要读取数据的应用程序要通过ContentResolver和Cursor类来实现;在要读取数据的应用程序的AndroidManifest.XML配置文件内声明一个公开的URI。5.4 实验步骤1)编写工程ContentProviderTest。2)进入到对应的应用程序界面,如图9-1所示。图9-1 进入应用程序界面3)点击插入按钮,即向表中插入一条数据,实验结果如图9-2所示。图9-2 插入数据.cp即为我们此程序所在的包名。通过命令行的方式可以观察到,点击插入按钮之后,多出

32、了databases文件夹,进入即为我们所创建的数据库FirstProvider.db,命令.schema查看数据库中的表,其中users即为我们所创建的表名。若再点击插入按钮,可以在插入一条数据,id为自增长,如图9-3所示。图7-56 再次插入数据,id自增长4)点击查询按钮,后台输入查询信息实验6 广播事件处理Broadcast Receiver6.1 实验目的 掌握Android系统下如何自定义Broadcast Receiver来处理广播事件; 掌握Android系统下系统广播事件的使用; 掌握Android系统下Notification和NotificationManager的使用

33、;6.2 实验内容 编写程序掌握BroadCast Receiver的使用。6.3 实验原理1. Broadcast ReceiverBroadcast Receiver顾名思义是指广播接收器,他和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的点击事件),而广播事件处理机制是系统级别的。我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的时间广播来传递消息。然后在我们的应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。事件的广播比较简单,同样还是构建Intent对象,然后

34、调用sendBroadcast()方法将广播发出。事件的接受是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖其onReceive()方法,在该方法中响应事件。Android系统中定义了很多标准的Broadcast Action来响应系统广播事件。这些广播是系统自动发出的,我们直接定义事件接收器进行接收就可以使用这些系统消息了,常见的标准Action常量如表7-7所示。下面我们通过实例来看看如何接受系统发出的广播,本实例我们通过接收系统启动完成(ACTION_BOOT_COMPLETED)广播来测试系统广播时间。接收系统发的广播,我们不需要自己载定义发出广播的In

35、tent,只需要定义接收器就可以了。实例步骤说明如下。 创建一个MyReceiver类,该类继承BroadcastReceiver,fugai onReceive()显示系统启动完成广播信息package .bc;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class MyReceiver extends BroadcastReceiverOverridepu

36、blic void onReceive(Context context, Intent intent) / 显示广播信息Log.i(my_tag, BOOT_COMPLETED);System.out.println(BOOT_COMPLETED);表7-7 常见的标准Action常量常量名称常量值意义ACTION_BOOT_COMPLETEDent.action. BOOT_COMPLETED系统启动完成ACTION_TIME_CHANGEDent.action. ACTION_TIME_CHANGED时间改变ACTION_DATA_CHANGED

37、ent.action. ACTION_DATA_CHANGED日期改变ACTION_TIMEZONE_CHANGEDent.action. ACTION_TIMEZONE_CHANGED时区改变ACTION_BATTERY_LOWent.action. ACTION_BATTERY_LOW电量低ACTION_MEDIA_EJECTent.action. ACTION_MEDIA_EJECT插入或拔出外部媒体ACTION_MEDIA_BUTTONent.action. ACTION_ME

38、DIA_BUTTON按下媒体按钮ACTION_PACKAGE_ADDEDent.action. ACTION_PACKAGE_ADDED添加包ACTION_PACKAGE_REMOVEDent.action. ACTION_PACKAGE_REMOVED删除包 在AndroidManifest.xml配置文件中注册该接受器,注意这里中的属性必须是 ent.action. BOOT_COMPLETED,才能接受系统启动完成广播事件。 当我们重新启动程序,并且系统启动完成时,程序运行结果如图11-1所示。图11-1 广播程序运行结果我们既可以在AndroidManifest中注册一个广播接收器,也可以通过代码的方式来注册。当然,我们也可以注销一个广播接收器。一帮我们是在Activity.onResume()中使用Context.registerReceiver()方法来注册一个广播接收器,在Activity.onPause()中使用unregisterReceiver()方法来注销一个广播接收器。下面的代码片段显示了如何使用一个IntentFilter注册Broadcast Receiver。MyRecei

温馨提示

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

评论

0/150

提交评论