使用Fragment实现的滑动组件ViewPager

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> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值