ViewPager的高级使用,以及在viewPager中添加点击事件绑定下面的按钮
1、动态加载碎片(Fragment)的最佳写法,代替普通的replace操作。
2、viewPager的侧滑关联按钮,形成整体关联效果
第一部分:动态加载碎片的最好写法
我们运用碎片的attach和detach方法来实现加载碎片,这样提高程序的运行效率。
大致思路如下:这里有个关键的因素就是FragmentManager,首先是先创建FragmentManager,然后在FragmentManager中将碎片的视图View显示出来。根据这个过程,我们先用FragmentManager判断在布局中的是否有碎片,如果为空才能进行attach和detach的操作,如果为空,我们就可以向其中添加碎片,如果不为空,我们将该碎片detach操作给弄掉;实例代码:
前面的操作保证了在FragmentManager中不存在碎片的情况下,我们在往里面添加碎片。实现代码如下:
这里在向里面添加碎片的同时要注意,如果碎片本身存在的话,就不需要进行add的操作了,因为add的操作本来就是重新创建了一次碎片的过程,那么,我们要重复里利用内存中的碎片资源,就首先判定如果碎片本身存在的话,就向Fragment中进行attach操作,如果为空的话,我们就直接进行add操作,添加碎片。最后不要忘记了提交事物;commit()。这就是加载碎片的最优写法。在这个过程中,我们如果要将点击事件和碎片的加载关联的话,可以另写一个doViewSelect()方法,该方法的作用是碎片提交过后,该按钮是图的显示和碎片的加载达到同步的效果:实现代码如下:
代码的思路是对于一组tab性质的按钮,我们选择其一的话,别的按钮就不能被选择,而且还设置了选择器的功能实现。遍历整个副布局中的子元素,然后将获取到子元素后将对其进行判断和选择。这样就实现了碎片加载和按钮的成功绑定。可以看出来,当我们对一组同样式样的控件进行处理的时候,通常会把它们放在同一个布局当中,便于操作和管理,还可以通过方法对它们和相关的显示绑定起来,达到很好的视觉效果。
第二部分:将ViewPager和按钮进行绑定来对ViewPager进行监听。
用ViewPager实现碎片的左右滑动效果,同时和前面一样,同样可以对这些左右滑动用按钮来绑定:实现的功能如下,用按钮来选择可以实现对碎片的加载,用侧滑也可以对碎片进行加载,这两种加载方式显示出来的效果相互绑定。这里要注意的是导入包的问题,选择v4包中的Fragment,否则会报错。
实现ViewPager侧滑相对容易,选择FragementPagerAdapter这个适配器,关键是如何将图标和碎片的加载顺序进行绑定。首先确定按钮可以加载碎片,这里是在switch和case语句中用viewPager的setCurrentItem()的方法来实现的,该方法主要显示当前是为哪一个碎片,同时用前面的doViewSelect()方法对按钮进行集体显示控制。这里只完成了按钮可以加载,但是我们点击Fragment的碎片视图时候,也可以实现对按钮的加载控制,对viewPager进行监听后,在监听时候的再一次回调doViewSelect方法,这就完成了碎片和控制按钮的耦合。
下面是代码的演示:
下面是自定义适配器,在项目中可以把适配器进行单独的封装,可以分成一个单独的包进行管理。
下面是主界面的布局文件,包含一个ViewPager和一个含有四个TextView的LinerLayout;