ViewPager+Fragment的基本使用

利用ViewPager+Fragment简单实现页面的切换

项目的大概组成:

以下是代码的实现,首先在activity_main.xml新建菜单栏和ViewPager控件

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  2. xmlns:tools="http://schemas.android.com/tools"

  3. android:layout_width="match_parent"

  4. android:layout_height="match_parent"

  5. android:orientation="vertical"

  6. tools:context="com.itman.viewpagerdemo.MainActivity" >

  7. <LinearLayout

  8. android:layout_width="match_parent"

  9. android:layout_height="wrap_content"

  10. android:orientation="horizontal" >

  11. <TextView

  12. android:id="@+id/tv_item_one"

  13. android:layout_width="wrap_content"

  14. android:layout_height="wrap_content"

  15. android:layout_weight="1"

  16. android:gravity="center_horizontal"

  17. android:text="菜单一" />

  18. <TextView

  19. android:id="@+id/tv_item_two"

  20. android:layout_width="wrap_content"

  21. android:layout_height="wrap_content"

  22. android:layout_weight="1"

  23. android:gravity="center_horizontal"

  24. android:text="菜单二" />

  25. <TextView

  26. android:id="@+id/tv_item_three"

  27. android:layout_width="wrap_content"

  28. android:layout_height="wrap_content"

  29. android:layout_weight="1"

  30. android:gravity="center_horizontal"

  31. android:text="菜单三" />

  32. </LinearLayout>

  33. <android.support.v4.view.ViewPager

  34. android:id="@+id/myViewPager"

  35. android:layout_width="match_parent"

  36. android:layout_height="match_parent"

  37. android:layout_weight="1" />

  38. </LinearLayout>

接下来就新建三个Fragment页面做好准备,Fragment的布局文件:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  2. xmlns:tools="http://schemas.android.com/tools"

  3. android:layout_width="match_parent"

  4. android:layout_height="match_parent" >

  5. <TextView

  6. android:layout_width="match_parent"

  7. android:layout_height="match_parent"

  8. android:gravity="center"

  9. android:text="我是菜单一"

  10. android:textSize="30sp" />

  11. </RelativeLayout>

Fragment的Java文件:

  1. package com.itman.viewpagerdemo;

  2. import android.os.Bundle;

  3. import android.support.annotation.Nullable;

  4. import android.support.v4.app.Fragment;

  5. import android.view.LayoutInflater;

  6. import android.view.View;

  7. import android.view.ViewGroup;

  8. public class OneFragment extends Fragment{

  9. @Override

  10. public View onCreateView(LayoutInflater inflater,

  11. ViewGroup container, Bundle savedInstanceState) {

  12. View view = inflater.inflate(R.layout.fragment_one, null);

  13. return view;

  14. }

  15. }

三个fragment页面都一样的,就不全部贴出来了,接下来就准备添加Fragment的适配器TabFragmentPagerAdapter:

  1. package com.itman.viewpagerdemo;

  2. import java.util.List;

  3. import android.support.v4.app.Fragment;

  4. import android.support.v4.app.FragmentManager;

  5. import android.support.v4.app.FragmentPagerAdapter;

  6. public class TabFragmentPagerAdapter extends FragmentPagerAdapter {

  7. private FragmentManager mfragmentManager;

  8. private List<Fragment> mlist;

  9. public TabFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {

  10. super(fm);

  11. this.mlist = list;

  12. }

  13. @Override

  14. public Fragment getItem(int arg0) {

  15. return mlist.get(arg0);//显示第几个页面

  16. }

  17. @Override

  18. public int getCount() {

  19. return mlist.size();//有几个页面

  20. }

  21. }

