Android手机应用程序开发项目5实现打电话和发短信功能_第1页
Android手机应用程序开发项目5实现打电话和发短信功能_第2页
Android手机应用程序开发项目5实现打电话和发短信功能_第3页
Android手机应用程序开发项目5实现打电话和发短信功能_第4页
Android手机应用程序开发项目5实现打电话和发短信功能_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

Android应用程序开发工程5:实现打和发短信功能学习目标工程描述工程分析知识准备工程实现23456拓展练习目录

1学习目标知识目标:1.熟悉常用的适配器;2.理解适配器的作用;3.掌握ListView、Spinner等常用组件的用法。技能目标:1.能够学会常用组件的使用方法;2.能够利用ListView组件列表信息;3.能够根据需要自定义适配器;4.能够实现自定义适配器中组件的事件处理。工程描述本工程是通过ListView组件显示姓名和号等信息。如图1所示,在列表项中,当单击“打〞图片,那么直接进行打,如图2所示;而单击“发短信〞图片,那么进入发短信界面,如图3所示。工程分析本工程主要有两个难点,一如何显示信息;二是单击相应的图片实现动作的处理。显示信息利用ListView组件实现;实现动作处理那么就得自定义一个适配器继承BaseAdapter类,重写getCount()、getItem()、getItemId()、getView()等方法,设计事件监听器。知识准备–适配器

Android的Adapter是连接后端数据和前端显示的适配器接口。ArrayAdapterSimpleAdapterSimpleCursorAdapterBaseAdapter知识准备–适配器1.ArrrayAdapter适配器功能:简单、易用,通常用于数组或List集合的多个值包装成为多个列表项。构造方法:publicArrayAdapter(Context

context,intlayout,T[]objects)参数context:表示容器;参数layout表示:列表项对应布局文件资源的ID;参数T[]objects:表示要填充的数据内容,可以是字符串数组或List集合。知识准备–适配器2.SimpleAdapter适配器功能:将静态数据映射到XML文件中定义好的视图上。构造方法:public

SimpleAdapter

(Context

context,

List<?

extends

Map<String,

?>>data,intlayout,

String[]

from,int[]to)参数context:表示容器;参数data:表示List结构的数据源,其内部是Map对象的集合;参数layout:是视图布局文件的id值;参数from:是Map中Key键的集合;参数to:是将Map中Key键对应的Value〔值〕映射到布局文件中的组件集合,也就是layout参数对应的布局文件中显示信息组件id集合知识准备–适配器3.SimpleCursorAdapter适配器功能:与SimpleAdapter根本相似,只是将List对象换成了Cursor对象。构造方法:publicSimpleCursorAdapter(Contextcontext,intlayout,Cursorc,String[]from,int[]to);参数c:访问数据库返回的结果记录集。知识准备–适配器4.BaseAdapter适配器功能:是一个公共基类适配器,通过扩展BaseAdapter适配器可以实现对各列表项进行最大限度的定制。使用方法:通过子类继承实现,主要重写getCount()、getItem()、getItemId()、getView()等方法。getCount():用于获取适配器中子项个数。getItem():用于获取子项在适配器中工程。getItemId():用于获取子项在适配器中的位置getView():用于获取适配器中指定位置子项的视图对象。子类主要是编写该方法。

知识准备–AutoCompletedText组件AutoCompleteTextView是一种根据用户输入来给出提示信息的文本编辑框组件。当用户编辑时,组件会根据用户输入的信息,将一些建议信息以下拉列表的形式在组件下方显示,当用户选择其中一项时,就会用选项的内容自动替换编辑框内的内容,其功能就像百度的搜索框。知识准备–AutoCompletedText组件XML中常用的属性android:completionHint下拉列表下面的说明性文字。android:completionThreshold弹出下来列表的最小字符个数。android:dropDownAnchor下拉列表的锚点或挂载点。android:dropDownHorizontalOffset下拉列表距离左边的距离。android:dropDownSelector下拉列表被选中的行的背景。知识准备–AutoCompletedText组件使用步骤第一步:在main.xml中声明AutoCompleteTextView组件;第二步:创设AutoCompleteTextView组件所显示的内容数据;第三步:创立适配器;第四步:AutoCompleteTextView与适配器进行关联;第五步:事件处理。知识准备–AutoCompletedText组件实例:利用AutoCompleteTextView组件实现图5-6所示的功能。当在文本框输入字母‘C’,那么弹出相关提示信息。知识准备–AutoCompletedText组件main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="://schemas.android/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><AutoCompleteTextViewandroid:id="@+id/autoComplete"android:layout_width="fill_parent"android:layout_height="wrap_content"></AutoCompleteTextView></LinearLayout>知识准备–AutoCompletedText组件Activity主要代码:privateString[]Countries={"China","Russia","Germany","Cameroon","Ukraine","Belarus","USA","Chile","Canada","USA1"};

protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//创立ArrayAdapter适配器ArrayAdapter<String>adapter=newArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,Countries);是系统提供的布局样式//获取AutoCompleteTextView对象AutoCompleteTextViewautoComplete=(AutoCompleteTextView)this.findViewById(R.id.autoComplete);//将AutoCompleteTextView与ArrayAdapter进行绑定autoComplete.setAdapter(adapter);//设置AutoCompleteTextView输入1个字符就进行提示autoComplete.setThreshold(1);知识准备–Spinner组件功能:提供一个下拉列表将所有可选的工程列举出来,供用户选择。XML主要属性android:dropDownHorizontalOffset当android:spinnerMode="dropdown"时,下拉的工程选择窗口在水平方向相对于Spinner窗口的偏移量。它必须是一个带有单位的浮点型尺寸值。android:dropDownVerticalOffset当android:spinnerMode="dropdown"时,下拉的工程选择窗口在垂直方向相对于Spinner窗口的偏移量。这个属性它必须是一个带有单位的浮点型尺寸值。android:dropDownSelector用于设定android:spinnerMode="dropdown"时列表选择器的显示效果。android:prompt用于显示Spinner下拉列表框时的显示提示信息。android:spinnerMode设定Spinner的显示模式。dialog=0,Spinner会被作为一个对口窗口来显示。dropdown=1,Spinner会作为一个内嵌的下拉列表来显示。知识准备–Spinner组件使用步骤第一步:在main.xml中声明Spinner组件;第二步:创设Spinner组件所显示的内容数据;第三步:创立适配器;第四步:设置下拉箭头的样式;第五步:Spinner与适配器进行关联;第六步:事件处理。知识准备–Spinner组件实例:在血型对应的下拉列表框和对应的下拉列表框中选择内容,那么把选择的信息显示在相应位置。血型提供的数据是在Activity中定义数组实现,品牌数据要求在String.xml文件实现。知识准备–Spinner组件实现步骤:

1、string.xml<?xmlversion="1.0"encoding="utf-8"?><resources><string-arrayname="plantes"><item>NOKIA</item><item>MOTO</item><item>HTC</item><item>LG</item><item>其他</item></string-array></resources>知识准备–Spinner组件主要代码<TextViewandroid:id="@+id/text1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="你的血型是:"/><Spinnerandroid:id="@+id/spinner1"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/text2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="你使用什么样的:"/><Spinnerandroid:id="@+id/spinner2"android:layout_width="fill_parent"android:layout_height="wrap_content"/>知识准备–Spinner组件3.activity主要代码

//定义血型数组privateString[]blood_type={"A型","B型","O型","AB型","其他"};//定义文本框和下拉列表框组件

privateTextViewtext1,text2;privateSpinnerspinner1,spinner2;//定义ArrayAdapter适配器组件

privateArrayAdapter<String>adapter1;privateArrayAdapteradapter2;protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//获取组件text1=(TextView)findViewById(R.id.text1);text2=(TextView)findViewById(R.id.text2);spinner1=(Spinner)findViewById(R.id.spinner1);spinner2=(Spinner)findViewById(R.id.spinner2);//将可选内容与ArrayAdapter连接起来知识准备–Spinner组件3.activity主要代码adapter1=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,blood_type);//设置下拉列表的风格adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//将Adapter与Spinner进行绑定spinner1.setAdapter(adapter);//添加事件Spinner事件监听spinner1.setOnItemSelectedListener(newOnItemSelectedListener(){publicvoidonItemSelected(AdapterView<?>arg0,Viewview,intposition,longid){//把选中的血型设置给文本框text1.setText(“你的血型是:〞+blood_type[position]);}publicvoidonNothingSelected(AdapterView<?>arg0){}});

知识准备–ListView组件功能:ListView是以垂直的方式排列其内部工程的列表视图组件。ListView中的列表项可以是一串文字,也可以是包含文字和图片的用户自定义的组合项。XML主要属性android:fadingEdge="none"去掉上边和下边黑色的阴影android:divider="@drawable/list_driver"其中@drawable/list_driver是一个图片资源,为LsitView的每一项之间设置一个图片做为分间隔。如果那么只要设置为android:divider="@drawable/@null"不想显示分割线。android:divider="#00000000"设置工程之间无间隙。android:scrollbars="none"隐藏listView的滚动条。android:dividerHeight:设置数据项之间的间隔距离。android:entries:设置一个资源Id用于填充ListView的数据项。android:fadeScrollbars="true"设置为true就可以实现滚动条的自动隐藏和显示。知识准备–ListView组件常用方法ListView提供了一些方法,用于操作ListView。voidaddFooterView(Viewv):添加表尾View视图。

booleanremoveFooterView(Viewv):移除一个表尾View视图。

voidaddHeaderView(Viewv):添加一个表头View视图。

booleanremoveHeaderView(Viewv):移除一个表头View视图。

ListAdaptergetAdapter():获取当前绑定的ListAdapter适配器。

