使用Fragment实现的滑动组件ViewPager

原创 2016年08月29日 10:16:07

1适配器FragmentPagerAdapter的实现

对于FragmentPagerAdapter的派生类,只需要重写getItem(int)和getCount()就可以了。

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
    private List<Fragment> list;  
    public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {  
        super(fm);  
        this.list = list;
    }
    //返回了当前要滑动的View的个数  
    @Override  
    public int getCount() {  
        return list.size();  
    }  
    //在getItem(int arg0)中,根据传来的参数arg0,来返回当前要显示的fragment
    @Override  
    public Fragment getItem(int arg0) {  
        return list.get(arg0);  
    }
}

2两个Fragment类

OrderFragment.java
public class OrderFragment extends Fragment {
    //在onCreateView()中返回要显示的View
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view= inflater.inflate(R.layout.fragment_order, container, false);
        //View中控件的操作方法
        refresh = view.findViewById(R.id.order_count_refresh);
        refresh.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //操作逻辑
                countStatus();
            }
        });
        return view;
    }
}
fragment_order.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:background="#ffffff"
    android:orientation="vertical" >

    <Button android:id="@+id/fragment1_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="show toast"
        />
</LinearLayout>
MeFragment.java
public class MeFragment extends Fragment {
    //在onCreateView()中返回要显示的View
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view= inflater.inflate(R.layout.fragment_me, container, false);
        //View中控件的操作方法
        login = view.findViewById(R.id.me_login);
        login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MeFragment.this.getActivity(),
                        LoginActivity.class));
            }
        });
        return view;
    }
}
fragment_me.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:background="#ffff00"
    android:orientation="vertical" >


</LinearLayout>

3主activity实现

public class MainActivity extends FragmentActivity {
    private ViewPager mPager;
    private List<Fragment> fragmentList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPager = (ViewPager) findViewById(R.id.viewpager);
        //初始化fragment
        List<Fragment> fragmentList=new ArrayList<Fragment>();
        fragmentList.add(new OrderFragment());
        fragmentList.add(new MeFragment());
        FragAdapter adapter = new FragAdapter(getSupportFragmentManager(), fragments);

        //给ViewPager设置适配器
        mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList));
        mPager.setCurrentItem(0);// 设置当前显示标签页为第一页
        //MyOnPageChangeListener()是页面变化监听器
        mPager.setOnPageChangeListener(new MyOnPageChangeListener());
        radioGroup = (RadioGroup) findViewById(R.id.main_tab);
        //给radioGroup设置监听器
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if(checkedId == R.id.tab_me){
                    mPager.setCurrentItem(INDEX_ME);
                }else if(checkedId == R.id.tab_shoujian){
                    mPager.setCurrentItem(INDEX_SHOUJIAN);
                }
            }
        });
    }
    //实现页面变化监听器OnPageChangeListener
    public class MyOnPageChangeListener implements OnPageChangeListener {
        @Override
        //当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法会一直得到调用。
        /** 
           * arg0:当前页面,及你点击滑动的页面
           * arg1:当前页面偏移的百分比
           *arg2:当前页面偏移的像素位置
           */
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub
        }

        @Override 
        //当页面状态改变的时候调用
          /** 
           * arg0 
           *  1:表示正在滑动 
           *  2:表示滑动完毕 
           *  0:表示什么都没做,就是停在那 
           */  
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub
        }

        @Override
        //页面跳转完后调用此方法
        /** 
         * arg0是页面跳转完后得到的页面的Position(位置编号)。   
         */  
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub
            switch (arg0) {
            case INDEX_ME:
                radioGroup.check(R.id.tab_me);
                break;
            case INDEX_SHOUJIAN:
                radioGroup.check(R.id.tab_shoujian);
                break;
            }
        }
    }

}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>  
  <RelativeLayout  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">  

  <android.support.v4.view.ViewPager  
        android:id="@+id/viewpager"
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent"  
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_marginBottom="60dip"
        android:flipInterval="30"  
        android:persistentDrawingCache="animation"/> 

    <RadioGroup  
        android:id="@+id/main_tab"  
        android:orientation="horizontal"  
        android:layout_width="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_height="60dip">  

        <RadioButton
            style="@style/main_tab"
            android:id="@+id/tab_shoujian" 
            <!--图片在文字的上面-->
            android:drawableTop="@drawable/tab_shoujian_selector"
            android:layout_height="match_parent"
            android:checked="true" 
            android:text="****" /> 
        <RadioButton
            style="@style/main_tab" 
            android:id="@+id/tab_me"      
            android:drawableTop="@drawable/tab_me_selector"
            android:layout_height="match_parent"  
            android:text="*" />  
    </RadioGroup>  