准备工作完成,接下来是MainActivit.Java的代码实现:

  1. package com.itman.viewpagerdemo;

  2. import java.util.ArrayList;

  3. import java.util.List;

  4. import android.graphics.Color;

  5. import android.os.Bundle;

  6. import android.support.v4.app.Fragment;

  7. import android.support.v4.view.ViewPager;

  8. import android.support.v4.view.ViewPager.OnPageChangeListener;

  9. import android.support.v7.app.ActionBarActivity;

  10. import android.view.View;

  11. import android.view.View.OnClickListener;

  12. import android.widget.TextView;

  13. public class MainActivity extends ActionBarActivity implements OnClickListener {

  14. private TextView tv_item_one;

  15. private TextView tv_item_two;

  16. private TextView tv_item_three;

  17. private ViewPager myViewPager;

  18. private List<Fragment> list;

  19. private TabFragmentPagerAdapter adapter;

  20. @Override

  21. protected void onCreate(Bundle savedInstanceState) {

  22. super.onCreate(savedInstanceState);

  23. setContentView(R.layout.activity_main);

  24. InitView();

  25. // 设置菜单栏的点击事件

  26. tv_item_one.setOnClickListener(this);

  27. tv_item_two.setOnClickListener(this);

  28. tv_item_three.setOnClickListener(this);

  29. myViewPager.setOnPageChangeListener(new MyPagerChangeListener());

  30. //把Fragment添加到List集合里面

  31. list = new ArrayList<>();

  32. list.add(new OneFragment());

  33. list.add(new TwoFragment());

  34. list.add(new ThreeFragment());

  35. adapter = new TabFragmentPagerAdapter(getSupportFragmentManager(), list);

  36. myViewPager.setAdapter(adapter);

  37. myViewPager.setCurrentItem(0); //初始化显示第一个页面

  38. tv_item_one.setBackgroundColor(Color.RED);//被选中就为红色

  39. }

  40. /**

  41. * 初始化控件

  42. */

  43. private void InitView() {

  44. tv_item_one = (TextView) findViewById(R.id.tv_item_one);

  45. tv_item_two = (TextView) findViewById(R.id.tv_item_two);

  46. tv_item_three = (TextView) findViewById(R.id.tv_item_three);

  47. myViewPager = (ViewPager) findViewById(R.id.myViewPager);

  48. }

  49. /**

  50. * 点击事件

  51. */

  52. @Override

  53. public void onClick(View v) {

  54. switch (v.getId()) {

  55. case R.id.tv_item_one:

  56. myViewPager.setCurrentItem(0);

  57. tv_item_one.setBackgroundColor(Color.RED);

  58. tv_item_two.setBackgroundColor(Color.WHITE);

  59. tv_item_three.setBackgroundColor(Color.WHITE);

  60. break;

  61. case R.id.tv_item_two:

  62. myViewPager.setCurrentItem(1);

  63. tv_item_one.setBackgroundColor(Color.WHITE);

  64. tv_item_two.setBackgroundColor(Color.RED);

  65. tv_item_three.setBackgroundColor(Color.WHITE);

  66. break;

  67. case R.id.tv_item_three:

  68. myViewPager.setCurrentItem(2);

  69. tv_item_one.setBackgroundColor(Color.WHITE);

  70. tv_item_two.setBackgroundColor(Color.WHITE);

  71. tv_item_three.setBackgroundColor(Color.RED);

  72. break;

  73. }

  74. }

  75. /**

  76. * 设置一个ViewPager的侦听事件,当左右滑动ViewPager时菜单栏被选中状态跟着改变

  77. *

  78. */

  79. public class MyPagerChangeListener implements OnPageChangeListener {

  80. @Override

  81. public void onPageScrollStateChanged(int arg0) {

  82. }

  83. @Override

  84. public void onPageScrolled(int arg0, float arg1, int arg2) {

  85. }

  86. @Override

  87. public void onPageSelected(int arg0) {

  88. switch (arg0) {

  89. case 0:

  90. tv_item_one.setBackgroundColor(Color.RED);

  91. tv_item_two.setBackgroundColor(Color.WHITE);

  92. tv_item_three.setBackgroundColor(Color.WHITE);

  93. break;

  94. case 1:

  95. tv_item_one.setBackgroundColor(Color.WHITE);

  96. tv_item_two.setBackgroundColor(Color.RED);

  97. tv_item_three.setBackgroundColor(Color.WHITE);

  98. break;

  99. case 2:

  100. tv_item_one.setBackgroundColor(Color.WHITE);

  101. tv_item_two.setBackgroundColor(Color.WHITE);

  102. tv_item_three.setBackgroundColor(Color.RED);

  103. break;

  104. }

  105. }

  106. }

  107. }

