Android开发-Fragment学习笔记(3)
(一)前言
本博客所有Demo来源于腾讯网课点击打开链接,供自己学习复习使用,侵删。
在前面两篇博客中已经接触到了Fragment以及Fragment的一些小的应用,接下来便是步入正轨:实现Android导航栏功能。但是开始这篇博客之间,还需要提前了解另外一个控件-ViewPager
(二)ViewPager
2.1ViewPager简介
ViewPager是可以左右滑动的控件,需要PagerAdapter配合使用,由v4包提供,类全名: android.support.v4.view.ViewPager,实现的功能:页面可以左右滑动从而改变页面内容。
(三)导航栏的代码实现:
本篇博客一共有三个Demo,第一个和第二个Demo实现了导航栏功能,第三个Demo模拟了一个App的欢迎界面(其实也类似于导航栏)
3.1 FragmentDemo1
3.1.1界面功能展示
3.1.2代码实现
我们可以看到,进行切换的一共有三个页面(红,黄,绿),所以我们在layout中添加了三个布局
同时创建三个Fragment分别关联三个布局
接下来便是设计主界面,首先放置一个ViewPager,值得注意的是ViewPager来自于android.support.v4包中,在进行调用的时必须写出完整的报名,而导航栏这里选择用同在一个包中的PagerTapStrip
新建一个Activity继承与FragmentActivity(来自于与ViewPager同样的包:Android.support.v4)
实现init()函数,实现控件的初始化工作
由于ViewPager需要使用对应的适配器进行数据的填充,我们重写一个子类MyPagerAdapter继承于FragmentPagerAdapter
我们需要重写的是其下面的四个方法,需要完成的代码部分都比较简单
然后在OnCreate方法中调用init()方法,给ViewPager设置适配器MyPagerAdapter
至此第一个Demo完成代码部分的编写,但是我们在运行的时候会发现,其PagerStripTap在滑动的过程中跟随着Fragment发生着变化,于是乎在Demo2中便想将其变成固定的部分,当Fragment切换到时候会产生颜色的变换效果但是位置并不发生改变,同时我们仍然可以通过点击导航栏更改其页面内容。
3.2 FragmentDemo2
3.2.1页面功能展示
3.2.2代码实现
我们首先将原有的PagerStripTap删除掉,加入三个TextView作为导航栏,并且选择了TextView作为导航栏与Fragment的分割线
这里我们将一些重复的属性写进了Style文件当中实现了代码的复用,减少了工作量,这样布局文件就算完成了。
这一部分Demo的代码有很大一部分与Demo1的代码相似,同样都需要实现继承与父类PagerAdapter的子类MyAdapter,需要重写的方法也大致相同
因为我们导航栏是由自己实现的,而不是用包中提供的控件,所以不同还是体现在控件的初始化方法中,我们希望页面在切换的时候,由TextView组成的导航栏也能够做出相应的变化,这肯定需要用到监听函数监听页面的变化,而ViewPager也正好为我们提供了我们需要的方法;同时我们还需要通过点击导航栏能够更改页面内容,那么对于导航栏中的每一个TextView我们都应该实现对应的点击监听函数
最后一步同样是重写OnCreate方法,将activity与布局相关联,初始化控件以及为PagerAdapter设置适配器。
3.3 FragmentDemo3
3.3.1页面功能展示
我们在Demo3中将实现App常见的欢迎页功能,页面的最下方有小圆点标识当前所在的位置,我们可以通过滑动也可以通过点击小圆点更改当前页面
3.3.2 代码实现
首先完成布局文件,小圆点所使用的控件是ImageView
值得注意的是我们在完成布局时候还用到了XML文件dot
这样可以根据状态实现其对应图标的动态更改
同样该demo的activity继承与FragmentActivity,与之前的Demo有很多相同的东西,甚至可以由Demo2的代码复制粘贴,将Demo2 的TextView更改为Demo3的ImageView,因此该部分的代码我便没有添加注释。
(四)总结
本篇博客一共讲了三个最简单的Fragment以及ViewPager的综合应用,主要是为了了解与加深自己对Fragment使用的熟悉程度,而真正的应用中所需要考虑的情况远远不止文中提到的,作为初学者,打算先将Fragment的知识告下一个段落,接下来的学习打算了解Android中最常见的控件之一-ListView的使用方法