我的编程空间,编程开发者的网络收藏夹
学习永远不晚

灵活使用Android中ActionBar和ViewPager切换页面

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

灵活使用Android中ActionBar和ViewPager切换页面

本文实例讲述了Android使用ActionBar和ViewPager切换页面,分享给大家供大家参考。具体如下:
运行效果截图如下:

项目布局如下:

具体代码如下:

MainActivity.java代码


import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBar.TabListener;
import android.support.v7.app.ActionBarActivity;
import com.xuliugen.fragment.ChatFragment;
import com.xuliugen.fragment.FriendFragment;
import com.xuliugen.fragment.MomentFragment;
import com.xuliugen.fragment.MoreFragment;
public class MainActivity extends ActionBarActivity implements TabListener,OnPageChangeListener {
  private List<MyTab> tabsList = new ArrayList<MainActivity.MyTab>(4);
  private ViewPager viewPager;// ViewPager用于存放fragment
  private ActionBar actionBar;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 添加4个fragment到自定义的Tab中去
    tabsList.add(new MyTab("聊天", ChatFragment.class));
    tabsList.add(new MyTab("朋友", FriendFragment.class));
    tabsList.add(new MyTab("时刻", MomentFragment.class));
    tabsList.add(new MyTab("更多", MoreFragment.class));
    initActionBar();
  }
  private void initActionBar() {
    // 找到viewpager
    viewPager = (ViewPager) this.findViewById(R.id.viewpager);
    actionBar = getSupportActionBar(); // 获得v7中的ActionBar
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 设置为导航模式
    // 通过循环遍历将创建的四个Tab加入到actionBar中
    for (MyTab tab : tabsList) {
      Tab t = actionBar.newTab(); // 使用v7下边的Tab
      t.setText(tab.getText());
      t.setTabListener(this);// 设置TabListener监听器
      actionBar.addTab(t);
    }
    viewPager.setAdapter(new TabFragmentPagerAdapter(getSupportFragmentManager()));
    viewPager.setOnPageChangeListener(this);
  }
  
  class MyTab {
    private String text; // 的文字
    private Class fragment;// 每一个tab所对应的页面fragment
    public String getText() {
      return text;
    }
    public void setText(String text) {
      this.text = text;
    }
    public Class getFragment() {
      return fragment;
    }
    public void setFragment(Class fragment) {
      this.fragment = fragment;
    }
    
    public MyTab(String string, Class fragment) {
      this.text = string;
      this.fragment = fragment;
    }
  }
  
  class TabFragmentPagerAdapter extends FragmentPagerAdapter {
    public TabFragmentPagerAdapter(FragmentManager fm) {
      super(fm);
    }
    @Override
    public Fragment getItem(int i) {
      try {
        return (Fragment) tabsList.get(i).getFragment().newInstance();
      } catch (InstantiationException e) {
        e.printStackTrace();
      } catch (IllegalAccessException e) {
        e.printStackTrace();
      }
      return null;
    }
    @Override
    public int getCount() {
      return tabsList.size();
    }
  }
  
  
  @Override
  public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) {
  }
  
  @Override
  public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {
    viewPager.setCurrentItem(tab.getPosition());
  }
  @Override
  public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) {
  }
  
  @Override
  public void onPageScrollStateChanged(int i) {
  }
  @Override
  public void onPageScrolled(int i, float arg1, int arg2) {
  }
  @Override
  public void onPageSelected(int i) {
    actionBar.selectTab(actionBar.getTabAt(i));
  }
}

下边是四个fragment


public class ChatFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_friends, container, false);
  }
}
public class FriendFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_chat, container, false);
  }
}
public class MomentFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_moment, container, false);
  }
}
public class MoreFragment extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_more, container, false);
  }
}

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context=".MainActivity" >
  <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
  </android.support.v4.view.ViewPager>
</RelativeLayout>

下边是四个fragment的布局文件


<?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="fill_parent"
  android:orientation="vertical" >
  <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="聊天" >
  </TextView>
</LinearLayout>

其他三个都一样只是文件名和里边的内容改变了一下。

希望本文所述对大家学习Android软件编程有所帮助。

