android中ViewPager 与fragment 的一个应用

这里写图片描述

过几秒自己滑动fragment,按立即体验跳入下面的页面

这里写图片描述

这个里面还有一个ViewPager。可以滑动,上面有一个横杆,可以跟着走

App类来确定fragment之间的加载

public class App extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {

    Fragment[] fragments = new Fragment[5];
    RadioGroup rg;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app_layout);
        rg = (RadioGroup) findViewById(R.id.rg);
        rg.setOnCheckedChangeListener(this);
        showFragment(0);
        rg.check(R.id.rb1);
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.rb1:

                showFragment(0);
                break;
            case R.id.rb2:

                showFragment(1);
                break;
            case R.id.rb3:

                showFragment(2);
                break;
            case R.id.rb4:

                showFragment(3);
                break;
            case R.id.rb5:

                showFragment(4);
                break;


        }
    }

    //上一次界面上显示的哪一个Fragment
    int currIndex = -1; //代表第一次进来

    //展示Fragment
    public void showFragment(int index) {

        if (index == currIndex)
            return;
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

        if (currIndex != -1) {

            ft.hide(fragments[currIndex]);
        }

        if (fragments[index] == null) {

            createFragment(index);

          ft.add(R.id.fl_content, fragments[index]);
        } else {

            ft.show(fragments[index]);
        }
        currIndex = index;
        ft.commit();
    }

    //新建一个Fragment
    private void createFragment(int index) {
        switch (index) {
            case 0:
                fragments[0] = new CollectFragment();
                break;
            case 1:
                fragments[1] = new OrderFragment();
                break;
            case 2:
                fragments[2] = new HomePageFragment();
                break;
            case 3:
                fragments[3] = new PersonalCenterFragment();
                break;
            case 4:
                fragments[4] = new SettingFragment();
                break;
        }
    }
}

MainActivity 类

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    ViewPager vp;
    Timer timer;
    Button btn;
    LinearLayout rl;
    public void start() {
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        vp.setCurrentItem(vp.getCurrentItem() + 1);
                    }
                });

            }
        }, 3000, 2000);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp = (ViewPager) findViewById(R.id.vp);
        btn = (Button) findViewById(R.id.btn);
        vp.setAdapter(new myPagerAdapter());
        start();
        btn.setOnClickListener(this);
        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            int index;//一开始是第0页 已经被选中
            @Override
            public void onPageSelected(int position) {

                //Intent intent = new Intent(getBaseContext(), App.class);
                //startActivity(intent);
                rl.getChildAt(index).setSelected(false);
                rl.getChildAt(position).setSelected(true);
                index = position;
            }

            @Override
            public void onPageScrollStateChanged(int state) {


            }
        });

        initPiont();
    }

    private void initPiont() {
        rl = (LinearLayout) findViewById(R.id.rl);
        for (int i = 0; i <3 ; i++) {
            View v = new View(this);
            LinearLayout.LayoutParams parames = new LinearLayout.LayoutParams(20,20);
            v.setBackgroundResource(R.drawable.point_select);
            parames.setMargins(10,10,10,10);
            v.setLayoutParams(parames);
            rl.addView(v);
        }
        rl.getChildAt(0).setSelected(true);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, App.class);
        startActivity(intent);
    }

    class myPagerAdapter extends PagerAdapter {
        int[] imgId = {R.mipmap.a, R.mipmap.b, R.mipmap.c};
        List<View> viewList = new ArrayList<>();

        public myPagerAdapter() {
            for (int i = 0; i < 3; i++) {
                ImageView iv = new ImageView(getBaseContext());
                iv.setImageResource(imgId[i]);
                iv.setScaleType(ImageView.ScaleType.FIT_XY);
                viewList.add(iv);
            }
        }

        @Override
        public int getCount() {
            return viewList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(viewList.get(position));
            return viewList.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(viewList.get(position));
        }
    }
}

AttractionFragment 类,景点门票类

public class AttractionFragment 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);
    }
}

CollectFragment 类收藏界面的fragment

public class CollectFragment extends Fragment {
    @Nullable
    @Override

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        TextView tv = new TextView(getActivity());
        tv.setText("这是收藏的界面");
        tv.setTextSize(50);
        return tv;
    }


}

