Download presentation
Presentation is loading. Please wait.
1
第13章 学院介绍 --选项卡切换效果 授课老师:高成珍 QQ号:1281147324 QQ群:287966120、314753495
网络资源:
2
本章案例效果分析
3
TabHost 控件 TabHost控件是Android应用中较为实用的控件,常用于页面的导航、切换,可以方便的在一个Activity中实现多个页面的切换。它包含两部分:托盘(TabWidget)和内容(TabContent)。 TabWidget用于显示不同的选项,例如本例中包含学院介绍、现任领导、院属信息三个选项,TabWidget根据用户需求既可以放置在页面的顶部,也可以放置在页面的底部。 每个选项用TabSpec来表示,可以为它设置标记、标题、图标以及该选项对应内容等信息,单击某个TabSpec后,会在TabContent中显示其对应的信息。TabSpec是TabHost类的一个内部类,本身不向外提供公有的构造方法,因此不能通过new关键字来实例化,需调用TabHost的newSpec()方法来创建TabSpec,然后将其添加到TabHost中。
4
TabHost 控件的使用 使用TabHost有两种方式:
在布局文件中放置TabHost控件,在Java代码中根据ID找到TabHost,然后执行相关的操作; 从系统提供的TabActivity继承而来,此时页面中会自动包含一个TabHost,通过TabActivity的getTabHost()方法可获取TabHost,然后执行相关的操作。
5
Fragment介绍 Fragment是Android3.0引入的新API,可以把它理解为Activity中的片段或者子模块。Fragment拥有自己的生命周期,也可以接受自己的输入事件。但Fragment必须被嵌入到Activity中使用,Fragment的生命周期会受它所在的Activity的生命周期的控制。例如,当Activity暂停时,该Activity内的所有Fragment都会暂停,而当Activity处于运行状态时,我们可以独立的操作每一个Fragment,例如添加、删除等。 一个Activity中可包含多个Fragment;反过来,一个Fragment也可以被多个Activity复用。 Fragment总是作为Activity界面组成的一部分。在Fragment中,可通过getActivity()方法获取它所在的Activity;在Activity中,可通过getFragmentManager()方法得到Fragment管理器,然后调用它的findFragmentById()或findFragmentByTag()方法获取Fragment。
6
Fragment的创建 与Activity类似,创建自定义的Fragment必须继承系统提供的Fragment基类或者它的子类,然后可根据需要实现它的一些方法。Fragment中的回调方法与Activity的回调方法非常类似,主要包含onAttach()、onCreate()、onCreateView()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()、onDetach()等。为了控制Fragment的显示,通常需要重写onCreateView()方法,该方法返回的View将作为该Fragment显示的View控件,当Fragment绘制界面时将会回调该方法。在该方法中,通常是通过LayoutInflater类的inflate()方法将布局文件转换成一个View对象。
7
Fragment的创建 Fragment创建完成后,还需要将其嵌入到Activity中去,将Fragment添加到Activity中有以下两种方式: 在布局文件中使用<fragment…/>标签添加Fragment,通过该标签的android:name属性指定Fragment的实现类,属性值为完整的包名+类名; 在Java代码中,通过getFragmentManager()方法获取FragmentManager对象,然后调用其beginTransaction()方法开启事务,得到FragmentTransaction对象,再调用该对象的add()方法来添加Fragment,最后调用commit()方法提交事务。
8
根据状态改变图片 在Android应用中,为了区分用户的操作,通常会根据状态来改变控件的背景或图片。实现该效果通常有两种方式:
为控件添加相应的事件处理,然后在对应的方法里通过代码来改变其背景或者图片; 定义一种特殊的XML图片,该图片会根据控件的状态而显示相应的图片。 其中第一种方式相对来说比较麻烦,并且复用性不强,如果有多个这样的控件则需单独为每个控件添加事件处理,代码较冗长;而第二种方式只需要定义一个XML图片,当控件需要使用时,直接引用即可。
9
根据状态改变图片 在Android中,定义根据状态改变显示的XML图片文件对应的根标签是<selector…/>,该元素可以包含多个<item…/>元素,其中每个<item…/>元素表示一种状态,通过Item元素可设置该状态对应的图片,Item元素主要包含以下两个属性: android:state_xxx:指定一个特定状态 android:drawable:指定该状态对应的图片 和其它XML标签一样,<selector…/>标签也有对应的Java类,该类的类名为StateListDrawable,该类中提供了一个addState(int[] stateSet, Drawable drawable)方法,该方法的功能就类似于<Item…>标签,用于指定某一或某些状态下对应的图片。
10
ActionBar实现页面导航 在Android3.0之后,新增了ActionBar,也可以很方便的实现也页面导航切换,并且使用相对比较简单。主要步骤如下: 1)通过getActionBar()方法获取ActionBar对象; 2)调用ActionBar的setNavigationMode()方法设置ActionBar的导航模式为选项卡ActionBar.NAVIGATION_MODE_TABS。 3)通过ActionBar的newTab()方法来创建一个选项对象,然后调用Tab的相关方法设置选项标题、添加选项切换监听器等内容,最后将Tab对象添加到ActionBar中去。 注意:ActionBar是Android 3.0以后才提供的新的特性,因此,需要在AndroidManifest文件中将应用程序的最低版本设置为11。
11
课后思考题 (1)改变TabHost实现页面切换效果部分 ,使得选项在顶部显示。
(2)完善ActionBar实现页面切换效果部 分,使得选中院属部门列表中的某一项 后,可以显示该部门的详细介绍信息。
Similar presentations