




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 南昌景点介绍-ListView控件应用网络资源:http:/10/case/resource.htmlQQ群:287966120、314753495授课老师:高成珍QQ号:1281147324本章案例效果分析 本案例中包含两个界面:一个是用于显示南昌各景点基本信息的主界面;一个是用于显示单个景点详细信息的界面,单击主界面中的某一项后,可以跳转到对应的详细信息界面。 在主页面中,主要包含两个控件,显示标题的TextView以及显示景点信息的ListView。在ListView中,设置了项与项之间的分割线颜色,以及分割线的大小即android:divider和android:divide
2、rHeight属性。列表中每一项又包含三项信息:景点图片、景点名、景点简介,这三项信息整体放在一个水平的线性布局中,其中又嵌套了一个垂直的线性布局,效果如下图所示。界面分析ListView控件 ListView是Android中使用非常广泛的一种控件,它以垂直列表的形式显示所有的列表项。在Android中使用ListView控件与其它控件类似,通常是在布局文件中添加ListView标签,然后在代码中根据ID获取ListView控件,然后即可为其设置数据源,显示数据等。除此在外,在Android中还专门提供了ListActivity,其内部包含了一个ListView,因此只需要让当前的Activ
3、ity从ListActivity继承即可获得一个ListView,而不需要布局文件。 获取ListView控件后,关键是为其指定数据源,但ListView本身并不能直接与需要显示的数据源关联,需要借助中介Adapter的协助,然后通过setAdapter()方法将Adapter与列表关联起来。Adapter层次结构图Adapter层次结构Adapter层次结构中比较关键的类就是BaseAdapter类,该类本身是一个抽象类,不能够实例化,开发者只需从该类继承,然后重写里面的抽象方法即可创建自定义Adapter。创建自定义Adapter必须实现如下方法。getView():返回列表中每一项显示的
4、视图,可以是一个结构复杂的布局对应的View,也可以是简单的控件如TextView;getCount():返回列表中项的个数,根据这个值循环填充列表;getItemId():返回指定项的ID;getItem():返回指定项的对象。其中getView()方法和getCount()方法最为关键,通过getCount()方法即可知道列表中一共有多少项,然后通过getCount()次循环调用getView()方法,获取每一项数据,并将每一项信息添加到ListView中即可形成包含数据的列表。SimpleAdapter SimpleAdapter是一个简单而实用的Adapter,它可以将静态的数据关联到
5、XML布局文件中的某个View控件上。通常将静态的数据保存在Map对象的集合中,一个Map对象对应列表中一项所包含的所有数据,通过Map对象中的关键字来区分。本例中一个景点包含四部分数据:景点图片、景点名称、景点简介、景点详情,因此Map对象中包含四个关键字,所有Map对象的集合即组成了整个数据源。 在Map对象中是根据关键字key来唯一确定数据项中每部分所对应的值,在布局文件中通过id来唯一确定单个控件,因此只需要将Map对象的关键字key与布局文件中的控件的id建立一一对应的关系即可保证数据的一致。SimpleAdapter public SimpleAdapter(Context con
6、text, List? extends Map data, int resource, String from, int to) 使用SimpleAdapter自定义ListView列表项时需传递5个参数: 参数1:Context对象,通常为当前的Activity对象; 参数2:List? Extends Map 集合对象,该集合中包含了列表中需要显示的所有数据,集合中有多少个元素,列表中就有多少项,每一项数据放在一个Map对象中; 参数3:int类型资源ID,表示列表中每一项对应的布局文件的ID; 参数4:String类型数组,即Map对象中部分关键字组成的数组; 参数5:int类型数组,布
7、局文件中部分控件的ID形成的数组,与参数4存在一一对应的关系,并且控件必须在参数3所指定的布局文件中。ClipDrawable图片徐徐展开 ClipDrawable表示从某个位图上截取的一个“图片片段”,通过ClipDrawable实现图片徐徐展开效果的原理是:不断重复截取同一张图片,只是每次截取的片段大小不同,最开始时截取的片段很小,然后不断增大,直到截取整个图片,给人眼的感觉就是徐徐展开。 ClipDrawable对象既可以在代码中创建,也可以在xml文件中定义。在XML文件中使用元素作为根元素,主要包含以下几个属性:android:drawable:指定需要截取的图片对象;android
8、:clipOrientation:指定截取方向:水平或者垂直;android:gravity:指定截取的对齐方式:从左到右,从右到左或者从中间向两边等。ClipDrawable图片徐徐展开 直接在代码中创建ClipDrawable对象时, ClipDrawable(Drawable drawable, int gravity, int orientation) 需要传递三个参数:第一个参数表示需要截取的图片对象;第二个参数为截取时对齐方式,从左到右还是从右到左等;第三个参数是截取的方向,水平还是垂直。 使用ClipDrawable对象截取图片时,是通过setLevel(int level)方法
9、来设置截取的区域大小,当level的值为0时,截取的区域为空;当level为10000时,截取的就是整张图片了。本例中是启动一个线程,判断是否截取了整张图片,如果没有则每隔0.3秒发送一次请求,截取图片,每次截取时,使level的值递增400。 assets与res、res/raw文件夹都用于存放资源文件,那它们之间有什么区别呢? 比较项assets文件夹res文件夹res/raw文件夹是否在R.java中生成资源标记否是是是否能任意创建子文件夹能不能不能是否会编译成二进制文件不会会不会是否完全打包到安装文件中是需判断需判断访问方式AssetManager类,通过文件流读取R.XX.XXX引用
10、,通过Resource类相应方法读取R.raw.xxx引用,通过Resource类相应方法读取 Activity是一种应用程序组件,该组件提供了一个屏幕,用户通过与这个屏幕交互可完成一定的功能,例如打电话,拍照,发送邮件或者查看地图等。 每一个Activity都提供了一个用于显示它的用户界面的窗口。这个窗口通常会充满整个屏幕,但有可能比这个屏幕更小或者是漂浮在其他窗口之上。 Activity是Android应用中重要组成部分之一,如果把一个Android应用看成是一个网站的话,那么一个Activity就相当于该网站的一个具体网页。Android应用开发的一个重要组成部分就是开发Activity
11、。 Activity概述 应用程序通常由多个彼此之间松耦合的Activity组成。通常,在一个应用程序中,有且仅有一个Activity被指定为主Activity。当应用程序第一次启动的时候,该Activity会显示给用户。 每个Activity都可以启动其它的Activity用于执行不同的操作(功能)。当一个新的Activity启动的时候,先前的那个Activity就会停止,但是系统在堆栈中仍保存该Activity。 当一个新的Activity启动时,它将会被压入栈顶,并获得用户焦点。堆栈遵循后进先出的队列原则,因此,当用户使用完当前的Activity并按Back键时,该Activity将从堆
12、栈中取出(并销毁),然后先前的Activity恢复并获取焦点。Activity概述创建和配置Activity 创建自己的Activity需要继承Activity基类,在不同的应用场景下,有时也可继承Activity的子类,例如ListActivity、TabActivity。 创建一个Activity需要实现一个或多个方法,其中最常见的就是实现onCreate(Bundle status)方法,该方法将会在Activity创建时被回调,该方法调用Activity的setContentView(View view)方法来显示要展示的View。 为了管理应用程序界面中的各个控件,可调用Activi
13、ty的findViewById(int id)方法来获取程序界面中的组件,接下来即可修改该组件的属性和方法以满足我们的需求。 Android应用要求所有应用程序组件(Activity、Service、ContentProvider、BroadcastReceiver)都必须进行注册。创建和配置Activity 为元素添加子元素即可注册Activity。注册时,主要有以下几个属性:name:指定该Activity的实现类的类名;icon:指定该Activity对应的图标;label:指定该Activity的标签。 配置Activity时通常还可以指定一个或多个元素,该元素用于指定该Activit
14、y可响应的条件。上述配置中,只有name属性是必须的,而其它属性或标签元素都是可选的。启动Activity 一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口(当该Android应用运行时将会自动启动并执行该Activity)。而应用中的其他Activity,通常都由入口Activity启动,或由入口Activity启动的Activity启动。启动其它Activity的方法如下:startActivity(Intent intent):启动其他Activity;startActivityForResult(Intent intent,int re
15、questCode):程序将会得到新启动Activity的结果(通过重写onActivityResult()方法来获取),requestCode参数代表启动Activity的请求码。这个请求码的值由开发者根据业务自行设置,用于标识请求来源。启动Activity上面两个方法,都需要传入一个Intent类型的参数,该参数是对你所需要启动的Activity的描述,既可以是一个确切的Activity类,也可以是所需要启动的Activity的一些特征,然后由系统查找符合该特征的Activity。如果有多个Activity符合该要求时,系统将会以下拉列表的形式列出所有的Activity,然后由用户选择具体启动哪一个,这些Activity既可以是本应用程序的,也可以是其他应用程序的。关闭Activity 注意:大部分情况下,不建议显式调用这些方法关闭Activity。因为Android系统会为我们管理Activ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 继电保护员工具设备点检考核试卷及答案
- 印染染化料配制工岗位工艺作业技术规程
- 印刷设备机械装调工应急演练效果评估考核试卷及答案
- 机械设备点检员岗位风险辨识与控制考核试卷及答案
- 钨钼制品烧结工投诉处理能力考核试卷及答案
- 脱硫脱硝处理工服务响应速度考核试卷及答案
- 公司网约配送员应急处置技术规程
- 公司过程控制系统点检员岗位设备技术规程
- 电动工具制造工5s考核试卷及答案
- 2025江苏南通大学招聘105人模拟试卷含答案详解
- 注销代理协议书
- 2025-2026学年高一上学期第一次月考化学试卷(福建)
- 2025年“世界粮食日”主题活动知识竞赛考试题库150题(含答案)
- LED道路照明灯具采购安装合同(含安全防护与智能化升级)
- 《童年》整本书解读与教学设计
- 卡林巴琴课件
- 甘肃工装装修施工方案
- 2025江苏省药品监督管理局审评中心招聘3人考试参考题库及答案解析
- 课堂观察记录与学生行为分析报告
- 黑龙江省齐齐哈尔市九校2025-2026学年高三上学期期初联考英语试题(含答案)
- AI技术在遗传学课程教学中的创新路径
评论
0/150
提交评论