Files
Xuewang365OSNeutral/app/src/main/java/com/uiui/zyos/base/BaseLazyFragment.java
Fanhuitong 2772685f0e version:1.2
fix:优化卡顿
update:基本对接完成,增加指示器放大
2023-02-23 11:26:22 +08:00

101 lines
2.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.uiui.zyos.base;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
/**
* Author: wangjie
* Email: tiantian.china.2@gmail.com
* Date: 1/23/15.
*/
public abstract class BaseLazyFragment extends Fragment {
private static final String TAG = BaseLazyFragment.class.getSimpleName();
private boolean isPrepared;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initPrepare();
}
/**
* 第一次onResume中的调用onUserVisible避免操作与onFirstUserVisible操作重复
*/
private boolean isFirstResume = true;
@Override
public void onResume() {
super.onResume();
if (isFirstResume) {
isFirstResume = false;
return;
}
if (getUserVisibleHint()) {
onUserVisible();
}
}
@Override
public void onPause() {
super.onPause();
if (getUserVisibleHint()) {
onUserInvisible();
}
}
private boolean isFirstVisible = true;
private boolean isFirstInvisible = true;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (isFirstVisible) {
isFirstVisible = false;
initPrepare();
} else {
onUserVisible();
}
} else {
if (isFirstInvisible) {
isFirstInvisible = false;
onFirstUserInvisible();
} else {
onUserInvisible();
}
}
}
public synchronized void initPrepare() {
if (isPrepared) {
onFirstUserVisible();
} else {
isPrepared = true;
}
}
/**
* 第一次fragment可见进行初始化工作
*/
public abstract void onFirstUserVisible();
/**
* fragment可见切换回来或者onResume
*/
public abstract void onUserVisible();
/**
* 第一次fragment不可见不建议在此处理事件
*/
public abstract void onFirstUserInvisible();
/**
* fragment不可见切换掉或者onPause
*/
public abstract void onUserInvisible();
}