本文实例讲述了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 tabsList = new ArrayList(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);  }  /**   * 封装一个Tab的类   *    * tab的文字   *    * tab所包含的Class   */  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;    }    /**     * 两个参数的构造方法,便于创建一个对象     *      * @param string     * @param fragment     */    public MyTab(String string, Class fragment) {      this.text = string;      this.fragment = fragment;    }  }  /**   * 为viewpager设置的适配器   */  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();    }  }  /************* 下边是TabListener所实现的方法 ***********************/  /**   * 当Tab被双次选中   */  @Override  public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) {  }  /**   * 当Tab被单次选中   */  @Override  public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) {    viewPager.setCurrentItem(tab.getPosition());  }  @Override  public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) {  }  /**************** 下边是OnPageChangeListener实现的方法 ****************/  @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

    

下边是四个fragment的布局文件

<?xml version="1.0" encoding="utf-8"?>    

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

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

更多相关文章

  1. 自定义ViewGroup获取子View参数
  2. Android(安卓)GestureDetector滑动监听事件
  3. Android(安卓)程序中调用其他程序的方法总结
  4. 2.2.1 LinearLayout(线性布局)
  5. Android弹出式窗口PopuWindow的使用
  6. 了解使用Android(安卓)ConstraintLayout
  7. startService与bindService
  8. Android(安卓)CheckBox 控件突然报错
  9. android中三种onClick事件的实现,与对比

随机推荐

  1. 如果在android中应用activemq
  2. Android(安卓)viewPager实现翻动
  3. Android系统目录结构详解
  4. Android(安卓)Platform 3.0 SDK和Eclipse
  5. android 小游戏 ---- 数独(三)
  6. Android 控制WIFI相关操作
  7. Android之消息处理机制(二)Handler的本质-M
  8. [置顶] Android应用程序的自动更新升级(自
  9. android的Surface Flinger服务启动分析
  10. Android(安卓)之 串口通信