一、概述
在2015年的google大会上,google发布了新的Android Support Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容到2.2以上版本,包括2.2。
依稀记得前几年要实现这样的功能用的还是viewpagerindicator开源库,如今既然谷歌推出了TabLayout,所以特地学习了一下。
使用之前需要添加依赖:
compile 'com.android.support:design:24.2.1'
二、实现效果图
TabLayout一般都是配合着ViewPager使用,众所周知,ViewPager有个预加载功能,在加载本页数据时,它会提前加载下页数据,可以极大的浪费资源,而且不利于用户体验,你如果调试我的源码就会发现,本文特地取消了ViewPager预加载。
主要是初始化Frament时给每个Fragment设置一个mTabPos常量,第一次进入时加以判断setCurrentItem的页是否和mTabPos相同,如果相同就加载,这样第一次就不会预加载,后面进行页面切换时,通过onPageSelected方法加载。
三、核心代码
1.页面TabLayoutTestActivity.java
package com.czhappy.effectdemo.activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import com.czhappy.effectdemo.R;
import com.czhappy.effectdemo.fragment.PageFragment;
import java.util.ArrayList;
import java.util.List;
/**
* Description:
* User: chenzheng
* Date: 2017/1/20 0020
* Time: 14:24
*/
public class TabLayoutTestActivity extends AppCompatActivity {
private TabLayout mTabLayout;
private ViewPager mViewPager;
private SimpleFragmentPagerAdapter mAdapter;
private List<Fragment> mFragments = new ArrayList<Fragment>();
private String tabTitles[] = new String[]{
"tab1","tab2","tab3", "tab4","tab5","tab6"};
private int curTab=0;