Fragment应用实例

来源:互联网 发布:恩华三唑仑片淘宝 编辑:程序博客网 时间:2024/06/04 18:07
  • MainActivity中:
package com.example.administrator.lesson10_framework;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.RadioGroup;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {    RadioGroup tab_rg;    Fragment[] fragments = new Fragment[5];    int currIndex = -1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tab_rg = (RadioGroup) findViewById(R.id.tab_rg);        tab_rg.setOnCheckedChangeListener(this);        showFragment(2);        tab_rg.check(R.id.tab_rb_home);    }    //显示Fragment    private void showFragment(int index) {        //在ImageView的框架中使用        if (index == currIndex)            return;        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();        if (currIndex != -1) {            //隐藏上一个页面            ft.hide(fragments[currIndex]);        }        if (fragments[index] == null) {            //创建            fragments[index] = FragmentUtils.getInstance(index);            //添加进去            ft.add(R.id.fl_content, fragments[index]);        } else {            ft.show(fragments[index]);        }        ft.commit();        currIndex = index;    }    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {        View rg = tab_rg.findViewById(checkedId);//R.id.tab_rb_home;        String tag = rg.getTag().toString();        showFragment(Integer.parseInt(tag));    }}
  • 新建FragmentUtils 类:
import android.support.v4.app.Fragment;public class FragmentUtils {    //工厂模式    public static final Fragment newInstance(int type) {        switch (type) {            case 0:                return new FavorFragment();            case 1:                return new OrderFragment();            case 2:                return new HomeFragment();            case 3:                return new UCFragment();            case 4:                return new SettingFragment();        }        return null;    }    //反射方式    public static final String[] className = {"Favor", "Order", "Home", "UC", "Setting"};    public static final Fragment getInstance(int type) {        try {            //通过一个类的字符串对象,转换成一个Class 类类型            Class clasName = Class.forName("com.example.administrator.lesson10_framework." + className[type] + "Fragment");            //通过类的类型去创建实例  必须有无参构造方法 并且是公开的            return (Fragment) clasName.newInstance();        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (InstantiationException e) {            e.printStackTrace();        } catch (IllegalAccessException e) {            e.printStackTrace();        }        return null;    }}
  • 收藏FavorFragment
public class FavorFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.YELLOW);    }}
  • 订单OrderFragment
public class OrderFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.RED);    }}
  • 主页HomeFragment
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.FrameLayout;import android.widget.RadioGroup;import java.util.ArrayList;import java.util.List;public class HomeFragment extends Fragment implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), R.layout.fragment_home, null);    }    List<Fragment> mList = new ArrayList<>();    RadioGroup home_rg;    ViewPager home_vp;    View view_indicator;    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mList.add(new LvyouFragment());        mList.add(new JingdianFragment());    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        home_rg = (RadioGroup) view.findViewById(R.id.home_rg);        home_vp = (ViewPager) view.findViewById(R.id.home_vp);        view_indicator = view.findViewById(R.id.view_indicator);        //在Fragment中设置FragmentPagerAdapter必须使用Child        home_vp.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), mList));        home_rg.setOnCheckedChangeListener(this);        home_vp.addOnPageChangeListener(this);        home_rg.check(R.id.home_rb_lvyou);        initIndicator();    }    //将他做成 1半    int width;    public void initIndicator() {        width = getResources().getDisplayMetrics().widthPixels / 2;        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, ViewGroup.LayoutParams.MATCH_PARENT);        view_indicator.setLayoutParams(params);    }    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {        home_vp.setCurrentItem(checkedId == R.id.home_rb_lvyou ? 0 : 1);    }    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        Log.e("TAG", "页面:" + position + "      offset偏移百分比" + positionOffset + "     pix像素" + positionOffsetPixels);        //拿到属性        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view_indicator.getLayoutParams();        int left = (int) ((position + positionOffset) * width);        params.setMargins(left, 0, 0, 0);        view_indicator.setLayoutParams(params);    }    @Override    public void onPageSelected(int position) {        home_rg.check(position == 0 ? R.id.home_rb_lvyou : R.id.home_rb_jingdian);    }    @Override    public void onPageScrollStateChanged(int state) {    }}
  • 个人中心UCFragment
