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()这种最常用,很简单的。
- Android Fragment学习笔记
- android fragment学习笔记
- 学习笔记 android fragment
- android Fragment 学习笔记
- Fragment 学习笔记
- Fragment学习笔记
- Android学习笔记 - fragment
- Fragment学习笔记
- viewpager+fragment学习笔记
- Fragment学习笔记
- Fragment的学习笔记
- Fragment学习笔记
- 温故知新-Fragment学习笔记
- Fragment学习笔记
- Android学习笔记 Fragment
- Fragment 学习笔记
- Fragment学习笔记
- Fragment学习笔记
- poj 1904 King's Quest 【建模 求解SCC】
- 【学习日记】集合框架知识点总结(1)--Collection
- struts2(1)
- CQL IN 语法的应用方法
- Unity3D笔记第六天——脚本常用核心类
- Fragment学习笔记
- HDU 1710 Binary Tree Traversals
- 第二周
- MySQL BLOB 类型介绍
- curl 使用详解
- Jmeter实现webservice协议的脚本
- 斯大林帝国的杀手锏与俄罗斯复兴的真正大王牌
- Android SQLiteOpenHelper onUpgrade使用注意事项
- 内存泄露检测工具——LeakCanary