author by afei
利用 android-support-v4 中的ViewPager可以轻松的实现跟手滑动。但是只支持 View 和 Fragment(也是利用view)。
之前也考虑过使用 ViewFliping 和 gallery ,但是都要将Activity转成View才可以。但是这样就会失去activity的特性。思来想后,还是改成Fragment靠谱点。
总体思路是这样:将本来放在TabActivity中的Activity们都改成 Fragment, 然后修改TabActivity,使其TabHost中content和width和height为0,然后把pager和tabHost关联起来。很trick。。。但是效果达到。
关键是如何修改activity至fragment,有没有这个可行性?
答案是必须应该可以的!万一有问题,也是可以商量的嘛。。。
1.将 extends Activity 改为 extends Fragment, 如果是 ListActivity 就改为 ListFragment。。。这明显就是为了修改方便啊。。。
2.一定会有XX出现,但是一定不多,fragment 的生命周期和 activity 很相似,包括onActivityResult() onStart() onPause() 等等。都有。
这里主要在onCreate()中,因为我们onCreate() 中会有 setContent(R.layout.layout_id) 恩,这里一定会报错,因为在fragment中单独抽出来了一个函数 onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState),把跟初始化view的相关代码都考到这个函数中就ok了,简单啊。将setContent 变为 inflater.inflate(R.layout.choose_accompany_layout, null) 然后return就ok。
3.最后一步,我们的代码中会有一些用到activity 和context 的地方,比如 getContentResolver() 和 其它的函数,这里只需要变为 getActivity() 就ok。因为fragment 中会和 外界的activity绑定起来。直接调用就可以。
修改完毕!!!
继承 FragmentTabsPager(代码在ChannelCommon中), 在onCreate()中调用 addTab(), 需要几个tab页就加入几次,然后这可以完美实现跟手滑动的tabActivity效果了!!!哇哈哈。
FragmentTabsPager 代码 : 继续阅读“实现跟手的TabActivity效果”