public class UCFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.BLUE);    }}
  • 设置SettingFragment
public class SettingFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.GRAY);    }}
  • 旅游度假LvyouFragment
public class LvyouFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.MAGENTA);    }}
  • 景点门票JingdianFragment
public class JingdianFragment extends Fragment {    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null);    }    @Override    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {        super.onViewCreated(view, savedInstanceState);        view.setBackgroundColor(Color.DKGRAY);    }}
  • 适配器MyFragmentPagerAdapter
import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import java.util.List;public class MyFragmentPagerAdapter extends FragmentPagerAdapter {    List<Fragment> mList;    public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {        super(fm);        this.mList = list;    }    @Override    public Fragment getItem(int position) {        return mList.get(position);    }    @Override    public int getCount() {        return mList.size();    }}
  • activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.administrator.lesson10_framework.MainActivity">    <RadioGroup        android:id="@+id/tab_rg"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:orientation="horizontal">        <RadioButton            android:tag="0"            android:id="@+id/tab_rb_favor"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:drawableTop="@drawable/tab_favor"            android:gravity="center"            android:padding="10dp"            android:text="收藏"            android:textColor="@android:color/white" />        <RadioButton            android:tag="1"            android:id="@+id/tab_rb_order"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:drawableTop="@drawable/tab_order"            android:gravity="center"            android:padding="10dp"            android:text="订单"            android:textColor="@android:color/white" />        <RadioButton            android:tag="2"            android:id="@+id/tab_rb_home"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:drawableTop="@drawable/tab_home"            android:gravity="center"            android:padding="10dp"            android:text="主页"            android:textColor="@android:color/white" />        <RadioButton            android:tag="3"            android:id="@+id/tab_rb_uc"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:drawableTop="@drawable/tab_uc"            android:gravity="center"            android:padding="10dp"            android:singleLine="true"            android:text="个人中心"            android:textColor="@android:color/white" />        <RadioButton            android:tag="4"            android:id="@+id/tab_rb_setting"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:drawableTop="@drawable/tab_setting"            android:gravity="center"            android:padding="10dp"            android:text="设置 "            android:textColor="@android:color/white" />    </RadioGroup>    <FrameLayout        android:id="@+id/fl_content"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@id/tab_rg" /></RelativeLayout>
  • fragment_home.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <RadioGroup        android:id="@+id/home_rg"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <RadioButton            android:id="@+id/home_rb_lvyou"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:gravity="center"            android:padding="10dp"            android:text="旅游度假"            android:textColor="@android:color/white" />        <RadioButton            android:id="@+id/home_rb_jingdian"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@drawable/back"            android:button="@null"            android:gravity="center"            android:padding="10dp"            android:text="景点门票 "            android:textColor="@android:color/white" />    </RadioGroup>    <!--自定义指示器 !-->    <FrameLayout        android:layout_width="match_parent"        android:layout_height="10dp">        <View            android:layout_width="match_parent"            android:layout_height="match_parent"            android:background="@android:color/darker_gray" />        <View            android:id="@+id/view_indicator"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:background="#16c742" />    </FrameLayout>    <android.support.v4.view.ViewPager        android:id="@+id/home_vp"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>
  • drawable:

    1. tab_favor:
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@mipmap/icon_favor_press" android:state_checked="true" />    <item android:drawable="@mipmap/icon_favor_normal" android:state_checked="false" /></selector>
  1. back.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@color/back_check" android:state_checked="true" />    <item android:drawable="@color/back_check_nor" android:state_checked="false" /></selector>

这里写图片描述

0 0
原创粉丝点击