您可能感兴趣的文章:Android App中使用ViewPager+Fragment实现滑动切换效果Android开发之使用ViewPager实现图片左右滑动切换效果Android编程实现ViewPager多页面滑动切换及动画效果的方法Android实现千变万化的ViewPager切换动画Android中ViewPager组件的基本用法及实现图片切换的示例Android应用中利用ViewPager实现多页面滑动切换效果示例Android应用中使用ViewPager实现类似QQ的界面切换效果Android中TabLayout结合ViewPager实现页面切换效果Android ViewPager实现选项卡切换Android实现单页显示3个Item的ViewPager炫酷切换效果


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

灵活使用Android中ActionBar和ViewPager切换页面

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

灵活使用Android中ActionBar和ViewPager切换页面

本文实例讲述了Android使用ActionBar和ViewPager切换页面,分享给大家供大家参考。具体如下: 运行效果截图如下:项目布局如下:具体代码如下: MainActivity.java代码import java.util.Arr
2022-06-06

Android 中使用 ViewPager实现屏幕页面切换和页面轮播效果

之前关于如何实现屏幕页面切换,写过一篇博文《Android中使用ViewFlipper实现屏幕切换》,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实
2022-06-06

Android中TabLayout结合ViewPager实现页面切换

一、实现思路 1、在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:design:23.4
2022-06-06

Android App中用Handler实现ViewPager页面的自动切换

在很多电商网页及app上都有自动切换的商品的推广快,感觉体验挺不错的,正好今天学习使用ViewPager,因此也实现了一个功能类似的demo。 下面是其中的两个截图:实现一个自动播放功能的ViewPager,要做的主要有以下的几个部分: 实
2022-06-06

Android开发中ViewPager实现多页面切换效果

ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“Android-support-v4.jar” 首先必须知道:要使用ViewPager,必须要使用PagerAda
2022-06-06

Android中TabLayout结合ViewPager实现页面切换效果

先看看效果,如图:1.因为TabLayout是Android Design Support Library官方库的一个控件,所以使用TabLayout时候需要先添加对该库的依赖 compile 'com.android.support:d
2022-06-06

Android使用ViewPager实现顶部tabbar切换界面

类似的功能可以看看: 使用RadioGroup实现底部导航栏 进入正题效果图: 注:PagerSlidingTabStrip为自定义控件,用于切换界面,此处不便贴出代码 1.主界面xml布局中添加ViewPager控件:
2023-05-30

Android应用中利用ViewPager实现多页面滑动切换效果示例

1、添加android support包 因为上面的几个类都是在android support包中才提供,我们先添加包。 在Eclipse->Window->Android SDK Manager,选择列表中Extras->Android
2022-06-06

Android应用中使用ViewPager实现类似QQ的界面切换效果

这几天在研究ViewPager,简单的写一下如何使用ViewPager实现类似于QQ的“最近联系人、好友、群组”的界面切换(不知道他们是不是用这个方法实现的)。 ViewPager已经在android-sdk中加入了,具体的位置在%andr
2022-06-06

Android中使用TabHost 与 Fragment 制作页面切换效果

三个标签页置于顶端效果图:在文件BoardTabHost.java中定义页面切换的效果;切换页面时,当前页面滑出,目标页面滑入。这是2个不同的动画设定动画时要区分对待import android.content.Context; impor
2022-06-06

Android App中使用ViewPager+Fragment实现滑动切换效果

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

Android使用Fragment打造万能页面切换框架

首先我们来回忆一下传统用Activity进行的页面切换,activity之间切换,首先需要新建intent对象,给该对象设置一些必须的参数,然后调用startActivity方法进行页面跳转。如果需要activity返回结果,则调用star
2022-06-06

Android中怎么使用ViewPager2实现页面滑动切换效果

这篇“Android中怎么使用ViewPager2实现页面滑动切换效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Andr
2023-06-29

Android基础之使用Fragment控制切换多个页面

今天讲解一下Fragment的控制,主要是切换View和页面替换等操作。还有就是如何获取Fragment的管理对象,以及与Activity的通信方式。1、管理Fragment要在activity中管理fragment,需要使用Fragmen
2022-06-06

Android应用中怎么实现一个滑动切换页面功能

Android应用中怎么实现一个滑动切换页面功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 TabLayou 主要实现的是标题头的 滑动 这个 控件 类似于 ScrollV
2023-05-31

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录