Fragment学习笔记

来源:互联网 发布:linux cpuinfo 编辑:程序博客网 时间:2024/06/08 07:32

还是从CSDN大神那里直接借用的代码,学习中。。。。

今天介绍了两种仿微信界面的方式

1.第一个是使用Fragment

代码

原理:

1.布局文件:

1.1title_bar.xml,直接一个TextView,设置高度50sp即可。

1.2.bottom_bar.xml,一个RelativeLayout包裹着一个LinearLayout,后者包裹着4个LineLayout,分别取ID。

这四个LineLayout分别包含一个ImageButton和一个TextView,

1.3.四个main_tab_01.xml这样的布局文件,用于Fragment的inflate方法,这四个文件都include了titile_bar.xml。

1.4.fragment_main.xml,一个空的FragmentLayout(预留ID),include了bottom_bar.xml。

所以整体看来,主界面就是一个带着bottom_bar的FrameLayout,看上去长这样。


之后在主代码里动态添加的Fragment由于是inflate自main_tab_01.xml(包含了title_bar),通俗的说,上面这张图是底版,每次往上面添加一个带title的Fragment。


2.java主代码

2.1四个MainTab02.java代码,用于根据上面的布局文件inflate出一个继承自Fragment的Tab,其实也能算作Fragment了。

2.2主代码FragmentMainActivity,包含四个LinearLayout,一个FragmentManager,四个Fragment作为成员变量

在onCreate方法里面,找到这四个LinearLayout并绑定监听器,根据监听器OnClick获得的id,定义一个方法,该方法参数为int。

该方法先把所有图标设置为未点击(resetTabs),同时隐藏所有的Fragments,根据传入的position ID选择图片状态,生成一个FragmentTransaction,然后用Transaction添加Fragment(也就是bottom_bar以上的位置)。




第二种,Fragment+ViewPager的方式

代码

1.xml文件

和上面一个的区别就是把上面那种图空白位置换成了一个ViewPager。代码中根据选择的页面position,动态改变四个图标的被选中状态。


2.其实就是简单的ViewPager的使用,成员变量:四个LinearLayout,外加一个ViewPager,一个List<Fragment>,一个FragmentPagerAdapter,

老生常谈了。

在onCreate方法里面,先initView添加Fragment到Arraylist里面,然后n

ew一个FragmentPagerAdapter的实例,复写方法(list相关)。

然后setAdapter,ViewPager绑定监听器(onPageChangedListener)主要就是onPageSelected的复写,这里强调每次都要resetTabs一下,好习惯。

这里面还是要强调一下,程序的主体还是通过FragmentPagerAdapter控制上半部分,getItem()方法。

左右滑动更改下部,只是ViewPager的OnPageChangerListener提供的一种功能。

OnPageChangerListener其实也是一个public static interface,接口的意义,提前封装好了一些对外部指令(函数参数),并提供一些可以个性化的方法,

程序的可扩展性大大提高。。。

基本上我就只会复述到这个程度了,感谢原作者,原帖地址

最后,关于Fragment,看这段代码

private FragmentManager fragmentManager;fragmentManager = getFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.add(R.id.id_content, mTab01);transaction.show(mTab01);transaction.commit();
上下没有什么关系,只是把Fragment的一些方法给拎出来,add()和show()这种最常用,很简单的。

0 0
原创粉丝点击