fragment滑动+viewpager

本文介绍了一个Android应用的具体布局实现方式,包括使用PullToRefreshScrollView实现下拉刷新功能,通过ViewPager展示不同的Fragment,并实现了Fragment之间的平滑切换及底部导航栏的联动效果。

//页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".GoodsActivity"
    android:orientation="vertical"
    >

<com.handmark.pulltorefresh.library.PullToRefreshScrollView
        android:id="@+id/goods_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:orientation="vertical"
        >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="240dp">

            <android.support.v4.view.ViewPager
                android:id="@+id/goods_viewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#0f0"
                >

            </android.support.v4.view.ViewPager>

            <LinearLayout
                android:id="@+id/goods_line"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_alignParentBottom="true"
                android:background="#ff5656"
                android:gravity="center"
                android:orientation="horizontal">

            </LinearLayout>

        </RelativeLayout>




    </LinearLayout>


    <bwei.com.day_0524_yuekaol_lianxi.MyListView
        android:id="@+id/goods_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></bwei.com.day_0524_yuekaol_lianxi.MyListView>
</LinearLayout>

</com.handmark.pulltorefresh.library.PullToRefreshScrollView>

</LinearLayout>


//java代码





public class ShowActivity extends AppCompatActivity implements View.OnClickListener {

    private ViewPager viewpager;
    private RadioGroup radio;
    private TextView shangpin;
    private TextView tuijian;
    private DrawerLayout dar;

    //创建一个装fragment的容器
    private List<Fragment> fs = new ArrayList<>();
    private ShouYeFragment shouye;
    private FenLeiFragment fenlei;
    private WoDeFragment wode;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);

        //初始化页面
        initViews();

        initFragments();


    }


    public void initFragments() {

        shouye = new ShouYeFragment();
        fenlei = new FenLeiFragment();
        wode = new WoDeFragment();

        fs.add(shouye);
        fs.add(fenlei);
        fs.add(wode);

        //穿那个键适配器
        MyFragment mf = new MyFragment(getSupportFragmentManager(), fs);
        viewpager.setAdapter(mf);

        //设置viewpager的滑动监听事件
        viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                switch (position) {

                    case 0:
                        radio.check(R.id.shouye);
                        break;
                    case 1:
                        radio.check(R.id.fenlei);
                        break;
                    case 2:
                        radio.check(R.id.wode);
                        break;
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }

    private void initViews() {

        viewpager = findViewById(R.id.main_viewpager);
        radio = findViewById(R.id.main_radio);
        shangpin = findViewById(R.id.shangpin);
        tuijian = findViewById(R.id.tuijian);
        dar = findViewById(R.id.main_dar);

        //点击商品跳转
        shangpin.setOnClickListener(this);
        //点击推荐吐司
        tuijian.setOnClickListener(this);

//默认展示第一页面
        radio.check(R.id.shouye);

        radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                switch (checkedId) {

                    case R.id.shouye:
                        viewpager.setCurrentItem(0);
                        break;

                    case R.id.fenlei:
                        viewpager.setCurrentItem(1);
                        break;

                    case R.id.wode:
                        viewpager.setCurrentItem(2);
                        break;
                }


            }
        });


    }


    //点击事件

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.tuijian:
                Toast.makeText(ShowActivity.this, "推荐", Toast.LENGTH_SHORT).show();
                break;
//点击商品跳转
            case R.id.shangpin:
                Intent it = new Intent(ShowActivity.this,GoodsActivity.class);
             startActivity(it);
                break;

        }
        ;

    }


}


//适配器



public class MyFragment extends FragmentPagerAdapter {


    private List<Fragment> fs;

    public MyFragment(FragmentManager fm, List<Fragment> fs) {
        super(fm);
        this.fs = fs;
    }

    @Override
    public Fragment getItem(int position) {
        return fs.get(position);
    }

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


}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值