</RelativeLayout> 

不用ViewPager和Fragment实现滑动页面的效果

这是一篇被逼出来的文章。 一入SDK深似海,从此jar包是路人,没错,你以为我愿意不用ViewPager和Fragment啊,因为SDK为了减少包体大小不能用v4的包啊!坑爹的v4包居然有1M多,你...
  • amurocrash
  • amurocrash
  • 2016年11月04日 11:10
  • 1060

ViewPager + Fragment实现滑动标签页

activity_main.xml
  • lizhenmingdirk
  • lizhenmingdirk
  • 2013年10月30日 18:13
  • 153313

结合Tab,ViewPager,Fragment实现简单分页滑动

在APP设计当中,使用ViewPager和Fragment来实现分页滑动并不少见,该设计可以利用少量的空间来实现多内容的展示。效果图如下: 一下是实现该功能的代码:MainActivitypub...
  • u010429311
  • u010429311
  • 2016年04月06日 11:13
  • 1349

ViewPager+Fragment(滑动+点击)

在viewpager内包含了多个fragment,也就是我们说的滑动的页面,这里我只用了两个页面的滑动,借用一张大神的界面分析图。 一、布局文件 1、main_common_layout.xm...
  • HYeeee
  • HYeeee
  • 2017年08月24日 19:27
  • 487

ViewPager 详解(五)-----使用Fragment实现ViewPager滑动

前言:前几篇yy
  • harvic880925
  • harvic880925
  • 2014年08月18日 15:03
  • 95778

Fragment加Viewpager的使用小结

对之前做的一些东西进行小结。希望下次能够更加熟悉
  • u013234555
  • u013234555
  • 2016年05月04日 21:59
  • 504

viewPager+fragment实现循环滚动

主要有两个思路:      1、viewPager的适配器 getCount() 方法返回Integer.max;  getItem() 方法 返回 list.get(position%list.s...
  • ylj15503473366
  • ylj15503473366
  • 2016年03月10日 12:02
  • 1668

Android导航中Fragment里实现ViewPager滑动和RadioButton单击事件

一、首先写好XML导航页布局,没有布局,怎么看效果,俗话说的好:有图有真相! 1、导航页布局,代码中RadioButton中有2自定义选择器,点击换图和点击文字变色 ...
  • Android53_CSDN
  • Android53_CSDN
  • 2016年08月20日 10:56
  • 905

利用ViewPager+Fragment+actionbar实现可左右滑动的Action Tab

1. ViewPager要点: ViewPager 是一个布局管理类(layout manager),用于提供页面的左右滑动功能,类似于ListView,也有为ViewPager提供    ...
  • tangxuankai
  • tangxuankai
  • 2014年05月23日 23:45
  • 24528

使用ViewPager和Fragment实现底部导航滑动重构版

感谢刘大神写的项目,参考自点击这里,本文对其进行了简单重构,写下思路,供自己以后思考。自定义view设置每个页面的子itemlayout_tab_item.xml,每个item由一个ImageView...
  • yyg204731
  • yyg204731
  • 2016年04月23日 12:29
  • 8126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Fragment实现的滑动组件ViewPager
举报原因:
原因补充:

(最多只允许输入30个字)