版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
BaseActivity概述
BaseActivity用于项目中Activity的基类。
BaseActivity截图
BaseActivity截图如下:
DisplayUtils源码
BaseActivity源码如下:
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
/**
* Activity基类
*
* 本文作者:谷哥的小弟
* 博客地址:http://blog.csdn.net/lfdfhl
*/
public abstract class BaseActivity extends AppCompatActivity implements HandlerAction {
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final LightTaskUtils mTaskUtils = new LightTaskUtils();
private ImmersionBar mImmersionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentLayoutId());
initViews();
// 初始化沉浸式状态栏
if (isStatusBarEnabled()) {
getStatusBarConfig().init();
}
initData();
}
protected abstract int getContentLayoutId();
protected abstract void initViews();
/**
* 是否使用沉浸式状态栏
*/
protected boolean isStatusBarEnabled() {
return true;
}
/**
* 状态栏字体深色模式
*/
protected boolean isStatusBarDarkFont() {
return true;
}
/**
* 获取状态栏沉浸的配置对象
*/
public ImmersionBar getStatusBarConfig() {
if (mImmersionBar == null) {
mImmersionBar = createStatusBarConfig();
}
return mImmersionBar;
}
/**
* 初始化沉浸式状态栏
*/
@NonNull
protected ImmersionBar createStatusBarConfig() {
return ImmersionBar.with(this)
// 默认状态栏字体颜色为黑色
.statusBarDarkFont(isStatusBarDarkFont())
// 指定导航栏背景颜色
.navigationBarColor(android.R.color.white)
// 状态栏字体和导航栏内容自动变色,必须指定状态栏颜色和导航栏颜色才可以自动变色
.autoDarkModeEnable(true, 0.2f);
}
@Override
public Handler getMainHandler() {
return mHandler;
}
@Override
public LightTaskUtils getAsyncHandler() {
return mTaskUtils;
}
protected void initData() {
}
@Override
protected void onDestroy() {
super.onDestroy();
mTaskUtils.removePost();
mHandler.removeCallbacksAndMessages(null);
}
}