Fragment,android碎片开发的必备物品,之前一直都是cy同事的代码,从没仔细去看看,后来独立开发了,也是网上去找开源的直接套用.但天不遂人愿,产品的一个小改动,开源库却无法满足需求了!想了想,还是自己写吧.

    仔细看了文档和一些博客,才突然明白,Fragment的使用居然简单此令人发指······,开发了一年半才俯下身子学Fragment,感觉有点汗颜!

    所有的东西,都是自己写,废话不多说,上码!

    先上布局代码:

    1. <android.support.v4.view.ViewPager
    2. android:id="@+id/pager"
    3. android:layout_width="match_parent"
    4. android:layout_height="0dp"
    5. android:layout_weight="1"/>
    6. <View
    7. android:layout_width="match_parent"
    8. android:background="#000"
    9. android:layout_height="0.5dp"
    10. />
    11. <LinearLayout
    12. android:layout_width="match_parent"
    13. android:layout_height="48dp">
    14. <TextView
    15. android:id="@+id/manager_tv"
    16. android:layout_width="0dp"
    17. android:layout_weight="1"
    18. android:layout_height="48dp"
    19. android:layout_marginLeft="5dp"
    20. android:background="@null"
    21. android:gravity="center"
    22. android:text="管理"
    23. android:textColor="#3eb0ff"
    24. android:textSize="12sp"/>
    25. <View
    26. android:id="@+id/message_red"
    27. android:layout_width="0.5dp"
    28. android:background="#000"
    29. android:layout_height="match_parent"
    30. />
    31. <TextView
    32. android:id="@+id/message_tv"
    33. android:layout_width="0dp"
    34. android:layout_weight="1"
    35. android:layout_height="48dp"
    36. android:layout_marginLeft="5dp"
    37. android:background="@null"
    38. android:gravity="center"
    39. android:text="消息"
    40. android:textSize="12sp"/>
    41. </LinearLayout>

    效果图:

    Fragment的上古使用 - 图1

    到主界面中初始化控件,新建MangerFragment,代码如下:

    1. public class MangerFragment extends Fragment {
    2. protected Context mActivity;
    3. @Nullable
    4. @Override
    5. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle
    6. savedInstanceState) {
    7. return inflater.inflate(R.layout.activity_manager, container, false);
    8. }
    9. @Override
    10. public void onAttach(Context context) {
    11. this.mActivity = context;
    12. super.onAttach(context);
    13. }
    14. }

    布局文件代码和图片:

    1. <LinearLayout
    2. xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:hjm="http://schemas.android.com/apk/res-auto"
    5. xmlns:tools="http://schemas.android.com/tools"
    6. android:layout_width="match_parent"
    7. android:layout_height="match_parent"
    8. android:orientation="vertical">
    9. <TextView
    10. android:id="@+id/manager_tv"
    11. android:layout_width="match_parent"
    12. android:layout_height="match_parent"
    13. android:layout_marginLeft="5dp"
    14. android:background="@null"
    15. android:gravity="center"
    16. android:text="我是管理"
    17. android:textColor="#3eb0ff"/>
    18. </LinearLayout>

    Fragment的上古使用 - 图2
    同理新建MessageFragment!接下来就是初始化Fragment,添加到viewPager中去.

    1. private void initFragment() {
    2. list = new ArrayList<Fragment>();
    3. list.add(new MangerFragment());
    4. list.add(new MessageFragment());
    5. // 把fragment和ViewPager关联起来
    6. DataCompareFragmentAdapter adapter = new DataCompareFragmentAdapter(getSupportFragmentManager(), list);
    7. mPager.setAdapter(adapter);
    8. }``

    DataCompareFragmentAdapter:

    1. public class DataCompareFragmentAdapter extends FragmentPagerAdapter {
    2. private List<Fragment> mFragments;
    3. public DataCompareFragmentAdapter(FragmentManager fm, List<Fragment> mFragments) {
    4. super(fm);
    5. this.mFragments = mFragments;
    6. }
    7. @Override
    8. public Fragment getItem(int position) {
    9. return mFragments.get(position);
    10. }
    11. @Override
    12. public int getCount() {
    13. return mFragments.size();
    14. }
    15. }

    启动你的App,一个简单的Fragment碎片就成了!