核心内容:

log常用标记TAG赋值,

状态栏设置,

逻辑区分,

onNewIntent重写,

跳转方法简化.

状态栏原生方案(可选)

/**
*Author:XingHai.Zhao
*Purpose: All Activity Father
*/
abstract class BaseActivity : AppCompatActivity() {
var TAG: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(mContentView)
ImmersionBar.with(this).statusBarDarkFont(true).init()
TAG = this.localClassName
initView()
initData()
initListener()
}

abstract val mContentView: Int
abstract fun initView()
abstract fun initData()
abstract fun initListener()

override fun onNewIntent(intent: Intent?) {
setIntent(intent)
super.onNewIntent(intent)
}

fun goActivity(act: Class<*>?) {
startActivity(Intent(this, act));
}

fun goActivity(act: Class<*>?, key: String, value: String) {
startActivity(Intent(this, act).putExtra(key, value));
}

//不想用ImmersionBar的替代方案
open fun setStatusBar(colorId: Int) { // 目前首页专用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(true)
val mTintManager = SystemBarTintManager(this)
mTintManager.isStatusBarTintEnabled = true
mTintManager.setStatusBarTintResource(colorId) //通知栏所需颜色
//window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明状态栏
//window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
//设置6.0以上状态栏字体颜色为白色
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
// 部分机型的statusbar会有半透明的黑色背景
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
}
//KITKAT也能满足,只是SYSTEM_UI_FLAG_LIGHT_STATUS_BAR(状态栏字体颜色反转)只有在6.0才有效
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 状态栏字体设置为深色,SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 为SDK23增加
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.TRANSPARENT // SDK21
}
}

@TargetApi(19)
open fun setTranslucentStatus(on: Boolean) {
val win = window
val winParams = win.attributes
val bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
if (on) {
winParams.flags = winParams.flags or bits
} else {
winParams.flags = winParams.flags and bits.inv()
}
win.attributes = winParams
}

}

 //状态栏自定义依赖:

implementation 'com.gyf.immersionbar:immersionbar:3.0.0'

子Activity继承举例:

class LoginActivity : BaseActivity() {

override val mContentView: Int = R.layout.activity_login

override fun initView() {}

override fun initData() {}

override fun setListener() {}

}