BaseLasyFragment
来源:互联网 发布:税务师含金量知乎 编辑:程序博客网 时间:2024/05/29 11:14
/* * Created by z on 2017/9/15. */import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public abstract class BaseLazyFragment extends Fragment { View v; /** 第一次可见的标识 */ private boolean isFirstVisible = true; /** 第一次不可见标识 */ private boolean isFirstInvisible = true; /** 数据是否加载完成,由具体的子类来维护 */ protected boolean isLoaded = false; /** 视图创建完成标识 */ private boolean isPrepared; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initData(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); // 我们只在视图创建完成后,调用视图是否可见的方法 if (isPrepared) { if (isVisibleToUser) { isFirstVisible(); } else { isFirstInvisible(); } } } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (getLayoutId() != 0) { v = inflater.inflate(getLayoutId(), container, false); } else { v = super.onCreateView(inflater, container, savedInstanceState); } return v; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // 视图准备完成 isPrepared = true; // 视图是否可见 isVisibleToUser(); // 初始化视图数据 if (isLoaded()) { initViewData(); } } @Override public void onResume() { super.onResume(); if (getUserVisibleHint()) { onUserVisible(); } } @Override public void onPause() { super.onPause(); if (getUserVisibleHint()) { onUserInvisible(); } } @Override public void onDestroyView() { super.onDestroyView(); // 视图销毁后将isPrepared重置 isPrepared = false; } private void isVisibleToUser() { if (getUserVisibleHint()) { isFirstVisible(); } } private void isFirstVisible() { if (isFirstVisible) { isFirstVisible = false; onFirstUserVisible(); } else { onUserVisible(); } } private void isFirstInvisible() { if (isFirstInvisible) { isFirstInvisible = false; onFirstUserInvisible(); } else { onUserInvisible(); } } private boolean isLoaded() { return isLoaded; } public void loaded() { isLoaded = true; } /** * initialized data but view is not initialized */ protected abstract void initData(); /** * when view created for the first time,we can set data on the View */ protected abstract void initViewData(); /** * get LayoutId * @return */ public abstract int getLayoutId(); /** * when fragment is visible for the first time, here we can do something Time-consuming operation like network access */ protected abstract void onFirstUserVisible(); /** * this method like the fragment's lifecycle method onResume() */ protected abstract void onUserVisible(); /** * when fragment is invisible for the first time */ private void onFirstUserInvisible() { } /** * this method like the fragment's lifecycle method onPause() */ protected abstract void onUserInvisible();}
阅读全文
0 0
- BaseLasyFragment
- Java Class对象与反射机制
- 数据结构中前缀表达式、中缀表达式、后缀表达式
- C语言实现 静态顺序表
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
- java多线程之闭锁(Latch)和栅栏(CyclicBarrier)
- BaseLasyFragment
- windows核心编程之线程补充
- OpenGL SuperBible阅读笔记
- log4j.xml
- SHA-2
- Java IO体系架构图
- 外网iPhone手机访问局域网电脑共享文件的方法
- C++ _T()函数和_L()函数介绍
- Android 获取应用总大小