103 lines
3.3 KiB
Kotlin
103 lines
3.3 KiB
Kotlin
package dji.sampleV5.aircraft
|
||
|
||
import android.os.Bundle
|
||
import android.view.View
|
||
import androidx.activity.viewModels
|
||
import androidx.appcompat.app.AppCompatActivity
|
||
import androidx.fragment.app.commit
|
||
import androidx.navigation.Navigation
|
||
import dji.sampleV5.aircraft.databinding.ActivityMainBinding
|
||
import dji.sampleV5.aircraft.databinding.ActivityTestingToolsBinding
|
||
import dji.sampleV5.aircraft.models.MSDKCommonOperateVm
|
||
import dji.sampleV5.aircraft.util.DJIToastUtil
|
||
import dji.v5.ux.core.util.ToastUtils
|
||
import dji.sampleV5.aircraft.views.MSDKInfoFragment
|
||
import dji.v5.ux.core.util.ViewUtil
|
||
|
||
/**
|
||
* Class Description
|
||
*
|
||
* @author Hoker
|
||
* @date 2021/7/23
|
||
*
|
||
* Copyright (c) 2021, DJI All Rights Reserved.
|
||
*/
|
||
abstract class TestingToolsActivity : AppCompatActivity() {
|
||
|
||
protected lateinit var binding: ActivityTestingToolsBinding
|
||
protected val msdkCommonOperateVm: MSDKCommonOperateVm by viewModels()
|
||
|
||
private val testToolsVM: TestToolsVM by viewModels()
|
||
|
||
override fun onCreate(savedInstanceState: Bundle?) {
|
||
super.onCreate(savedInstanceState)
|
||
binding = ActivityTestingToolsBinding.inflate(layoutInflater)
|
||
setContentView(binding.root)
|
||
|
||
window.decorView.apply {
|
||
systemUiVisibility =
|
||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_FULLSCREEN or
|
||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||
}
|
||
|
||
// 设置Listener防止系统UI获取焦点后进入到非全屏状态
|
||
window.decorView.setOnSystemUiVisibilityChangeListener() {
|
||
if (it and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
|
||
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
|
||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
|
||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
|
||
View.SYSTEM_UI_FLAG_FULLSCREEN or
|
||
View.SYSTEM_UI_FLAG_IMMERSIVE or
|
||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
|
||
}
|
||
}
|
||
|
||
loadTitleView()
|
||
|
||
DJIToastUtil.dJIToastLD = testToolsVM.djiToastResult
|
||
testToolsVM.djiToastResult.observe(this) { result ->
|
||
result?.msg?.let {
|
||
ToastUtils.showToast(it)
|
||
}
|
||
}
|
||
|
||
msdkCommonOperateVm.mainPageInfoList.observe(this) { list ->
|
||
list.iterator().forEach {
|
||
addDestination(it.vavGraphId)
|
||
}
|
||
}
|
||
|
||
loadPages()
|
||
}
|
||
|
||
override fun onResume() {
|
||
super.onResume()
|
||
ViewUtil.setKeepScreen(this, true)
|
||
}
|
||
|
||
override fun onPause() {
|
||
super.onPause()
|
||
ViewUtil.setKeepScreen(this, false)
|
||
}
|
||
|
||
/**
|
||
* 本activity的NavController,都是基于nav_host_fragment_container的
|
||
*/
|
||
private fun addDestination(id: Int) {
|
||
val v = Navigation.findNavController(binding.navHostFragmentContainer).navInflater.inflate(id)
|
||
Navigation.findNavController(binding.navHostFragmentContainer).graph.addAll(v)
|
||
}
|
||
|
||
override fun onDestroy() {
|
||
super.onDestroy()
|
||
DJIToastUtil.dJIToastLD = null
|
||
}
|
||
|
||
open fun loadTitleView() {
|
||
supportFragmentManager.commit {
|
||
replace(R.id.main_info_fragment_container, MSDKInfoFragment())
|
||
}
|
||
}
|
||
|
||
abstract fun loadPages()
|
||
} |