Android 应用开发---6.ViewPager+Fragment的基本使用相关推荐

  1. Android 应用开发----7. ViewPager+Fragment一步步打造顶部导航界面滑动效果

    ViewPager+Fragment一步步打造顶部导航界面滑动效果 在许多应用中,我们常常用到这么一个效果: 可以看到,由于现在的应用数据经常需要涉及到多个模块,所以常常需要使用滑动标签在多个页面之间 ...

  2. Android studio实现底部导航,Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果...

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退. ...

  3. android fragment界面滑动切换效果,Android App中使用ViewPager+Fragment实现滑动切换效果...

    在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android- ...

  4. android fragment 教程,Android app开发中的Fragment入门学习教程

    在Android3.0上开始引入了一个新概念叫Fragment.它有自己的布局文件,可以作为组件排布,也可以相互组合去实现不同的布局显示.使用Fragment可以重复利用代码,并且可以满足不同设备尺寸 ...

  5. Android 应用开发---ViewPager---5.使用Fragment实现ViewPager滑动

    ViewPager 详解(五)-----使用Fragment实现ViewPager滑动 在第一个页面加一个Btn                                          第一 ...

  6. 【Android -- UI开发】一份 UI 开发学习指南

    思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...

  7. Android Material Design 系列之 BottomNavigationView + ViewPager + Fragment + BadgeView 开发详解

    前言 BottomNavigationView 是 Material Design 提供的一个标准底部导航栏的实现,可以轻松的实现导航栏菜单之间的切换与浏览.底部导航使用户更方便的查看和切换最高层级的 ...

  8. Android商城开发----viewPager实现广告轮播(在首页Fragment中实现)

    Android商城开发----在商城首页Fragment使用viewPager实现广告轮播 写在前面:本篇文章建立在创建底部导航栏之后,对商城首页进行开发.创建底部导航栏的内容请查看:Android开 ...

  9. TabHost+ViewPager+Fragment实现页面的滑动,android开发工具deve

    <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width=&qu ...

最新文章

  1. ASP.NET强大的性能
  2. 090620 刚才修复一个fat32分区的经历
  3. 宅在家限制智力输出?这场论文复现赛让思维发光
  4. 中国银屑病患者中银屑病关节炎的患病率和特征
  5. TensorFlow学习笔记(十一)读取自己的数据进行训练
  6. ASP.NET 运行机制详解
  7. html中引入css样式表的三种方式,css引用的几种方式是什么?
  8. monkey测试_adb monkey压力测试检测安卓手机的5大步骤,你知道吗?
  9. 【微型计算机原理与接口技术】计算机系统的基本组成
  10. java hough_java – 如何实现Hough变换?
  11. 计算机最新一区sci,人工智能容易发的SCI期刊_2019中科院jcr期刊分区_2019中科院最新分区...
  12. CDHD驱动器——ServoStudio配置高创伺服速度模式不转
  13. localbridge.exe 参数错误
  14. H5页面调用微信授权获取code
  15. python面向对象2--综合案例:烤地瓜、搬家具、单继承、多继承
  16. 一阶电路实验报告心得_一阶电路实验报告5篇
  17. 查阅莱布尼兹档案,为无穷小微积分寻根
  18. The following packages have unmet dependencies: libx11-dev : Depends: libx11-6 (= 2:1.6.7-1+deb10u2
  19. 系统框架与总体设计文档是什么
  20. 【论文分享】基于微信小程序的快递取寄系统设计与实现

热门文章

  1. php无限次执行函数,php-PHP一个方法根据传递值怎么执行多次?
  2. webpack3.0 压缩css 但是不在html中引用,webpack怎样压缩css?
  3. 英雄联盟微信登录服务器怎么回事,英雄联盟微信怎么登陆 lol微信登录功能开放大区一览...
  4. java5新特性_5分钟了解Java 12 八大新特性
  5. php 网站干货,杂谈:优秀的php解密网站和工具网站推荐
  6. java 高级工程师面试
  7. interface接口——公共规范标准
  8. Java笔记(二十) 注解
  9. Centos7 操作系统 mysql5.7 配置远程登陆操作
  10. C++各个算数类型占用的字节数