Android Fragment滑动组件ViewPager的实例详解

作者:amoscxy 时间:2022-06-10 05:23:10 

Android 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>

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/amoscxy/article/details/52350692

标签:Android,Fragment,ViewPager
0
投稿

猜你喜欢

  • 基于Viewpager2实现登录注册引导页面

    2023-06-16 11:04:10
  • MyBatis的SQL执行结果和客户端执行结果不一致问题排查

    2022-12-30 20:37:22
  • Windows窗体的.Net框架绘图技术实现方法

    2022-06-29 13:32:23
  • Android编程实现简单文件浏览器功能

    2022-01-02 06:13:46
  • 详解Java图形化编程中的鼠标事件设计

    2022-07-11 08:11:31
  • java多线程读取多个文件的方法

    2022-12-05 04:37:45
  • C#实现Word转换TXT的方法详解

    2022-12-26 04:27:57
  • Android获取SDcard目录及创建文件夹的方法

    2022-03-03 04:16:31
  • Spring Boot + Mybatis多数据源和动态数据源配置方法

    2023-02-16 17:15:31
  • Java8新特性之接口中的默认方法和静态方法详解

    2022-05-10 15:16:19
  • java和c#使用hessian通信的方法

    2021-12-12 22:03:46
  • Android小程序实现简易QQ界面

    2023-07-03 20:29:52
  • SpringBoot2零基础到精通之数据与页面响应

    2022-08-25 22:26:41
  • 关于C#反射 你需要知道的

    2022-01-10 04:33:19
  • dubbo入门指南及demo实例详解

    2023-08-24 04:49:07
  • C#读写config配置文件的方法

    2023-11-17 02:30:17
  • Java初学之继承与多态

    2022-11-29 15:13:04
  • 从内存地址解析Java的static关键字的作用

    2022-03-18 03:49:26
  • SpringBoot项目中的多数据源支持的方法

    2022-01-12 03:42:19
  • java中Locks的使用详解

    2023-11-29 00:18:38
  • asp之家 软件编程 m.aspxhome.com