diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt index 4aa71b4..bbe494d 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt @@ -3,12 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.TaskAdapter +import com.casic.br.ktd.databinding.FragmentTaskBinding import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskListModel import com.casic.br.ktd.utils.LoadingDialogHub @@ -28,19 +30,8 @@ import com.pengxh.kt.lite.vm.LoadState import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction import com.qmuiteam.qmui.recyclerView.QMUISwipeAction -import kotlinx.android.synthetic.main.fragment_task.addTaskButton -import kotlinx.android.synthetic.main.fragment_task.calendarView -import kotlinx.android.synthetic.main.fragment_task.deleteTaskButton -import kotlinx.android.synthetic.main.fragment_task.emptyLayout -import kotlinx.android.synthetic.main.fragment_task.resetParamView -import kotlinx.android.synthetic.main.fragment_task.selectedDateView -import kotlinx.android.synthetic.main.fragment_task.taskCodeView -import kotlinx.android.synthetic.main.fragment_task.taskLayout -import kotlinx.android.synthetic.main.fragment_task.taskNameView -import kotlinx.android.synthetic.main.fragment_task.taskRecyclerView -import kotlinx.android.synthetic.main.fragment_task.taskSettingsButton -class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { +class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -56,7 +47,14 @@ private var endTime = "" private var deviceId = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTaskBinding { + return FragmentTaskBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.taskList.observe(this) { @@ -65,7 +63,7 @@ when { isRefresh -> { taskAdapter.setRefreshData(dataRows) - taskLayout.finishRefresh() + binding.taskLayout.finishRefresh() isRefresh = false } @@ -74,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } taskAdapter.setLoadMoreData(dataRows) - taskLayout.finishLoadMore() + binding.taskLayout.finishLoadMore() isLoadMore = false } @@ -101,15 +99,15 @@ when (msg.what) { 2023070501 -> { if (dataBeans.size == 0) { - taskLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.taskLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - taskLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.taskLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE taskAdapter = TaskAdapter(requireContext(), dataBeans) //绑定侧滑事件 - swipeAction.attachToRecyclerView(taskRecyclerView) - taskRecyclerView.adapter = taskAdapter + swipeAction.attachToRecyclerView(binding.taskRecyclerView) + binding.taskRecyclerView.adapter = taskAdapter taskAdapter.setOnItemCheckedListener(object : TaskAdapter.OnItemCheckedListener { override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) { @@ -191,7 +189,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -202,12 +200,12 @@ getTasksByPage(true) //显示 - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - taskNameView.setOnEditorActionListener { _, actionId, _ -> + binding.taskNameView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -215,7 +213,7 @@ false } - taskCodeView.setOnEditorActionListener { _, actionId, _ -> + binding.taskCodeView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -223,10 +221,10 @@ false } - resetParamView.setOnClickListener { - selectedDateView.text = "" - taskNameView.setText("") - taskCodeView.setText("") + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" + binding.taskNameView.setText("") + binding.taskCodeView.setText("") startTime = "" endTime = "" @@ -235,7 +233,7 @@ getTasksByPage(true) } - addTaskButton.setOnClickListener { + binding.addTaskButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("新建巡检任务") @@ -253,11 +251,11 @@ }).build().show() } - deleteTaskButton.setOnClickListener { + binding.deleteTaskButton.setOnClickListener { selectedItems.size.toString().show(requireContext()) } - taskSettingsButton.setOnClickListener { + binding.taskSettingsButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("设置阈值") @@ -279,12 +277,12 @@ }).build().show() } - taskLayout.setOnRefreshListener { + binding.taskLayout.setOnRefreshListener { isRefresh = true getTasksByPage(true) } - taskLayout.setOnLoadMoreListener { + binding.taskLayout.setOnLoadMoreListener { isLoadMore = true getTasksByPage(false) } @@ -299,14 +297,12 @@ taskViewModel.getTasksByPage( startTime, endTime, - taskNameView.text.toString(), - taskCodeView.text.toString(), + binding.taskNameView.text.toString(), + binding.taskCodeView.text.toString(), page ) } - override fun initLayoutView(): Int = R.layout.fragment_task - override fun observeRequestState() { alarmViewModel.loadState.observe(this) { when (it) { diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt index 4aa71b4..bbe494d 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt @@ -3,12 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.TaskAdapter +import com.casic.br.ktd.databinding.FragmentTaskBinding import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskListModel import com.casic.br.ktd.utils.LoadingDialogHub @@ -28,19 +30,8 @@ import com.pengxh.kt.lite.vm.LoadState import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction import com.qmuiteam.qmui.recyclerView.QMUISwipeAction -import kotlinx.android.synthetic.main.fragment_task.addTaskButton -import kotlinx.android.synthetic.main.fragment_task.calendarView -import kotlinx.android.synthetic.main.fragment_task.deleteTaskButton -import kotlinx.android.synthetic.main.fragment_task.emptyLayout -import kotlinx.android.synthetic.main.fragment_task.resetParamView -import kotlinx.android.synthetic.main.fragment_task.selectedDateView -import kotlinx.android.synthetic.main.fragment_task.taskCodeView -import kotlinx.android.synthetic.main.fragment_task.taskLayout -import kotlinx.android.synthetic.main.fragment_task.taskNameView -import kotlinx.android.synthetic.main.fragment_task.taskRecyclerView -import kotlinx.android.synthetic.main.fragment_task.taskSettingsButton -class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { +class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -56,7 +47,14 @@ private var endTime = "" private var deviceId = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTaskBinding { + return FragmentTaskBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.taskList.observe(this) { @@ -65,7 +63,7 @@ when { isRefresh -> { taskAdapter.setRefreshData(dataRows) - taskLayout.finishRefresh() + binding.taskLayout.finishRefresh() isRefresh = false } @@ -74,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } taskAdapter.setLoadMoreData(dataRows) - taskLayout.finishLoadMore() + binding.taskLayout.finishLoadMore() isLoadMore = false } @@ -101,15 +99,15 @@ when (msg.what) { 2023070501 -> { if (dataBeans.size == 0) { - taskLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.taskLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - taskLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.taskLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE taskAdapter = TaskAdapter(requireContext(), dataBeans) //绑定侧滑事件 - swipeAction.attachToRecyclerView(taskRecyclerView) - taskRecyclerView.adapter = taskAdapter + swipeAction.attachToRecyclerView(binding.taskRecyclerView) + binding.taskRecyclerView.adapter = taskAdapter taskAdapter.setOnItemCheckedListener(object : TaskAdapter.OnItemCheckedListener { override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) { @@ -191,7 +189,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -202,12 +200,12 @@ getTasksByPage(true) //显示 - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - taskNameView.setOnEditorActionListener { _, actionId, _ -> + binding.taskNameView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -215,7 +213,7 @@ false } - taskCodeView.setOnEditorActionListener { _, actionId, _ -> + binding.taskCodeView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -223,10 +221,10 @@ false } - resetParamView.setOnClickListener { - selectedDateView.text = "" - taskNameView.setText("") - taskCodeView.setText("") + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" + binding.taskNameView.setText("") + binding.taskCodeView.setText("") startTime = "" endTime = "" @@ -235,7 +233,7 @@ getTasksByPage(true) } - addTaskButton.setOnClickListener { + binding.addTaskButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("新建巡检任务") @@ -253,11 +251,11 @@ }).build().show() } - deleteTaskButton.setOnClickListener { + binding.deleteTaskButton.setOnClickListener { selectedItems.size.toString().show(requireContext()) } - taskSettingsButton.setOnClickListener { + binding.taskSettingsButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("设置阈值") @@ -279,12 +277,12 @@ }).build().show() } - taskLayout.setOnRefreshListener { + binding.taskLayout.setOnRefreshListener { isRefresh = true getTasksByPage(true) } - taskLayout.setOnLoadMoreListener { + binding.taskLayout.setOnLoadMoreListener { isLoadMore = true getTasksByPage(false) } @@ -299,14 +297,12 @@ taskViewModel.getTasksByPage( startTime, endTime, - taskNameView.text.toString(), - taskCodeView.text.toString(), + binding.taskNameView.text.toString(), + binding.taskCodeView.text.toString(), page ) } - override fun initLayoutView(): Int = R.layout.fragment_task - override fun observeRequestState() { alarmViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index 06f6272..b3146e7 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -25,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityInspectionBinding import com.casic.br.ktd.extensions.* import com.casic.br.ktd.model.AlarmParam import com.casic.br.ktd.model.ChartPointModel @@ -59,7 +60,6 @@ import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider -import kotlinx.android.synthetic.main.activity_inspection.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -69,7 +69,8 @@ import java.text.SimpleDateFormat import java.util.* -class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, Handler.Callback { +class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, + Handler.Callback { private val kTag = "InspectionActivity" private val context = this@InspectionActivity @@ -135,6 +136,10 @@ //甲烷浓度阈值 private var gasAlarmRule = 1000 + override fun initViewBinding(): ActivityInspectionBinding { + return ActivityInspectionBinding.inflate(layoutInflater) + } + /** * 协程配置云台设备,缓解新进页面较卡的问题 * */ @@ -164,7 +169,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -252,7 +257,7 @@ //速度 转为 km/h speed = decimalFormat.format(aMapLocation.speed * 3.6).toFloat() - carSpeedView.text = String.format("${speed}Km/h") + binding.carSpeedView.text = String.format("${speed}Km/h") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) latlngs.add(latLng) @@ -291,16 +296,16 @@ }, 3000, LocaleConstant.DATA_TIMER_PERIOD) //按钮点击效果 - executeAngleButton.setChangeAlphaWhenPress(true) - resetButton.setChangeAlphaWhenPress(true) - cleanCameraButton.setChangeAlphaWhenPress(true) - downscaleButton.setChangeAlphaWhenPress(true) - upscaleButton.setChangeAlphaWhenPress(true) + binding.executeAngleButton.setChangeAlphaWhenPress(true) + binding.resetButton.setChangeAlphaWhenPress(true) + binding.cleanCameraButton.setChangeAlphaWhenPress(true) + binding.downscaleButton.setChangeAlphaWhenPress(true) + binding.upscaleButton.setChangeAlphaWhenPress(true) } @SuppressLint("ClickableViewAccessibility") override fun initEvent() { - reconnectButton.setOnClickListener { + binding.reconnectButton.setOnClickListener { if (!isLoginSuccess) { setDeviceConfig() } else { @@ -308,13 +313,14 @@ } } - captureButton.setOnClickListener { + binding.captureButton.setOnClickListener { if (isPreviewSuccess) { captureImage(false) } } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { AlertControlDialog.Builder() @@ -395,14 +401,17 @@ hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) isActionUp = true } + SteeringWheelView.Direction.TOP -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) isActionUp = true } + SteeringWheelView.Direction.RIGHT -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) isActionUp = true } + SteeringWheelView.Direction.BOTTOM -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) isActionUp = true @@ -414,9 +423,9 @@ /** * 角度执行 * */ - executeAngleButton.setOnClickListener { - val hDegree = hDegreeView.text.toString().trim() - val vDegree = vDegreeView.text.toString().trim() + binding.executeAngleButton.setOnClickListener { + val hDegree = binding.hDegreeView.text.toString().trim() + val vDegree = binding.vDegreeView.text.toString().trim() if (hDegree.isEmpty() && vDegree.isEmpty()) { executeAngle(0f, 0f) } else { @@ -431,14 +440,14 @@ /** * 复位 * */ - resetButton.setOnClickListener { + binding.resetButton.setOnClickListener { executeAngle(0f, 0f) } /** * 清洁镜头 * */ - cleanCameraButton.setOnClickListener { + binding.cleanCameraButton.setOnClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 0) if (MessageCodeHub.getErrorCode() == 0) { @@ -452,7 +461,7 @@ /** * 长按关闭清洁镜头 * */ - cleanCameraButton.setOnLongClickListener { + binding.cleanCameraButton.setOnLongClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 1) if (MessageCodeHub.getErrorCode() == 0) { @@ -464,7 +473,7 @@ true } - downscaleButton.setOnTouchListener { _, event -> + binding.downscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -472,6 +481,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) @@ -480,7 +490,7 @@ true } - upscaleButton.setOnTouchListener { _, event -> + binding.upscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -488,6 +498,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) @@ -496,8 +507,8 @@ true } - speedSpinner.setSelection(6) - speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + binding.speedSpinner.setSelection(6) + binding.speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { @@ -510,8 +521,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_inspection - override fun observeRequestState() { taskViewModel.loadState.observe(this) { when (it) { @@ -521,6 +530,7 @@ "任务提交成功".show(this) finish() } + else -> { LoadingDialogHub.dismiss() //提交失败,弹窗重新提交 @@ -596,7 +606,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = selectStreamType strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -626,7 +636,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } @@ -754,7 +764,7 @@ super.onDestroy() stopPreview() BroadcastManager.obtainInstance(this).destroy(LocaleConstant.ACTION_UPDATE_DATA) - mapView.onDestroy() + binding.mapView.onDestroy() udpClient.release() SocketManager.instance.close() LocationHelper.get.stopLocation() @@ -780,16 +790,18 @@ ) if (dataModel != null) { - sensorStateView.text = dataModel!!.methaneState + binding.sensorStateView.text = dataModel!!.methaneState if (dataModel!!.methaneState == "正常") { - sensorStateView.setTextColor(Color.GREEN) + binding.sensorStateView.setTextColor(Color.GREEN) } else { - sensorStateView.setTextColor(Color.RED) + binding.sensorStateView.setTextColor(Color.RED) } val degree = resources.getString(R.string.degree) - horizontalDegreeView.text = String.format("${dataModel!!.horizontal}$degree") - verticalDegreeView.text = String.format("${dataModel!!.vertical}$degree") - gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") + binding.horizontalDegreeView.text = + String.format("${dataModel!!.horizontal}$degree") + binding.verticalDegreeView.text = + String.format("${dataModel!!.vertical}$degree") + binding.gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") //TODO 报警视频 if (dataModel!!.methane >= gasAlarmRule) { @@ -818,12 +830,12 @@ /***折线图**************************************************************************/ if (!initSuccess) { - methaneLineChart.init() + binding.methaneLineChart.init() //添加自定义Marker val markerView = LineChartMarkerView(context) - markerView.chartView = methaneLineChart + markerView.chartView = binding.methaneLineChart markerView.setXAxisDate(xAxisLabels) - methaneLineChart.marker = markerView + binding.methaneLineChart.marker = markerView initSuccess = true } @@ -854,16 +866,16 @@ lineData.removeDataSet(0) lineData.notifyDataChanged() } - methaneLineChart.data = lineData - methaneLineChart.invalidate() + binding.methaneLineChart.data = lineData + binding.methaneLineChart.invalidate() } } }, LocaleConstant.ACTION_UPDATE_DATA) } private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -881,23 +893,23 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() //配置预览SurfaceView - videoSurfaceView.holder.addCallback(this) - videoSurfaceView.setZOrderOnTop(true) + binding.videoSurfaceView.holder.addCallback(this) + binding.videoSurfaceView.setZOrderOnTop(true) val threshold = SaveKeyValues.getValue(LocaleConstant.ALARM_THRESHOLD, "1000") as String - alarmThresholdView.text = String.format("${threshold}ppm·m") + binding.alarmThresholdView.text = String.format("${threshold}ppm·m") //折线图初始化阈值线 - methaneLineChart.init() + binding.methaneLineChart.init() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt index 4aa71b4..bbe494d 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt @@ -3,12 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.TaskAdapter +import com.casic.br.ktd.databinding.FragmentTaskBinding import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskListModel import com.casic.br.ktd.utils.LoadingDialogHub @@ -28,19 +30,8 @@ import com.pengxh.kt.lite.vm.LoadState import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction import com.qmuiteam.qmui.recyclerView.QMUISwipeAction -import kotlinx.android.synthetic.main.fragment_task.addTaskButton -import kotlinx.android.synthetic.main.fragment_task.calendarView -import kotlinx.android.synthetic.main.fragment_task.deleteTaskButton -import kotlinx.android.synthetic.main.fragment_task.emptyLayout -import kotlinx.android.synthetic.main.fragment_task.resetParamView -import kotlinx.android.synthetic.main.fragment_task.selectedDateView -import kotlinx.android.synthetic.main.fragment_task.taskCodeView -import kotlinx.android.synthetic.main.fragment_task.taskLayout -import kotlinx.android.synthetic.main.fragment_task.taskNameView -import kotlinx.android.synthetic.main.fragment_task.taskRecyclerView -import kotlinx.android.synthetic.main.fragment_task.taskSettingsButton -class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { +class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -56,7 +47,14 @@ private var endTime = "" private var deviceId = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTaskBinding { + return FragmentTaskBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.taskList.observe(this) { @@ -65,7 +63,7 @@ when { isRefresh -> { taskAdapter.setRefreshData(dataRows) - taskLayout.finishRefresh() + binding.taskLayout.finishRefresh() isRefresh = false } @@ -74,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } taskAdapter.setLoadMoreData(dataRows) - taskLayout.finishLoadMore() + binding.taskLayout.finishLoadMore() isLoadMore = false } @@ -101,15 +99,15 @@ when (msg.what) { 2023070501 -> { if (dataBeans.size == 0) { - taskLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.taskLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - taskLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.taskLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE taskAdapter = TaskAdapter(requireContext(), dataBeans) //绑定侧滑事件 - swipeAction.attachToRecyclerView(taskRecyclerView) - taskRecyclerView.adapter = taskAdapter + swipeAction.attachToRecyclerView(binding.taskRecyclerView) + binding.taskRecyclerView.adapter = taskAdapter taskAdapter.setOnItemCheckedListener(object : TaskAdapter.OnItemCheckedListener { override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) { @@ -191,7 +189,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -202,12 +200,12 @@ getTasksByPage(true) //显示 - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - taskNameView.setOnEditorActionListener { _, actionId, _ -> + binding.taskNameView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -215,7 +213,7 @@ false } - taskCodeView.setOnEditorActionListener { _, actionId, _ -> + binding.taskCodeView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -223,10 +221,10 @@ false } - resetParamView.setOnClickListener { - selectedDateView.text = "" - taskNameView.setText("") - taskCodeView.setText("") + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" + binding.taskNameView.setText("") + binding.taskCodeView.setText("") startTime = "" endTime = "" @@ -235,7 +233,7 @@ getTasksByPage(true) } - addTaskButton.setOnClickListener { + binding.addTaskButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("新建巡检任务") @@ -253,11 +251,11 @@ }).build().show() } - deleteTaskButton.setOnClickListener { + binding.deleteTaskButton.setOnClickListener { selectedItems.size.toString().show(requireContext()) } - taskSettingsButton.setOnClickListener { + binding.taskSettingsButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("设置阈值") @@ -279,12 +277,12 @@ }).build().show() } - taskLayout.setOnRefreshListener { + binding.taskLayout.setOnRefreshListener { isRefresh = true getTasksByPage(true) } - taskLayout.setOnLoadMoreListener { + binding.taskLayout.setOnLoadMoreListener { isLoadMore = true getTasksByPage(false) } @@ -299,14 +297,12 @@ taskViewModel.getTasksByPage( startTime, endTime, - taskNameView.text.toString(), - taskCodeView.text.toString(), + binding.taskNameView.text.toString(), + binding.taskCodeView.text.toString(), page ) } - override fun initLayoutView(): Int = R.layout.fragment_task - override fun observeRequestState() { alarmViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index 06f6272..b3146e7 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -25,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityInspectionBinding import com.casic.br.ktd.extensions.* import com.casic.br.ktd.model.AlarmParam import com.casic.br.ktd.model.ChartPointModel @@ -59,7 +60,6 @@ import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider -import kotlinx.android.synthetic.main.activity_inspection.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -69,7 +69,8 @@ import java.text.SimpleDateFormat import java.util.* -class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, Handler.Callback { +class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, + Handler.Callback { private val kTag = "InspectionActivity" private val context = this@InspectionActivity @@ -135,6 +136,10 @@ //甲烷浓度阈值 private var gasAlarmRule = 1000 + override fun initViewBinding(): ActivityInspectionBinding { + return ActivityInspectionBinding.inflate(layoutInflater) + } + /** * 协程配置云台设备,缓解新进页面较卡的问题 * */ @@ -164,7 +169,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -252,7 +257,7 @@ //速度 转为 km/h speed = decimalFormat.format(aMapLocation.speed * 3.6).toFloat() - carSpeedView.text = String.format("${speed}Km/h") + binding.carSpeedView.text = String.format("${speed}Km/h") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) latlngs.add(latLng) @@ -291,16 +296,16 @@ }, 3000, LocaleConstant.DATA_TIMER_PERIOD) //按钮点击效果 - executeAngleButton.setChangeAlphaWhenPress(true) - resetButton.setChangeAlphaWhenPress(true) - cleanCameraButton.setChangeAlphaWhenPress(true) - downscaleButton.setChangeAlphaWhenPress(true) - upscaleButton.setChangeAlphaWhenPress(true) + binding.executeAngleButton.setChangeAlphaWhenPress(true) + binding.resetButton.setChangeAlphaWhenPress(true) + binding.cleanCameraButton.setChangeAlphaWhenPress(true) + binding.downscaleButton.setChangeAlphaWhenPress(true) + binding.upscaleButton.setChangeAlphaWhenPress(true) } @SuppressLint("ClickableViewAccessibility") override fun initEvent() { - reconnectButton.setOnClickListener { + binding.reconnectButton.setOnClickListener { if (!isLoginSuccess) { setDeviceConfig() } else { @@ -308,13 +313,14 @@ } } - captureButton.setOnClickListener { + binding.captureButton.setOnClickListener { if (isPreviewSuccess) { captureImage(false) } } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { AlertControlDialog.Builder() @@ -395,14 +401,17 @@ hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) isActionUp = true } + SteeringWheelView.Direction.TOP -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) isActionUp = true } + SteeringWheelView.Direction.RIGHT -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) isActionUp = true } + SteeringWheelView.Direction.BOTTOM -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) isActionUp = true @@ -414,9 +423,9 @@ /** * 角度执行 * */ - executeAngleButton.setOnClickListener { - val hDegree = hDegreeView.text.toString().trim() - val vDegree = vDegreeView.text.toString().trim() + binding.executeAngleButton.setOnClickListener { + val hDegree = binding.hDegreeView.text.toString().trim() + val vDegree = binding.vDegreeView.text.toString().trim() if (hDegree.isEmpty() && vDegree.isEmpty()) { executeAngle(0f, 0f) } else { @@ -431,14 +440,14 @@ /** * 复位 * */ - resetButton.setOnClickListener { + binding.resetButton.setOnClickListener { executeAngle(0f, 0f) } /** * 清洁镜头 * */ - cleanCameraButton.setOnClickListener { + binding.cleanCameraButton.setOnClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 0) if (MessageCodeHub.getErrorCode() == 0) { @@ -452,7 +461,7 @@ /** * 长按关闭清洁镜头 * */ - cleanCameraButton.setOnLongClickListener { + binding.cleanCameraButton.setOnLongClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 1) if (MessageCodeHub.getErrorCode() == 0) { @@ -464,7 +473,7 @@ true } - downscaleButton.setOnTouchListener { _, event -> + binding.downscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -472,6 +481,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) @@ -480,7 +490,7 @@ true } - upscaleButton.setOnTouchListener { _, event -> + binding.upscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -488,6 +498,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) @@ -496,8 +507,8 @@ true } - speedSpinner.setSelection(6) - speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + binding.speedSpinner.setSelection(6) + binding.speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { @@ -510,8 +521,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_inspection - override fun observeRequestState() { taskViewModel.loadState.observe(this) { when (it) { @@ -521,6 +530,7 @@ "任务提交成功".show(this) finish() } + else -> { LoadingDialogHub.dismiss() //提交失败,弹窗重新提交 @@ -596,7 +606,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = selectStreamType strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -626,7 +636,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } @@ -754,7 +764,7 @@ super.onDestroy() stopPreview() BroadcastManager.obtainInstance(this).destroy(LocaleConstant.ACTION_UPDATE_DATA) - mapView.onDestroy() + binding.mapView.onDestroy() udpClient.release() SocketManager.instance.close() LocationHelper.get.stopLocation() @@ -780,16 +790,18 @@ ) if (dataModel != null) { - sensorStateView.text = dataModel!!.methaneState + binding.sensorStateView.text = dataModel!!.methaneState if (dataModel!!.methaneState == "正常") { - sensorStateView.setTextColor(Color.GREEN) + binding.sensorStateView.setTextColor(Color.GREEN) } else { - sensorStateView.setTextColor(Color.RED) + binding.sensorStateView.setTextColor(Color.RED) } val degree = resources.getString(R.string.degree) - horizontalDegreeView.text = String.format("${dataModel!!.horizontal}$degree") - verticalDegreeView.text = String.format("${dataModel!!.vertical}$degree") - gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") + binding.horizontalDegreeView.text = + String.format("${dataModel!!.horizontal}$degree") + binding.verticalDegreeView.text = + String.format("${dataModel!!.vertical}$degree") + binding.gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") //TODO 报警视频 if (dataModel!!.methane >= gasAlarmRule) { @@ -818,12 +830,12 @@ /***折线图**************************************************************************/ if (!initSuccess) { - methaneLineChart.init() + binding.methaneLineChart.init() //添加自定义Marker val markerView = LineChartMarkerView(context) - markerView.chartView = methaneLineChart + markerView.chartView = binding.methaneLineChart markerView.setXAxisDate(xAxisLabels) - methaneLineChart.marker = markerView + binding.methaneLineChart.marker = markerView initSuccess = true } @@ -854,16 +866,16 @@ lineData.removeDataSet(0) lineData.notifyDataChanged() } - methaneLineChart.data = lineData - methaneLineChart.invalidate() + binding.methaneLineChart.data = lineData + binding.methaneLineChart.invalidate() } } }, LocaleConstant.ACTION_UPDATE_DATA) } private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -881,23 +893,23 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() //配置预览SurfaceView - videoSurfaceView.holder.addCallback(this) - videoSurfaceView.setZOrderOnTop(true) + binding.videoSurfaceView.holder.addCallback(this) + binding.videoSurfaceView.setZOrderOnTop(true) val threshold = SaveKeyValues.getValue(LocaleConstant.ALARM_THRESHOLD, "1000") as String - alarmThresholdView.text = String.format("${threshold}ppm·m") + binding.alarmThresholdView.text = String.format("${threshold}ppm·m") //折线图初始化阈值线 - methaneLineChart.init() + binding.methaneLineChart.init() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt index ce1e9a2..def6b95 100644 --- a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.MapsInitializer import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityLoginBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -17,25 +18,29 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* import pub.devrel.easypermissions.EasyPermissions -class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class LoginActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel private lateinit var userName: String private lateinit var userPassword: String - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] authenticateViewModel.keyModel.observe(this) { keyModel -> @@ -65,13 +70,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userPhone = userNameView.text.toString() + binding.loginButton.setOnClickListener { + val userPhone = binding.userNameView.text.toString() if (userPhone.isBlank()) { "请输入用户名称".show(this) return@setOnClickListener } - val userPassword = passwordView.text.toString() + val userPassword = binding.passwordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener @@ -85,8 +90,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_login - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt index 4aa71b4..bbe494d 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt @@ -3,12 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.TaskAdapter +import com.casic.br.ktd.databinding.FragmentTaskBinding import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskListModel import com.casic.br.ktd.utils.LoadingDialogHub @@ -28,19 +30,8 @@ import com.pengxh.kt.lite.vm.LoadState import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction import com.qmuiteam.qmui.recyclerView.QMUISwipeAction -import kotlinx.android.synthetic.main.fragment_task.addTaskButton -import kotlinx.android.synthetic.main.fragment_task.calendarView -import kotlinx.android.synthetic.main.fragment_task.deleteTaskButton -import kotlinx.android.synthetic.main.fragment_task.emptyLayout -import kotlinx.android.synthetic.main.fragment_task.resetParamView -import kotlinx.android.synthetic.main.fragment_task.selectedDateView -import kotlinx.android.synthetic.main.fragment_task.taskCodeView -import kotlinx.android.synthetic.main.fragment_task.taskLayout -import kotlinx.android.synthetic.main.fragment_task.taskNameView -import kotlinx.android.synthetic.main.fragment_task.taskRecyclerView -import kotlinx.android.synthetic.main.fragment_task.taskSettingsButton -class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { +class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -56,7 +47,14 @@ private var endTime = "" private var deviceId = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTaskBinding { + return FragmentTaskBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.taskList.observe(this) { @@ -65,7 +63,7 @@ when { isRefresh -> { taskAdapter.setRefreshData(dataRows) - taskLayout.finishRefresh() + binding.taskLayout.finishRefresh() isRefresh = false } @@ -74,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } taskAdapter.setLoadMoreData(dataRows) - taskLayout.finishLoadMore() + binding.taskLayout.finishLoadMore() isLoadMore = false } @@ -101,15 +99,15 @@ when (msg.what) { 2023070501 -> { if (dataBeans.size == 0) { - taskLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.taskLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - taskLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.taskLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE taskAdapter = TaskAdapter(requireContext(), dataBeans) //绑定侧滑事件 - swipeAction.attachToRecyclerView(taskRecyclerView) - taskRecyclerView.adapter = taskAdapter + swipeAction.attachToRecyclerView(binding.taskRecyclerView) + binding.taskRecyclerView.adapter = taskAdapter taskAdapter.setOnItemCheckedListener(object : TaskAdapter.OnItemCheckedListener { override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) { @@ -191,7 +189,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -202,12 +200,12 @@ getTasksByPage(true) //显示 - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - taskNameView.setOnEditorActionListener { _, actionId, _ -> + binding.taskNameView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -215,7 +213,7 @@ false } - taskCodeView.setOnEditorActionListener { _, actionId, _ -> + binding.taskCodeView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -223,10 +221,10 @@ false } - resetParamView.setOnClickListener { - selectedDateView.text = "" - taskNameView.setText("") - taskCodeView.setText("") + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" + binding.taskNameView.setText("") + binding.taskCodeView.setText("") startTime = "" endTime = "" @@ -235,7 +233,7 @@ getTasksByPage(true) } - addTaskButton.setOnClickListener { + binding.addTaskButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("新建巡检任务") @@ -253,11 +251,11 @@ }).build().show() } - deleteTaskButton.setOnClickListener { + binding.deleteTaskButton.setOnClickListener { selectedItems.size.toString().show(requireContext()) } - taskSettingsButton.setOnClickListener { + binding.taskSettingsButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("设置阈值") @@ -279,12 +277,12 @@ }).build().show() } - taskLayout.setOnRefreshListener { + binding.taskLayout.setOnRefreshListener { isRefresh = true getTasksByPage(true) } - taskLayout.setOnLoadMoreListener { + binding.taskLayout.setOnLoadMoreListener { isLoadMore = true getTasksByPage(false) } @@ -299,14 +297,12 @@ taskViewModel.getTasksByPage( startTime, endTime, - taskNameView.text.toString(), - taskCodeView.text.toString(), + binding.taskNameView.text.toString(), + binding.taskCodeView.text.toString(), page ) } - override fun initLayoutView(): Int = R.layout.fragment_task - override fun observeRequestState() { alarmViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index 06f6272..b3146e7 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -25,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityInspectionBinding import com.casic.br.ktd.extensions.* import com.casic.br.ktd.model.AlarmParam import com.casic.br.ktd.model.ChartPointModel @@ -59,7 +60,6 @@ import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider -import kotlinx.android.synthetic.main.activity_inspection.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -69,7 +69,8 @@ import java.text.SimpleDateFormat import java.util.* -class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, Handler.Callback { +class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, + Handler.Callback { private val kTag = "InspectionActivity" private val context = this@InspectionActivity @@ -135,6 +136,10 @@ //甲烷浓度阈值 private var gasAlarmRule = 1000 + override fun initViewBinding(): ActivityInspectionBinding { + return ActivityInspectionBinding.inflate(layoutInflater) + } + /** * 协程配置云台设备,缓解新进页面较卡的问题 * */ @@ -164,7 +169,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -252,7 +257,7 @@ //速度 转为 km/h speed = decimalFormat.format(aMapLocation.speed * 3.6).toFloat() - carSpeedView.text = String.format("${speed}Km/h") + binding.carSpeedView.text = String.format("${speed}Km/h") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) latlngs.add(latLng) @@ -291,16 +296,16 @@ }, 3000, LocaleConstant.DATA_TIMER_PERIOD) //按钮点击效果 - executeAngleButton.setChangeAlphaWhenPress(true) - resetButton.setChangeAlphaWhenPress(true) - cleanCameraButton.setChangeAlphaWhenPress(true) - downscaleButton.setChangeAlphaWhenPress(true) - upscaleButton.setChangeAlphaWhenPress(true) + binding.executeAngleButton.setChangeAlphaWhenPress(true) + binding.resetButton.setChangeAlphaWhenPress(true) + binding.cleanCameraButton.setChangeAlphaWhenPress(true) + binding.downscaleButton.setChangeAlphaWhenPress(true) + binding.upscaleButton.setChangeAlphaWhenPress(true) } @SuppressLint("ClickableViewAccessibility") override fun initEvent() { - reconnectButton.setOnClickListener { + binding.reconnectButton.setOnClickListener { if (!isLoginSuccess) { setDeviceConfig() } else { @@ -308,13 +313,14 @@ } } - captureButton.setOnClickListener { + binding.captureButton.setOnClickListener { if (isPreviewSuccess) { captureImage(false) } } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { AlertControlDialog.Builder() @@ -395,14 +401,17 @@ hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) isActionUp = true } + SteeringWheelView.Direction.TOP -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) isActionUp = true } + SteeringWheelView.Direction.RIGHT -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) isActionUp = true } + SteeringWheelView.Direction.BOTTOM -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) isActionUp = true @@ -414,9 +423,9 @@ /** * 角度执行 * */ - executeAngleButton.setOnClickListener { - val hDegree = hDegreeView.text.toString().trim() - val vDegree = vDegreeView.text.toString().trim() + binding.executeAngleButton.setOnClickListener { + val hDegree = binding.hDegreeView.text.toString().trim() + val vDegree = binding.vDegreeView.text.toString().trim() if (hDegree.isEmpty() && vDegree.isEmpty()) { executeAngle(0f, 0f) } else { @@ -431,14 +440,14 @@ /** * 复位 * */ - resetButton.setOnClickListener { + binding.resetButton.setOnClickListener { executeAngle(0f, 0f) } /** * 清洁镜头 * */ - cleanCameraButton.setOnClickListener { + binding.cleanCameraButton.setOnClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 0) if (MessageCodeHub.getErrorCode() == 0) { @@ -452,7 +461,7 @@ /** * 长按关闭清洁镜头 * */ - cleanCameraButton.setOnLongClickListener { + binding.cleanCameraButton.setOnLongClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 1) if (MessageCodeHub.getErrorCode() == 0) { @@ -464,7 +473,7 @@ true } - downscaleButton.setOnTouchListener { _, event -> + binding.downscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -472,6 +481,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) @@ -480,7 +490,7 @@ true } - upscaleButton.setOnTouchListener { _, event -> + binding.upscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -488,6 +498,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) @@ -496,8 +507,8 @@ true } - speedSpinner.setSelection(6) - speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + binding.speedSpinner.setSelection(6) + binding.speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { @@ -510,8 +521,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_inspection - override fun observeRequestState() { taskViewModel.loadState.observe(this) { when (it) { @@ -521,6 +530,7 @@ "任务提交成功".show(this) finish() } + else -> { LoadingDialogHub.dismiss() //提交失败,弹窗重新提交 @@ -596,7 +606,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = selectStreamType strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -626,7 +636,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } @@ -754,7 +764,7 @@ super.onDestroy() stopPreview() BroadcastManager.obtainInstance(this).destroy(LocaleConstant.ACTION_UPDATE_DATA) - mapView.onDestroy() + binding.mapView.onDestroy() udpClient.release() SocketManager.instance.close() LocationHelper.get.stopLocation() @@ -780,16 +790,18 @@ ) if (dataModel != null) { - sensorStateView.text = dataModel!!.methaneState + binding.sensorStateView.text = dataModel!!.methaneState if (dataModel!!.methaneState == "正常") { - sensorStateView.setTextColor(Color.GREEN) + binding.sensorStateView.setTextColor(Color.GREEN) } else { - sensorStateView.setTextColor(Color.RED) + binding.sensorStateView.setTextColor(Color.RED) } val degree = resources.getString(R.string.degree) - horizontalDegreeView.text = String.format("${dataModel!!.horizontal}$degree") - verticalDegreeView.text = String.format("${dataModel!!.vertical}$degree") - gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") + binding.horizontalDegreeView.text = + String.format("${dataModel!!.horizontal}$degree") + binding.verticalDegreeView.text = + String.format("${dataModel!!.vertical}$degree") + binding.gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") //TODO 报警视频 if (dataModel!!.methane >= gasAlarmRule) { @@ -818,12 +830,12 @@ /***折线图**************************************************************************/ if (!initSuccess) { - methaneLineChart.init() + binding.methaneLineChart.init() //添加自定义Marker val markerView = LineChartMarkerView(context) - markerView.chartView = methaneLineChart + markerView.chartView = binding.methaneLineChart markerView.setXAxisDate(xAxisLabels) - methaneLineChart.marker = markerView + binding.methaneLineChart.marker = markerView initSuccess = true } @@ -854,16 +866,16 @@ lineData.removeDataSet(0) lineData.notifyDataChanged() } - methaneLineChart.data = lineData - methaneLineChart.invalidate() + binding.methaneLineChart.data = lineData + binding.methaneLineChart.invalidate() } } }, LocaleConstant.ACTION_UPDATE_DATA) } private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -881,23 +893,23 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() //配置预览SurfaceView - videoSurfaceView.holder.addCallback(this) - videoSurfaceView.setZOrderOnTop(true) + binding.videoSurfaceView.holder.addCallback(this) + binding.videoSurfaceView.setZOrderOnTop(true) val threshold = SaveKeyValues.getValue(LocaleConstant.ALARM_THRESHOLD, "1000") as String - alarmThresholdView.text = String.format("${threshold}ppm·m") + binding.alarmThresholdView.text = String.format("${threshold}ppm·m") //折线图初始化阈值线 - methaneLineChart.init() + binding.methaneLineChart.init() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt index ce1e9a2..def6b95 100644 --- a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.MapsInitializer import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityLoginBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -17,25 +18,29 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* import pub.devrel.easypermissions.EasyPermissions -class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class LoginActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel private lateinit var userName: String private lateinit var userPassword: String - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] authenticateViewModel.keyModel.observe(this) { keyModel -> @@ -65,13 +70,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userPhone = userNameView.text.toString() + binding.loginButton.setOnClickListener { + val userPhone = binding.userNameView.text.toString() if (userPhone.isBlank()) { "请输入用户名称".show(this) return@setOnClickListener } - val userPassword = passwordView.text.toString() + val userPassword = binding.passwordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener @@ -85,8 +90,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_login - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index e5c1fc8..bce4c24 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -14,6 +14,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityMainBinding import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment @@ -26,9 +27,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() @@ -56,9 +56,13 @@ fragmentPages.add(MinePageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - slideListView.adapter = slideAdapter + binding.slideListView.adapter = slideAdapter //默认选中第一个 slideAdapter.setSelectItem(0) @@ -97,7 +101,7 @@ } override fun initEvent() { - slideListView.setOnItemClickListener { _, _, position, _ -> + binding.slideListView.setOnItemClickListener { _, _, position, _ -> slideAdapter.setSelectItem(position) slideAdapter.notifyDataSetInvalidated() @@ -112,8 +116,6 @@ transition.commit() } - override fun initLayoutView(): Int = R.layout.activity_main - override fun observeRequestState() { } diff --git a/app/build.gradle b/app/build.gradle index 1fe941b..e57c26f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 33 @@ -46,6 +45,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -65,7 +65,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 diff --git a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt index 1597942..00d90c2 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/AlarmPageFragment.kt @@ -3,24 +3,20 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.AlarmAdapter +import com.casic.br.ktd.databinding.FragmentAlarmBinding import com.casic.br.ktd.model.AlarmListModel import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_alarm.alarmLayout -import kotlinx.android.synthetic.main.fragment_alarm.alarmRecyclerView -import kotlinx.android.synthetic.main.fragment_alarm.calendarView -import kotlinx.android.synthetic.main.fragment_alarm.emptyLayout -import kotlinx.android.synthetic.main.fragment_alarm.resetParamView -import kotlinx.android.synthetic.main.fragment_alarm.selectedDateView -class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { +class AlarmPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -33,7 +29,14 @@ private var startTime = "" private var endTime = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentAlarmBinding { + return FragmentAlarmBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] @@ -43,7 +46,7 @@ when { isRefresh -> { alarmAdapter.setRefreshData(dataRows) - alarmLayout.finishRefresh() + binding.alarmLayout.finishRefresh() isRefresh = false } @@ -52,7 +55,7 @@ "到底了,别拉了".show(requireContext()) } alarmAdapter.setLoadMoreData(dataRows) - alarmLayout.finishLoadMore() + binding.alarmLayout.finishLoadMore() isLoadMore = false } @@ -66,7 +69,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -76,13 +79,13 @@ //条件查询 getAlarmsByPage(true) - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - resetParamView.setOnClickListener { - selectedDateView.text = "" + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" startTime = "" endTime = "" @@ -91,12 +94,12 @@ getAlarmsByPage(true) } - alarmLayout.setOnRefreshListener { + binding.alarmLayout.setOnRefreshListener { isRefresh = true getAlarmsByPage(true) } - alarmLayout.setOnLoadMoreListener { + binding.alarmLayout.setOnLoadMoreListener { isLoadMore = true getAlarmsByPage(false) } @@ -122,13 +125,13 @@ when (msg.what) { 2023072901 -> { if (dataBeans.size == 0) { - alarmLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.alarmLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - alarmLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.alarmLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE alarmAdapter = AlarmAdapter(requireContext(), dataBeans) - alarmRecyclerView.adapter = alarmAdapter + binding.alarmRecyclerView.adapter = alarmAdapter alarmAdapter.setOnItemCheckedListener(object : AlarmAdapter.OnItemClickedListener { override fun onItemClicked(item: AlarmListModel.DataModel.RowsModel) { @@ -145,7 +148,6 @@ return true } - override fun initLayoutView(): Int = R.layout.fragment_alarm override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index 8547417..40b27b1 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -2,6 +2,8 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -11,16 +13,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentHomeBinding import com.pengxh.kt.lite.base.KotlinBaseFragment -import kotlinx.android.synthetic.main.fragment_home.mapView -class HomePageFragment : KotlinBaseFragment() { +class HomePageFragment : KotlinBaseFragment() { + + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) + } private lateinit var aMap: AMap - override fun initData(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.isMyLocationButtonEnabled = false @@ -60,7 +69,6 @@ ) } - override fun initLayoutView(): Int = R.layout.fragment_home override fun observeRequestState() { @@ -81,21 +89,21 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index 448c89d..dcbd65c 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -2,8 +2,10 @@ import android.os.Bundle import android.os.Environment +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.FragmentMineBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -21,21 +23,21 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.fragment_mine.carNumberView -import kotlinx.android.synthetic.main.fragment_mine.changePwdView -import kotlinx.android.synthetic.main.fragment_mine.clearCacheView -import kotlinx.android.synthetic.main.fragment_mine.loginOutButton -import kotlinx.android.synthetic.main.fragment_mine.userNameView -import kotlinx.android.synthetic.main.fragment_mine.userRoleView import java.io.File import java.nio.charset.StandardCharsets -class MinePageFragment : KotlinBaseFragment() { +class MinePageFragment : KotlinBaseFragment() { private lateinit var userViewModel: UserViewModel private lateinit var rootDir: File - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentMineBinding { + return FragmentMineBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { //缓存根目录 rootDir = File(requireContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "") @@ -64,7 +66,7 @@ } userViewModel.userInfo.observe(this) { if (it.code == 200) { - userNameView.text = it.data.name + binding.userNameView.text = it.data.name val userRoleBuilder = StringBuilder() it.data.roleNames.forEachIndexed { index, role -> @@ -74,13 +76,13 @@ userRoleBuilder.append(role).append(",") } } - userRoleView.text = userRoleBuilder.toString() + binding.userRoleView.text = userRoleBuilder.toString() } } } override fun initEvent() { - loginOutButton.setOnClickListener { + binding.loginOutButton.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -97,7 +99,7 @@ }).build().show() } - changePwdView.setOnClickListener { + binding.changePwdView.setOnClickListener { val oldPwd = SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String ChangePasswordDialog.Builder() .setContext(requireContext()) @@ -118,7 +120,7 @@ }).build().show() } - clearCacheView.setOnClickListener { + binding.clearCacheView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("清除缓存") @@ -129,7 +131,7 @@ AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { rootDir.deleteFile() - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } override fun onCancelClick() {} @@ -137,8 +139,6 @@ } } - override fun initLayoutView(): Int = R.layout.fragment_mine - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { @@ -157,9 +157,9 @@ userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String - carNumberView.text = value + binding.carNumberView.text = value //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 - clearCacheView.text = rootDir.calculateSize().formatFileSize() + binding.clearCacheView.text = rootDir.calculateSize().formatFileSize() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt index 4aa71b4..bbe494d 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt @@ -3,12 +3,14 @@ import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.view.inputmethod.EditorInfo import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.RecyclerView -import com.casic.br.ktd.R import com.casic.br.ktd.adapter.TaskAdapter +import com.casic.br.ktd.databinding.FragmentTaskBinding import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskListModel import com.casic.br.ktd.utils.LoadingDialogHub @@ -28,19 +30,8 @@ import com.pengxh.kt.lite.vm.LoadState import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction import com.qmuiteam.qmui.recyclerView.QMUISwipeAction -import kotlinx.android.synthetic.main.fragment_task.addTaskButton -import kotlinx.android.synthetic.main.fragment_task.calendarView -import kotlinx.android.synthetic.main.fragment_task.deleteTaskButton -import kotlinx.android.synthetic.main.fragment_task.emptyLayout -import kotlinx.android.synthetic.main.fragment_task.resetParamView -import kotlinx.android.synthetic.main.fragment_task.selectedDateView -import kotlinx.android.synthetic.main.fragment_task.taskCodeView -import kotlinx.android.synthetic.main.fragment_task.taskLayout -import kotlinx.android.synthetic.main.fragment_task.taskNameView -import kotlinx.android.synthetic.main.fragment_task.taskRecyclerView -import kotlinx.android.synthetic.main.fragment_task.taskSettingsButton -class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { +class TaskPageFragment : KotlinBaseFragment(), Handler.Callback { private val kTag = "TaskPageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -56,7 +47,14 @@ private var endTime = "" private var deviceId = "" - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTaskBinding { + return FragmentTaskBinding.inflate(inflater, container, false) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskViewModel.taskList.observe(this) { @@ -65,7 +63,7 @@ when { isRefresh -> { taskAdapter.setRefreshData(dataRows) - taskLayout.finishRefresh() + binding.taskLayout.finishRefresh() isRefresh = false } @@ -74,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } taskAdapter.setLoadMoreData(dataRows) - taskLayout.finishLoadMore() + binding.taskLayout.finishLoadMore() isLoadMore = false } @@ -101,15 +99,15 @@ when (msg.what) { 2023070501 -> { if (dataBeans.size == 0) { - taskLayout.visibility = View.GONE - emptyLayout.visibility = View.VISIBLE + binding.taskLayout.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE } else { - taskLayout.visibility = View.VISIBLE - emptyLayout.visibility = View.GONE + binding.taskLayout.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE taskAdapter = TaskAdapter(requireContext(), dataBeans) //绑定侧滑事件 - swipeAction.attachToRecyclerView(taskRecyclerView) - taskRecyclerView.adapter = taskAdapter + swipeAction.attachToRecyclerView(binding.taskRecyclerView) + binding.taskRecyclerView.adapter = taskAdapter taskAdapter.setOnItemCheckedListener(object : TaskAdapter.OnItemCheckedListener { override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) { @@ -191,7 +189,7 @@ } override fun initEvent() { - calendarView.setOnClickListener { + binding.calendarView.setOnClickListener { DateRangeActionSheet.Builder().setContext(requireContext()) .setOnActionSheetListener(object : DateRangeActionSheet.OnDateRangeSelectedListener { @@ -202,12 +200,12 @@ getTasksByPage(true) //显示 - selectedDateView.text = "$startDate ~ $endDate" + binding.selectedDateView.text = "$startDate ~ $endDate" } }).build().show() } - taskNameView.setOnEditorActionListener { _, actionId, _ -> + binding.taskNameView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -215,7 +213,7 @@ false } - taskCodeView.setOnEditorActionListener { _, actionId, _ -> + binding.taskCodeView.setOnEditorActionListener { _, actionId, _ -> if (actionId == EditorInfo.IME_ACTION_SEARCH) { getTasksByPage(true) } @@ -223,10 +221,10 @@ false } - resetParamView.setOnClickListener { - selectedDateView.text = "" - taskNameView.setText("") - taskCodeView.setText("") + binding.resetParamView.setOnClickListener { + binding.selectedDateView.text = "" + binding.taskNameView.setText("") + binding.taskCodeView.setText("") startTime = "" endTime = "" @@ -235,7 +233,7 @@ getTasksByPage(true) } - addTaskButton.setOnClickListener { + binding.addTaskButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("新建巡检任务") @@ -253,11 +251,11 @@ }).build().show() } - deleteTaskButton.setOnClickListener { + binding.deleteTaskButton.setOnClickListener { selectedItems.size.toString().show(requireContext()) } - taskSettingsButton.setOnClickListener { + binding.taskSettingsButton.setOnClickListener { AlertInputDialog.Builder() .setContext(requireContext()) .setTitle("设置阈值") @@ -279,12 +277,12 @@ }).build().show() } - taskLayout.setOnRefreshListener { + binding.taskLayout.setOnRefreshListener { isRefresh = true getTasksByPage(true) } - taskLayout.setOnLoadMoreListener { + binding.taskLayout.setOnLoadMoreListener { isLoadMore = true getTasksByPage(false) } @@ -299,14 +297,12 @@ taskViewModel.getTasksByPage( startTime, endTime, - taskNameView.text.toString(), - taskCodeView.text.toString(), + binding.taskNameView.text.toString(), + binding.taskCodeView.text.toString(), page ) } - override fun initLayoutView(): Int = R.layout.fragment_task - override fun observeRequestState() { alarmViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index 06f6272..b3146e7 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -25,6 +25,7 @@ import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityInspectionBinding import com.casic.br.ktd.extensions.* import com.casic.br.ktd.model.AlarmParam import com.casic.br.ktd.model.ChartPointModel @@ -59,7 +60,6 @@ import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider -import kotlinx.android.synthetic.main.activity_inspection.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -69,7 +69,8 @@ import java.text.SimpleDateFormat import java.util.* -class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, Handler.Callback { +class InspectionActivity : KotlinBaseActivity(), SurfaceHolder.Callback, + Handler.Callback { private val kTag = "InspectionActivity" private val context = this@InspectionActivity @@ -135,6 +136,10 @@ //甲烷浓度阈值 private var gasAlarmRule = 1000 + override fun initViewBinding(): ActivityInspectionBinding { + return ActivityInspectionBinding.inflate(layoutInflater) + } + /** * 协程配置云台设备,缓解新进页面较卡的问题 * */ @@ -164,7 +169,7 @@ } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] @@ -252,7 +257,7 @@ //速度 转为 km/h speed = decimalFormat.format(aMapLocation.speed * 3.6).toFloat() - carSpeedView.text = String.format("${speed}Km/h") + binding.carSpeedView.text = String.format("${speed}Km/h") val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) latlngs.add(latLng) @@ -291,16 +296,16 @@ }, 3000, LocaleConstant.DATA_TIMER_PERIOD) //按钮点击效果 - executeAngleButton.setChangeAlphaWhenPress(true) - resetButton.setChangeAlphaWhenPress(true) - cleanCameraButton.setChangeAlphaWhenPress(true) - downscaleButton.setChangeAlphaWhenPress(true) - upscaleButton.setChangeAlphaWhenPress(true) + binding.executeAngleButton.setChangeAlphaWhenPress(true) + binding.resetButton.setChangeAlphaWhenPress(true) + binding.cleanCameraButton.setChangeAlphaWhenPress(true) + binding.downscaleButton.setChangeAlphaWhenPress(true) + binding.upscaleButton.setChangeAlphaWhenPress(true) } @SuppressLint("ClickableViewAccessibility") override fun initEvent() { - reconnectButton.setOnClickListener { + binding.reconnectButton.setOnClickListener { if (!isLoginSuccess) { setDeviceConfig() } else { @@ -308,13 +313,14 @@ } } - captureButton.setOnClickListener { + binding.captureButton.setOnClickListener { if (isPreviewSuccess) { captureImage(false) } } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { AlertControlDialog.Builder() @@ -395,14 +401,17 @@ hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_LEFT, 1) isActionUp = true } + SteeringWheelView.Direction.TOP -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_UP, 1) isActionUp = true } + SteeringWheelView.Direction.RIGHT -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.PAN_RIGHT, 1) isActionUp = true } + SteeringWheelView.Direction.BOTTOM -> { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.TILT_DOWN, 1) isActionUp = true @@ -414,9 +423,9 @@ /** * 角度执行 * */ - executeAngleButton.setOnClickListener { - val hDegree = hDegreeView.text.toString().trim() - val vDegree = vDegreeView.text.toString().trim() + binding.executeAngleButton.setOnClickListener { + val hDegree = binding.hDegreeView.text.toString().trim() + val vDegree = binding.vDegreeView.text.toString().trim() if (hDegree.isEmpty() && vDegree.isEmpty()) { executeAngle(0f, 0f) } else { @@ -431,14 +440,14 @@ /** * 复位 * */ - resetButton.setOnClickListener { + binding.resetButton.setOnClickListener { executeAngle(0f, 0f) } /** * 清洁镜头 * */ - cleanCameraButton.setOnClickListener { + binding.cleanCameraButton.setOnClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 0) if (MessageCodeHub.getErrorCode() == 0) { @@ -452,7 +461,7 @@ /** * 长按关闭清洁镜头 * */ - cleanCameraButton.setOnLongClickListener { + binding.cleanCameraButton.setOnLongClickListener { if (isPreviewSuccess) { hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.WIPER_PWRON, 1) if (MessageCodeHub.getErrorCode() == 0) { @@ -464,7 +473,7 @@ true } - downscaleButton.setOnTouchListener { _, event -> + binding.downscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -472,6 +481,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_OUT, 1) @@ -480,7 +490,7 @@ true } - upscaleButton.setOnTouchListener { _, event -> + binding.upscaleButton.setOnTouchListener { _, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (isPreviewSuccess && isScaleButtonUp) { @@ -488,6 +498,7 @@ isScaleButtonUp = false } } + MotionEvent.ACTION_UP -> { isScaleButtonUp = true hkSDK.NET_DVR_PTZControl(previewHandle, PTZCommand.ZOOM_IN, 1) @@ -496,8 +507,8 @@ true } - speedSpinner.setSelection(6) - speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + binding.speedSpinner.setSelection(6) + binding.speedSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { @@ -510,8 +521,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_inspection - override fun observeRequestState() { taskViewModel.loadState.observe(this) { when (it) { @@ -521,6 +530,7 @@ "任务提交成功".show(this) finish() } + else -> { LoadingDialogHub.dismiss() //提交失败,弹窗重新提交 @@ -596,7 +606,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = selectStreamType strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.sdkGuider.devPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -626,7 +636,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } @@ -754,7 +764,7 @@ super.onDestroy() stopPreview() BroadcastManager.obtainInstance(this).destroy(LocaleConstant.ACTION_UPDATE_DATA) - mapView.onDestroy() + binding.mapView.onDestroy() udpClient.release() SocketManager.instance.close() LocationHelper.get.stopLocation() @@ -780,16 +790,18 @@ ) if (dataModel != null) { - sensorStateView.text = dataModel!!.methaneState + binding.sensorStateView.text = dataModel!!.methaneState if (dataModel!!.methaneState == "正常") { - sensorStateView.setTextColor(Color.GREEN) + binding.sensorStateView.setTextColor(Color.GREEN) } else { - sensorStateView.setTextColor(Color.RED) + binding.sensorStateView.setTextColor(Color.RED) } val degree = resources.getString(R.string.degree) - horizontalDegreeView.text = String.format("${dataModel!!.horizontal}$degree") - verticalDegreeView.text = String.format("${dataModel!!.vertical}$degree") - gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") + binding.horizontalDegreeView.text = + String.format("${dataModel!!.horizontal}$degree") + binding.verticalDegreeView.text = + String.format("${dataModel!!.vertical}$degree") + binding.gasConcentrationView.text = String.format("${dataModel!!.methane}ppm·m") //TODO 报警视频 if (dataModel!!.methane >= gasAlarmRule) { @@ -818,12 +830,12 @@ /***折线图**************************************************************************/ if (!initSuccess) { - methaneLineChart.init() + binding.methaneLineChart.init() //添加自定义Marker val markerView = LineChartMarkerView(context) - markerView.chartView = methaneLineChart + markerView.chartView = binding.methaneLineChart markerView.setXAxisDate(xAxisLabels) - methaneLineChart.marker = markerView + binding.methaneLineChart.marker = markerView initSuccess = true } @@ -854,16 +866,16 @@ lineData.removeDataSet(0) lineData.notifyDataChanged() } - methaneLineChart.data = lineData - methaneLineChart.invalidate() + binding.methaneLineChart.data = lineData + binding.methaneLineChart.invalidate() } } }, LocaleConstant.ACTION_UPDATE_DATA) } private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -881,23 +893,23 @@ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() //配置预览SurfaceView - videoSurfaceView.holder.addCallback(this) - videoSurfaceView.setZOrderOnTop(true) + binding.videoSurfaceView.holder.addCallback(this) + binding.videoSurfaceView.setZOrderOnTop(true) val threshold = SaveKeyValues.getValue(LocaleConstant.ALARM_THRESHOLD, "1000") as String - alarmThresholdView.text = String.format("${threshold}ppm·m") + binding.alarmThresholdView.text = String.format("${threshold}ppm·m") //折线图初始化阈值线 - methaneLineChart.init() + binding.methaneLineChart.init() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt index ce1e9a2..def6b95 100644 --- a/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/LoginActivity.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.MapsInitializer import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityLoginBinding import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant @@ -17,25 +18,29 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* import pub.devrel.easypermissions.EasyPermissions -class LoginActivity : KotlinBaseActivity(), EasyPermissions.PermissionCallbacks { +class LoginActivity : KotlinBaseActivity(), + EasyPermissions.PermissionCallbacks { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel private lateinit var userName: String private lateinit var userPassword: String - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS ) - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.passwordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] authenticateViewModel.keyModel.observe(this) { keyModel -> @@ -65,13 +70,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userPhone = userNameView.text.toString() + binding.loginButton.setOnClickListener { + val userPhone = binding.userNameView.text.toString() if (userPhone.isBlank()) { "请输入用户名称".show(this) return@setOnClickListener } - val userPassword = passwordView.text.toString() + val userPassword = binding.passwordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener @@ -85,8 +90,6 @@ } } - override fun initLayoutView(): Int = R.layout.activity_login - override fun observeRequestState() { userViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index e5c1fc8..bce4c24 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -14,6 +14,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.ActivityMainBinding import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment @@ -26,9 +27,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() @@ -56,9 +56,13 @@ fragmentPages.add(MinePageFragment()) } - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) - slideListView.adapter = slideAdapter + binding.slideListView.adapter = slideAdapter //默认选中第一个 slideAdapter.setSelectItem(0) @@ -97,7 +101,7 @@ } override fun initEvent() { - slideListView.setOnItemClickListener { _, _, position, _ -> + binding.slideListView.setOnItemClickListener { _, _, position, _ -> slideAdapter.setSelectItem(position) slideAdapter.notifyDataSetInvalidated() @@ -112,8 +116,6 @@ transition.commit() } - override fun initLayoutView(): Int = R.layout.activity_main - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/br/ktd/widgets/AlertControlDialog.kt b/app/src/main/java/com/casic/br/ktd/widgets/AlertControlDialog.kt index 0a6773d..b759743 100644 --- a/app/src/main/java/com/casic/br/ktd/widgets/AlertControlDialog.kt +++ b/app/src/main/java/com/casic/br/ktd/widgets/AlertControlDialog.kt @@ -3,9 +3,9 @@ import android.app.Dialog import android.content.Context import android.os.Bundle -import android.widget.Button -import android.widget.TextView import com.casic.br.ktd.R +import com.casic.br.ktd.databinding.DialogAlertBinding +import com.pengxh.kt.lite.extensions.binding import com.pengxh.kt.lite.extensions.initDialogLayoutParams class AlertControlDialog private constructor(builder: Builder) : Dialog( @@ -60,6 +60,8 @@ } } + private val binding: DialogAlertBinding by binding() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.initDialogLayoutParams(0.3f) @@ -70,27 +72,23 @@ } private fun initView() { - val dialogTitleView: TextView = findViewById(R.id.dialogTitleView) - val dialogMessageView: TextView = findViewById(R.id.dialogMessageView) - val dialogCancelButton = findViewById