HomePageFragment 首页fragment的界面

public class HomePageFragment 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.home_fragment, 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 TourismFragment());
        mList.add(new AttractionFragment());

    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        home_rg = (RadioGroup) view.findViewById(R.id.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 MyFragmentAdapter(getChildFragmentManager(), mList));
        home_rg.setOnCheckedChangeListener(this);
        home_vp.addOnPageChangeListener(this);
        home_rg.check(R.id.home_rg_rb1);
        indicator();
    }

    //将他做成 1半
    int width;

    public void indicator() {
        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_rg_rb1 ? 0 : 1);

    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int 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_rg_rb1 : R.id.home_rg_rb2);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

MyFragmentAdapter 类

public class MyFragmentAdapter extends FragmentPagerAdapter {
    List<Fragment> mList;

    public MyFragmentAdapter(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();
    }
}

OrderFragment 类,订单的fragment

public class OrderFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        TextView tv = new TextView(getActivity());
        tv.setText("这是订单的界面");
        tv.setTextSize(50);
        return tv;
    }
}

PersonalCenterFragment 类 ,个人中心

public class PersonalCenterFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        TextView tv = new TextView(getActivity());
        tv.setText("这是个人中心的界面");
        tv.setTextSize(50);
        return tv;
    }
}

SettingFragment 类,设置

public class SettingFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        TextView tv = new TextView(getActivity());
        tv.setText("这是设置的界面");
        tv.setTextSize(50);
        return tv;
    }
}

TourismFragment 类,旅游度假页面

public class TourismFragment 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);
    }
}

activity_mian.xml,设置的是ViewPager

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<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.work10_1_10_20.MainActivity">

<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/vp"
    />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:layout_margin="50dp"
        android:layout_centerHorizontal="true"
        android:id="@+id/rl"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_above="@id/rl"
        android:layout_centerHorizontal="true"
        android:background="@drawable/shape1"
        android:text="立即体验 > "
        android:id="@+id/btn"
        android:textColor="@android:color/white"
        />

</RelativeLayout>

app_layout.xml

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/rg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#004E89"
        android:gravity="center"

        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/rb1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
                android:drawableTop="@drawable/favor"
            android:button="@null"
            android:gravity="center"
            android:text="收藏" />

        <View
            android:layout_width="1dp"
            android:layout_height="50dp"
            android:background="#171717" />


        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/order"
            android:button="@null"
            android:gravity="center"
            android:text="订单" />

        <View
            android:layout_width="1dp"
            android:layout_height="50dp"
            android:background="#171717" />

        <RadioButton
            android:id="@+id/rb3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/home"
            android:button="@null"
            android:gravity="center"
            android:text="首页" />

        <View
            android:layout_width="1dp"
            android:layout_height="50dp"
            android:background="#171717" />

        <RadioButton
            android:id="@+id/rb4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/uc"
            android:button="@null"
            android:gravity="center"
            android:text="个人中心" />

        <View
            android:layout_width="1dp"
            android:layout_height="50dp"
            android:background="#171717" />

        <RadioButton
            android:id="@+id/rb5"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawableTop="@drawable/setting"
            android:button="@null"
            android:gravity="center"
            android:text="设置" />


    </RadioGroup>

    <FrameLayout
        android:id="@+id/fl_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/rg" />

</RelativeLayout>

home_fragment.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/rg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:orientation="horizontal">

        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:id="@+id/home_rg_rb1"
            android:background="@drawable/back"
            android:textColor="@android:color/white"
            android:padding="10dp"
            android:gravity="center"
            android:text="旅游度假" />

        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/back"
            android:id="@+id/home_rg_rb2"
            android:button="@null"
            android:textColor="@android:color/white"
            android:padding="10dp"
            android:gravity="center"
            android:text="景点门票" />
    </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:layout_width="match_parent"
        android:id="@+id/home_vp"
        android:layout_height="wrap_content"/>
</LinearLayout>

colors的配置

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="back_check">#1b207c</color>
    <color name="back_check_nor">#80437be2</color>

</resources>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值