voidsetAdapter(ListAdapteradapter):设置一个ListAdapter适配器到当前ListView中。

voidsetSelection(intposotion):设定当前选中项。

long[]getCheckItemIds():获取当前选中项。知识准备–ListView组件使用步骤在使用ListView组件时,简单说有以下六步:第一步:在main.xml中声明ListView组件;第二步:编写ListView中每行对应的布局文件〔根据程序而决定〕;第三步:创设ListView选项的内容数据,并封装到集合对象中;第四步:创立适配器,使数据与布局文件进行关联;第五步:ListView与适配器进行绑定;第六步:ListView事件处理。知识准备–ListView组件实例:实现设置ListView背景颜色,其中ListView每一行由图片和文字组成,当利用方向键进行上下移动时,ListView的背景颜色就跟随变化。知识准备–ListView组件实例主要设计的文件知识准备–ListView组件string.xml<?xmlversion="1.0"encoding="utf-8"?><resources><stringname="hello">HelloWorld,ListBGActivity!</string><stringname="app_name">ListBG</string><colorname="red">#FF0000</color><colorname="greed">#00FF00</color><colorname="blue">#0000FF</color><colorname="white">#FFFFFF</color><colorname="black">#000000</color><colorname="yellow">#FFD200</color></resources>知识准备–ListView组件main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="://schemas.android/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ListViewandroid:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>知识准备–ListView组件line.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="://schemas.android/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>知识准备–ListView组件ListBGActivity.javaprivateListViewlistview;//定义颜色数组privateString[]color_name={"黑色","白色","红色","蓝色","绿色","黄色"};//将图片的id存放到数组中privateint[]imgs={R.drawable.black, R.drawable.white, R.drawable.red, R.drawable.blue, R.drawable.greed, R.drawable.yellow};知识准备–ListView组件publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//获得xml文件ListView组件listview=(ListView)this.findViewById(R.id.listview);//定义集合类对象ArrayList<HashMap<String,Object>>arrayList=newArrayList<HashMap<String,Object>>();for(inti=0;i<imgs.length;i++){//定义HashMap对象 HashMap<String,Object>map=newHashMap<String,Object>(); //把数据以key-value的形式进行存储map.put("color_name",color_name[i]); map.put("img",imgs[i]);//把HashMap对象存到ArrayList集合中 arrayList.add(map); }知识准备–ListView组件//设置适配器,与数据集合和布局文件进行关联,并设置关系映射SimpleAdapteradapter=newSimpleAdapter(this, arrayList, R.layout.color, newString[]{"img","color_name"}, newint[]{R.id.image,R.id.text});//ListView组件与SimpleAdapter进行绑定listview.setAdapter(adapter);//设置listview事件处理知识准备–ListView组件listview.setOnItemSelectedListener(newOnItemSelectedListener(){publicvoidonItemSelected(AdapterView<?>arg0,Viewview, intposition,longline3){//通过判断选中时返回的位置标记,进行业务处理switch(position){case0:listview.setBackgroundResource(R.color.black);

break;case1:listview.setBackgroundResource(R.color.white);

break; case2:listview.setBackgroundResource(R.color.red);

break;case3:listview.setBackgroundResource(R.color.blue);

break;case4:listview.setBackgroundResource(R.color.greed);

break;case5:listview.setBackgroundResource(R.color.yellow);

break;}}publicvoidonNothingSelected(AdapterView<?>arg0){

}});知识准备–ScrollView组件作用:ScrollView滚动视图可以有效地安排这些组件,浏览时可以自动的进行滚屏的操作。而ScrollView滚动视图里只能有一个组件。知识准备–ScrollView组件实例:简单实现滚动视图效果,如下图,其中命令按钮是在程序运行中添加到LinearLayout布局管理器中,通过垂直滚动,可显示更多按钮知识准备–ScrollView组件main.xml<?xmlversion="1.0"encoding="utf-8"?><ScrollViewxmlns:android="://schemas.android/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:id="@+id/mylinear"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"/></ScrollView>知识准备–ScrollView组件 publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main);//取得线性布局组件LinearLayoutlayout=(LinearLayout)this.findViewById(R.id.mylinear);//定义布局参数LinearLayout.LayoutParamsp=newLinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);//通过循环方式将数组信息以按钮进行封装for(inti=0;i<phones.length;i++){//定义按钮Buttonbtn=newButton(this);//设置按钮显示信息btn.setText(phones[i]);//在线性布局中添加组件和设置按钮的宽度和高度layout.addView(btn,p);}知识准备–HorizontalScrollView组件作用:HorizontalScrollView组件与ScrollView组件功能一样,区别在ScrollView组件支持垂直滚动,且只能包含一个组件,而HorizontalScrollView组件支持水平滚动,且支持多个组件。案例:知识准备–HorizontalScrollView组件<HorizontalScrollViewxmlns:android="://schemas.android/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/item1"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/item2"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/item3"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/item4"/>

温馨提示

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

评论

0/150

提交评论