今天讲
advancedpagerslidingtabstrip取消预加载
首先我使用的viewpager+fragment还有viewpaget的指示器,三者结合着去做的
这里面viewpager指示器我用的第三方的框架 AdvancedPagerSlidingTabStrip
AdvancedPagerSlidingTabStrip是一种Android平台的导航控件,完美兼容Android自带库和兼容库的ViewPager组件,最低支持Android api v9。
支持一下功能:
支持Tab小圆点以及数量显示和隐藏
支持自定义Tab View
支持使用Bitmap、Drawable和本地resId来显示Tab图标
支持对Tab图标替换成自定义View来加载网络图片
支持自由设置小圆点、tab大小和位置等设置
支持实现如:微博等不均匀Tab的APP风格,并支持滑动
效果图这里就略了,这是项目地址自己去看 https://github.com/HomHomLin/AdvancedPagerSlidingTabStrip
这里借用的上篇Android 仿QQ首页的消息和电话的切换的案例
这里使用的是在fragment中继承setUserVisibleHint这个方法,
该方法用于告诉系统,这个Fragment的UI是否是可见的。所以我们只需要继承Fragment并重写该方法,
即可实现在fragment可见时才进行数据加载操作,即Fragment的懒加载。
a主要是做标记表示第一次进来时加载一次,其他时候进来不从新加载,不过如果有需求时可以把这个去掉
讲初始化数据放在这里面可以实现懒加载,
另外一中viewpager懒加载模式是完全从写viewpager,并修改其中的某个值这个方法以后我会交大家的
这个例子是使用了advancedpagerslidingtabstrip这个第三方框架
public class ProductFragment extends Fragment implements ViewPager.OnPageChangeListener {
public CustomPagerSlidingTabStrip mAPSTS;
public APSTSViewPager mVP;
private int a = ;
private static final int VIEW_FIRST = ;
private static final int VIEW_SECOND = ;
private static final int VIEW_SIZE = ;
private Context mContext;
private GudingFragment mFirstFragment = null;
private ConvertibleFragment mConvertibleFragment = null;
private View view;
public static ProductFragment instance(Context mContext1) {
ProductFragment view = new ProductFragment();
return view;
}
//这里做了个判断,如果是第一次进来并且显示的是当前fragment那么久加载一次
//同时这样还可以防止重复加载
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && a == ) {
init();
a++;
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_product, null);
findViews(view);
return view;
}
private void findViews(View view) {
mAPSTS = (CustomPagerSlidingTabStrip) view.findViewById(R.id.tabs2);
mVP = (APSTSViewPager) view.findViewById(R.id.vp_main);
}
private void init() {
mVP.setOffscreenPageLimit();
FragmentAdapter adapter = new FragmentAdapter(getChildFragmentManager());
mVP.setAdapter(adapter);
//屏蔽掉滑动事件
mVP.setNoFocus(true);
adapter.notifyDataSetChanged();
mAPSTS.setViewPager(mVP);
mAPSTS.setOnPageChangeListener(this);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}