diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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 d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/build.gradle b/app/build.gradle index d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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 d3ec387..9b32fed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/OperationSite/app/OperationSite.jks') + storeFile file('OperationSite.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' @@ -54,6 +53,7 @@ coroutines 'enable' } } + viewBinding { enabled true } @@ -73,7 +73,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' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1a68ec..cde8f45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,7 @@ + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + + android:value="d26ed926cccc5042898237679d65ae26" /> () { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_completed + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentCompletedBinding { + return FragmentCompletedBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - completedRefreshLayout.finishRefresh() + binding.completedRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - completedRefreshLayout.finishLoadMore() + binding.completedRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { + binding.completedRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - completedRefreshLayout.setOnLoadMoreListener { + binding.completedRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071502) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -155,10 +159,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - completedRecyclerView.addItemDecoration( + binding.completedRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - completedRecyclerView.adapter = workingListAdapter + binding.completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index e927d86..a1776fb 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentNotStartBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,11 +29,8 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView -import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class NotStartFragment : KotlinBaseFragment() { +class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -44,13 +44,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_not_start + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentNotStartBinding { + return FragmentNotStartBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -59,7 +63,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - notStartRefreshLayout.finishRefresh() + binding.notStartRefreshLayout.finishRefresh() isRefresh = false } @@ -68,7 +72,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - notStartRefreshLayout.finishLoadMore() + binding.notStartRefreshLayout.finishLoadMore() isLoadMore = false } @@ -104,13 +108,13 @@ } override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { + binding.notStartRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - notStartRefreshLayout.setOnLoadMoreListener { + binding.notStartRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -124,12 +128,12 @@ private val callback = Handler.Callback { if (it.what == 2022071501) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView.addItemDecoration( + binding.notStartRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - notStartRecyclerView.adapter = workingListAdapter + binding.notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index dcb240c..09a5e1b 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,8 +5,11 @@ import android.content.Intent import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.FragmentWorkingBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel @@ -26,12 +29,9 @@ import com.pengxh.kt.lite.utils.BroadcastManager import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView -import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout -import kotlinx.android.synthetic.main.include_empty_view.emptyView -class WorkingFragment : KotlinBaseFragment() { +class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workingListAdapter: NormalRecyclerAdapter @@ -45,13 +45,17 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.fragment_working + override fun initViewBinding( + inflater: LayoutInflater, container: ViewGroup? + ): FragmentWorkingBinding { + return FragmentWorkingBinding.inflate(inflater, container, false) + } override fun setupTopBarLayout() { } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] workSiteViewModel.worksiteModel.observe(this) { @@ -60,7 +64,7 @@ when { isRefresh -> { workingListAdapter.setRefreshData(dataRows) - workingRefreshLayout.finishRefresh() + binding.workingRefreshLayout.finishRefresh() isRefresh = false } @@ -69,7 +73,7 @@ "到底了,别拉了".show(requireContext()) } workingListAdapter.setLoadMoreData(dataRows) - workingRefreshLayout.finishLoadMore() + binding.workingRefreshLayout.finishLoadMore() isLoadMore = false } @@ -105,13 +109,13 @@ } override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { + binding.workingRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainProjectListByPage() } - workingRefreshLayout.setOnLoadMoreListener { + binding.workingRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainProjectListByPage() @@ -125,12 +129,12 @@ private val callback = Handler.Callback { if (it.what == 2022071101) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() workingListAdapter = object : NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans @@ -156,10 +160,10 @@ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - workingRecyclerView.addItemDecoration( + binding.workingRecyclerView.addItemDecoration( ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) - workingRecyclerView.adapter = workingListAdapter + binding.workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt index d412a6f..f45c28e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmDetailActivity.kt @@ -13,6 +13,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmDetailBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.LoadingDialogHub @@ -21,30 +22,30 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class AlarmDetailActivity : KotlinBaseActivity() { +class AlarmDetailActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var alarmViewModel: AlarmViewModel private lateinit var id: String - override fun initLayoutView(): Int = R.layout.activity_alarm_detail + override fun initViewBinding(): ActivityAlarmDetailBinding { + return ActivityAlarmDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -96,9 +97,9 @@ Glide.with(this) .load(detailData.illegalAvatar.combineImagePath()) .apply(RequestOptions().placeholder(R.mipmap.load_image_error)) - .into(avatarView) - timeView.text = detailData.createTime - descriptionView.text = detailData.alarmDescription + .into(binding.avatarView) + binding.timeView.text = detailData.createTime + binding.descriptionView.text = detailData.alarmDescription } } } @@ -114,26 +115,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 2a25cd0..a601bde 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityAlarmListBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.formatToDate import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -23,11 +24,8 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_list.* -import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.android.synthetic.main.include_search_title.* -class AlarmListActivity : KotlinBaseActivity() { +class AlarmListActivity : KotlinBaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var alarmListAdapter: NormalRecyclerAdapter @@ -38,22 +36,24 @@ private var isLoadMore = false private var keywords = "" - override fun initLayoutView(): Int = R.layout.activity_alarm_list + override fun initViewBinding(): ActivityAlarmListBinding { + return ActivityAlarmListBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { - keywords = searchInputView.text.toString() + binding.titleInclude.searchTextView.setOnClickListener { + keywords = binding.titleInclude.searchInputView.text.toString() pageIndex = 1 obtainAlarmListByPage() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } @@ -75,13 +75,13 @@ } override fun initEvent() { - alarmRefreshLayout.setOnRefreshListener { + binding.alarmRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainAlarmListByPage() } - alarmRefreshLayout.setOnLoadMoreListener { + binding.alarmRefreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainAlarmListByPage() @@ -93,17 +93,19 @@ when { isRefresh -> { alarmListAdapter.setRefreshData(dataRows) - alarmRefreshLayout.finishRefresh() + binding.alarmRefreshLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows.size == 0) { "到底了,别拉了".show(this) } alarmListAdapter.setLoadMoreData(dataRows) - alarmRefreshLayout.finishLoadMore() + binding.alarmRefreshLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows weakReferenceHandler.sendEmptyMessage(2022071201) @@ -120,12 +122,12 @@ private val callback = Handler.Callback { if (it.what == 2022071201) { if (dataBeans.size == 0) { - emptyView.showEmptyPage { + binding.emptyInclude.emptyView.showEmptyPage { pageIndex = 1 obtainAlarmListByPage() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() alarmListAdapter = object : NormalRecyclerAdapter( R.layout.item_alarm_rv_l, dataBeans @@ -168,10 +170,10 @@ } } } - alarmRecyclerView.addItemDecoration( + binding.alarmRecyclerView.addItemDecoration( DividerItemDecoration(this, DividerItemDecoration.VERTICAL) ) - alarmRecyclerView.adapter = alarmListAdapter + binding.alarmRecyclerView.adapter = alarmListAdapter alarmListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index f538396..9e665a5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityApplyEnterBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -30,11 +31,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_apply_enter.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class ApplyEnterActivity : KotlinBaseActivity() { +class ApplyEnterActivity : KotlinBaseActivity() { private val kTag = "ApplyEnterActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -45,25 +44,27 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_apply_enter + override fun initViewBinding(): ActivityApplyEnterBinding { + return ActivityApplyEnterBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "人员信息" + binding.titleInclude. leftBackView.setOnClickListener { finish() } + binding.titleInclude. titleView.text = "人员信息" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! uploadFileViewModel = ViewModelProvider(this)[UploadFileViewModel::class.java] applyViewModel = ViewModelProvider(this)[ApplyViewModel::class.java] imageAdapter = EditableImageAdapter(this, 1, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } /** @@ -104,20 +105,20 @@ } override fun initEvent() { - genderView.setOnClickListener { + binding.genderView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(LocaleConstant.GENDER) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - genderView.text = LocaleConstant.GENDER[position] + binding.genderView.text = LocaleConstant.GENDER[position] } }) .build().show() } - enterReasonView.addTextChangedListener(object : TextWatcher { + binding.enterReasonView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -129,12 +130,12 @@ @SuppressLint("SetTextI18n") override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = "${text.length}/100" + binding.inputLengthView.text = "${text.length}/100" if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "入场原因不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) @@ -187,28 +188,28 @@ } } - confirmApplyButton.setOnClickListener { - if (workerNameView.text.isNullOrBlank()) { + binding.confirmApplyButton.setOnClickListener { + if (binding.workerNameView.text.isNullOrBlank()) { "请输入入场人员姓名".show(this) return@setOnClickListener } - if (ownerShipView.text.isNullOrBlank()) { + if (binding.ownerShipView.text.isNullOrBlank()) { "请输入入场人员单位名称".show(this) return@setOnClickListener } - if (phoneNumberView.text.isNullOrBlank()) { + if (binding.phoneNumberView.text.isNullOrBlank()) { "请输入入场人员联系方式".show(this) return@setOnClickListener } - if (!phoneNumberView.text.toString().isPhoneNumber()) { + if (!binding.phoneNumberView.text.toString().isPhoneNumber()) { "请输入正确的联系方式".show(this) return@setOnClickListener } - if (idCardView.text.isNullOrBlank()) { + if (binding.idCardView.text.isNullOrBlank()) { "请输入入场人员身份证号".show(this) return@setOnClickListener } @@ -218,19 +219,19 @@ projectId, "2", "", - ownerShipView.text.toString(), + binding.ownerShipView.text.toString(), "", currentTime, "", - genderView.text.toString(), - enterReasonView.text.toString(), - phoneNumberView.text.toString(), + binding.genderView.text.toString(), + binding.enterReasonView.text.toString(), + binding.phoneNumberView.text.toString(), currentTime, imagePaths[0], - idCardView.text.toString(), + binding.idCardView.text.toString(), "", "", - workerNameView.text.toString(), + binding.workerNameView.text.toString(), "0", "" ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt index 7cf446c..a2d3dcf 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt @@ -11,22 +11,24 @@ import androidx.viewpager.widget.ViewPager import com.bumptech.glide.Glide import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : KotlinBaseActivity() { +class BigImageActivity : KotlinBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_big_image + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmerseStatusBarUtil.setColor(this, Color.BLACK) - leftBackView.setOnClickListener { finish() } + binding.leftBackView.setOnClickListener { finish() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -41,18 +43,19 @@ return } val imageSize = urls.size - pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") - imagePagerView.adapter = BigImageAdapter(this, urls) - imagePagerView.currentItem = index - imagePagerView.offscreenPageLimit = imageSize - imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.offscreenPageLimit = imageSize + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, positionOffset: Float, positionOffsetPixels: Int ) { } override fun onPageSelected(position: Int) { - pageNumberView.text = String.format("(" + (position + 1) + "/" + imageSize + ")") + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") } override fun onPageScrollStateChanged(state: Int) {} diff --git a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt index 9ba963c..54258e7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/FaceDetectActivity.kt @@ -17,6 +17,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider import androidx.core.content.ContextCompat import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityFaceDetectBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.google.common.util.concurrent.ListenableFuture import com.gyf.immersionbar.ImmersionBar @@ -25,8 +26,6 @@ import com.pengxh.kt.lite.extensions.setScreenBrightness import com.pengxh.kt.lite.extensions.toBitmap import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_face_detect.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File import java.io.IOException import java.text.SimpleDateFormat @@ -35,7 +34,7 @@ import kotlin.math.abs -class FaceDetectActivity : KotlinBaseActivity() { +class FaceDetectActivity : KotlinBaseActivity() { private val kTag = "FaceDetectActivity" private lateinit var cameraExecutor: ExecutorService @@ -45,14 +44,10 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private val RATIO_4_3_VALUE = 4.0 / 3.0 private val RATIO_16_9_VALUE = 16.0 / 9.0 - private val executor: ThreadPoolExecutor = ThreadPoolExecutor( - 16, - 16, - 0L, - TimeUnit.MILLISECONDS, - LinkedBlockingQueue(1024), - FaceDetectorThread(), - ThreadPoolExecutor.AbortPolicy() + private val executor = ThreadPoolExecutor( + 16, 16, 0L, + TimeUnit.MILLISECONDS, LinkedBlockingQueue(1024), + FaceDetectorThread(), ThreadPoolExecutor.AbortPolicy() ) inner class FaceDetectorThread : ThreadFactory { @@ -61,18 +56,20 @@ } } - override fun initLayoutView(): Int = R.layout.activity_face_detect + override fun initViewBinding(): ActivityFaceDetectBinding { + return ActivityFaceDetectBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) .init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "入场申请人脸采集" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "入场申请人脸采集" } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { //调节屏幕亮度最大 window.setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL) @@ -137,7 +134,7 @@ imageAnalysis, cameraPreViewBuilder ) - cameraPreViewBuilder.setSurfaceProvider(cameraPreView.surfaceProvider) + cameraPreViewBuilder.setSurfaceProvider(binding.cameraPreView.surfaceProvider) observeCameraState(camera.cameraInfo) } catch (e: Exception) { e.printStackTrace() @@ -196,7 +193,7 @@ * */ private val callback = Handler.Callback { if (it.what == 2022071401) { - faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" + binding.faceDetectTipsView.text = "人脸特征采集中,请勿晃动手机" val fileOptions = ImageCapture.OutputFileOptions.Builder(createImageFile()).build() imageCapture.takePicture(fileOptions, cameraExecutor, object : ImageCapture.OnImageSavedCallback { diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt index 2af6cf4..c1a8400 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt @@ -14,6 +14,7 @@ import android.view.SurfaceHolder import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityHikvisionBinding import com.casic.br.operationsite.extensions.getChannel import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.reformatFloatArray @@ -33,18 +34,8 @@ import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_hikvision.configButton -import kotlinx.android.synthetic.main.activity_hikvision.configSelectView -import kotlinx.android.synthetic.main.activity_hikvision.netSelectView -import kotlinx.android.synthetic.main.activity_hikvision.regionView -import kotlinx.android.synthetic.main.activity_hikvision.rootView -import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView -import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView -import kotlinx.android.synthetic.main.include_option_title.leftBackView -import kotlinx.android.synthetic.main.include_option_title.rightOptionView -import kotlinx.android.synthetic.main.include_option_title.titleView -class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { +class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback { private val kTag = "HikVisionActivity" private val context = this@HikVisionActivity @@ -66,27 +57,29 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initLayoutView(): Int = R.layout.activity_hikvision + override fun initViewBinding(): ActivityHikvisionBinding { + return ActivityHikvisionBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false) .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "摄像头参数" - rightOptionView.text = "重画" - rightOptionView.setOnClickListener { - regionView.clearRoutePath() + binding.titleInclude.titleView.text = "摄像头参数" + binding.titleInclude.rightOptionView.text = "重画" + binding.titleInclude.rightOptionView.setOnClickListener { + binding.regionView.clearRoutePath() } } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { RuntimeCache.deviceModels.forEach { if (it.deviceType == DeviceType.CAMERA) { cameraItems.add("${it.host}:${it.port}") } } - configSelectView.text = cameraItems[0] + binding.configSelectView.text = cameraItems[0] //获取wifi列表 wifiSsids.clear() @@ -111,7 +104,7 @@ } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } val bottomActionSheet = BottomActionSheet.Builder() .setContext(this) @@ -119,19 +112,19 @@ .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - configSelectView.text = cameraItems[position] + binding.configSelectView.text = cameraItems[position] } }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } - netSelectView.setOnClickListener { + binding.netSelectView.setOnClickListener { BottomActionSheet.Builder() .setContext(this) .setActionItemTitle(wifiSsids) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -155,12 +148,13 @@ }).build().show() } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { if (isPreviewSuccess) { closeHikVisionCamera() } else { - val split = configSelectView.text.split(":") + val split = binding.configSelectView.text.split(":") openHikVisionCamera(split[0], split[1]) } } @@ -199,14 +193,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 @@ -215,8 +212,8 @@ } }) - configButton.setOnClickListener { - val region = regionView.getConfirmedPoints() + binding.configButton.setOnClickListener { + val region = binding.regionView.getConfirmedPoints() val data = region.reformatFloatArray() //发送数据的时候需要断开视频 @@ -301,7 +298,7 @@ strutPlayInfo.lChannel = selectChannel strutPlayInfo.dwStreamType = 1 strutPlayInfo.bBlocked = 1 - strutPlayInfo.hHwnd = videoSurfaceView.holder + strutPlayInfo.hHwnd = binding.videoSurfaceView.holder previewHandle = SDKGuider.g_sdkGuider.m_comPreviewGuider.RealPlay_V40_jni( returnUserID, strutPlayInfo, null ) @@ -322,7 +319,7 @@ } override fun surfaceCreated(holder: SurfaceHolder) { - videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) + binding.videoSurfaceView.holder.setFormat(PixelFormat.TRANSLUCENT) if (-1 == previewHandle) { return } diff --git a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt index f0b8082..47a2e14 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/LoginActivity.kt @@ -2,7 +2,7 @@ import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityLoginBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LoadingDialogHub @@ -17,25 +17,30 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : KotlinBaseActivity() { +class LoginActivity : KotlinBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_login + override fun initViewBinding(): ActivityLoginBinding { + return ActivityLoginBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { // 设置默认账号密码 - userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] loginViewModel = ViewModelProvider(this)[LoginViewModel::class.java] userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] @@ -51,9 +56,9 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val account = userNameView.text.toString().trim() - val userPassword = userPasswordView.text.toString().trim() + binding.loginButton.setOnClickListener { + val account = binding.userNameView.text.toString().trim() + val userPassword = binding.userPasswordView.text.toString().trim() if (account.isBlank()) { "用户名不能为空".show(this) return@setOnClickListener @@ -75,8 +80,8 @@ AuthenticationHelper.savePublicKey(keyString) val publicKey = RSAUtils.keyStrToPublicKey(keyString) - val account = userNameView.text.toString() - val userPassword = userPasswordView.text.toString() + val account = binding.userNameView.text.toString() + val userPassword = binding.userPasswordView.text.toString() val dataByPublicKey = RSAUtils.encryptDataByPublicKey( userPassword.toByteArray(), publicKey!! ) diff --git a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt index 4ed70ac..4ff871c 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MainActivity.kt @@ -5,6 +5,7 @@ import androidx.viewpager.widget.ViewPager import com.casic.br.operationsite.R import com.casic.br.operationsite.adapter.ViewPagerAdapter +import com.casic.br.operationsite.databinding.ActivityMainBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.fragment.CompletedFragment import com.casic.br.operationsite.fragment.NotStartFragment @@ -15,10 +16,8 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.BroadcastManager -import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.include_search_title.* -class MainActivity : KotlinBaseActivity() { +class MainActivity : KotlinBaseActivity() { private val kTag = "MainActivity" private var pageViews: MutableList = ArrayList() @@ -29,32 +28,34 @@ pageViews.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - searchTextView.setOnClickListener { + binding.titleInclude.searchTextView.setOnClickListener { // 需要根据当前所在Page查询数据 val dataModel = BroadcastDataModel() - dataModel.currentPage = mainViewPager.currentItem - dataModel.keywords = searchInputView.text.toString() + dataModel.currentPage = binding.mainViewPager.currentItem + dataModel.keywords = binding.titleInclude.searchInputView.text.toString() - BroadcastManager - .obtainInstance(this) + BroadcastManager.obtainInstance(this) .sendBroadcast(LocaleConstant.SEARCH_ACTION, dataModel.toJson()) } } - override fun initData(savedInstanceState: Bundle?) { - mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) - mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mainViewPager.adapter = ViewPagerAdapter(pageViews, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = pageViews.size //缓存页数 //默认显示实施中页面 - mainViewPager.currentItem = 1 - segmentedGroup.check(segmentedGroup.getChildAt(1).id) + binding.mainViewPager.currentItem = 1 + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(1).id) } override fun observeRequestState() { @@ -62,15 +63,15 @@ } override fun initEvent() { - segmentedGroup.setOnCheckedChangeListener { _, checkedId -> + binding.segmentedGroup.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { - R.id.notStartButton -> mainViewPager.currentItem = 0 - R.id.workingButton -> mainViewPager.currentItem = 1 - R.id.completedButton -> mainViewPager.currentItem = 2 + R.id.notStartButton -> binding.mainViewPager.currentItem = 0 + R.id.workingButton -> binding.mainViewPager.currentItem = 1 + R.id.completedButton -> binding.mainViewPager.currentItem = 2 } } - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -82,7 +83,7 @@ } override fun onPageSelected(position: Int) { - segmentedGroup.check(segmentedGroup.getChildAt(position).id) + binding.segmentedGroup.check(binding.segmentedGroup.getChildAt(position).id) } }) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt index 1b53f7e..e5c034e 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt @@ -12,6 +12,7 @@ import android.os.Message import androidx.lifecycle.ViewModelProvider import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivityMethaneBinding import com.casic.br.operationsite.extensions.createCloseLightCommand import com.casic.br.operationsite.extensions.createOpenLightCommand import com.casic.br.operationsite.extensions.createStartCommand @@ -33,20 +34,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_methane.addressView -import kotlinx.android.synthetic.main.activity_methane.configButton -import kotlinx.android.synthetic.main.activity_methane.configSelectView -import kotlinx.android.synthetic.main.activity_methane.connectButton -import kotlinx.android.synthetic.main.activity_methane.netSelectView -import kotlinx.android.synthetic.main.activity_methane.rootView -import kotlinx.android.synthetic.main.activity_methane.steeringWheelView -import kotlinx.android.synthetic.main.activity_methane.tcpStateView -import kotlinx.android.synthetic.main.activity_methane.thresholdView -import kotlinx.android.synthetic.main.activity_methane.warningSwitch -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView -class MethaneActivity : KotlinBaseActivity(), Handler.Callback { +class MethaneActivity : KotlinBaseActivity(), Handler.Callback { companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -67,7 +56,11 @@ //手指是否已经从方向控制盘抬起 private var isActionUp = true - override fun initData(savedInstanceState: Bundle?) { + override fun initViewBinding(): ActivityMethaneBinding { + return ActivityMethaneBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) RuntimeCache.deviceModels.forEach { @@ -75,7 +68,7 @@ gasTreeItems.add("${it.host}:${it.port}") } } - configSelectView.text = gasTreeItems[0] + binding.configSelectView.text = gasTreeItems[0] //获取wifi列表 wifiSsids.clear() @@ -89,15 +82,15 @@ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java] alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] alarmViewModel.alarmState.observe(this) { - warningSwitch.isChecked = it == "1" + binding.warningSwitch.isChecked = it == "1" } alarmViewModel.getAlarmState() - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.getMethaneThreshold(gasParam[0], gasParam[1]) deviceViewModel.thresholdResult.observe(this) { if (it.code == 200) { - thresholdView.setText(it.data) + binding.thresholdView.setText(it.data) } } deviceViewModel.setThresholdResult.observe(this) { @@ -109,13 +102,13 @@ override fun handleMessage(msg: Message): Boolean { if (msg.what == 2023072101) { - tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) - connectButton.isEnabled = false - addressView.isEnabled = false + binding.tcpStateView.setBackgroundColor(R.color.greenColor.convertColor(this)) + binding.connectButton.isEnabled = false + binding.addressView.isEnabled = false } else if (msg.what == 2023072102) { - tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) - connectButton.isEnabled = true - addressView.isEnabled = true + binding.tcpStateView.setBackgroundColor(R.color.redTextColor.convertColor(this)) + binding.connectButton.isEnabled = true + binding.addressView.isEnabled = true } return true } @@ -123,57 +116,52 @@ override fun onResume() { super.onResume() val host = SaveKeyValues.getValue(LocaleConstant.TCP_HOST, "192.168.10.139").toString() - addressView.setText(host) + binding.addressView.setText(host) } override fun initEvent() { - leftBackView.setOnClickListener { finish() } + binding.titleInclude.leftBackView.setOnClickListener { finish() } //连接TCP - connectButton.setOnClickListener { - if (addressView.text.isNullOrBlank()) { + binding.connectButton.setOnClickListener { + if (binding.addressView.text.isNullOrBlank()) { "请输入正确的指令地址".show(this) return@setOnClickListener } - val value = addressView.text.toString() + val value = binding.addressView.text.toString() SaveKeyValues.putValue(LocaleConstant.TCP_HOST, value) SocketManager.get.connectNetty(value, LocaleConstant.TCP_PORT) } - val bottomActionSheet = BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(gasTreeItems) - .setItemTextColor(R.color.mainThemeColor.convertColor(this)) - .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { - override fun onActionItemClick(position: Int) { - configSelectView.text = gasTreeItems[position] - } - }).build() - configSelectView.setOnClickListener { bottomActionSheet.show() } - - netSelectView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(wifiSsids) + val bottomActionSheet = + BottomActionSheet.Builder().setContext(this).setActionItemTitle(gasTreeItems) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { - netSelectView.text = wifiSsids[position] + binding.configSelectView.text = gasTreeItems[position] + } + }).build() + binding.configSelectView.setOnClickListener { bottomActionSheet.show() } + + binding.netSelectView.setOnClickListener { + BottomActionSheet.Builder().setContext(this).setActionItemTitle(wifiSsids) + .setItemTextColor(R.color.mainThemeColor.convertColor(this)) + .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + binding.netSelectView.text = wifiSsids[position] //连接wifi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - val specifier = WifiNetworkSpecifier.Builder() - .setSsid(wifiSsids[position]) - .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD) - .build() + val specifier = + WifiNetworkSpecifier.Builder().setSsid(wifiSsids[position]) + .setWpa2Passphrase(LocaleConstant.WIFI_PASSWORD).build() val request = NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .setNetworkSpecifier(specifier) - .build() + .setNetworkSpecifier(specifier).build() connectivityManager = context.getSystemService() connectivityManager?.requestNetwork(request, networkCallback) @@ -182,27 +170,28 @@ }).build().show() } - warningSwitch.setOnClickListener { - val gasParam = configSelectView.text.toString().splitGasParam() - if (warningSwitch.isChecked) { + binding.warningSwitch.setOnClickListener { + val gasParam = binding.configSelectView.text.toString().splitGasParam() + if (binding.warningSwitch.isChecked) { alarmViewModel.changeAlarmState(gasParam[0], "1") } else { alarmViewModel.changeAlarmState(gasParam[0], "0") } } - configButton.setOnClickListener { - if (thresholdView.text.isNullOrBlank()) { + binding.configButton.setOnClickListener { + if (binding.thresholdView.text.isNullOrBlank()) { "阈值不能设置为空".show(this) return@setOnClickListener } - val gasParam = configSelectView.text.toString().splitGasParam() + val gasParam = binding.configSelectView.text.toString().splitGasParam() deviceViewModel.setMethaneThreshold( - gasParam[0], gasParam[1], thresholdView.text.toString() + gasParam[0], gasParam[1], binding.thresholdView.text.toString() ) } - steeringWheelView.setOnWheelTouchListener(object : SteeringWheelView.OnWheelTouchListener { + binding.steeringWheelView.setOnWheelTouchListener(object : + SteeringWheelView.OnWheelTouchListener { override fun onCenterClicked() { clickCount++ if (clickCount % 2 == 0) { @@ -266,18 +255,16 @@ } } - override fun initLayoutView(): Int = R.layout.activity_methane - override fun observeRequestState() { } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) - titleView.text = "云台参数" + binding.titleInclude.titleView.text = "云台参数" } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt index 06a285c..74fa2b6 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/SplashScreenActivity.kt @@ -3,24 +3,27 @@ import android.os.Bundle import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider -import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySplashBinding import com.casic.br.operationsite.vm.UserDetailViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -class SplashScreenActivity : KotlinBaseActivity() { +class SplashScreenActivity : KotlinBaseActivity() { private val kTag = "SplashScreenActivity" private lateinit var userDetailViewModel: UserDetailViewModel - override fun initLayoutView(): Int = R.layout.activity_splash + override fun initViewBinding(): ActivitySplashBinding { + return ActivitySplashBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).init() } - override fun initData(savedInstanceState: Bundle?) { + override fun initOnCreate(savedInstanceState: Bundle?) { userDetailViewModel = ViewModelProvider(this)[UserDetailViewModel::class.java] } diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 82ebc9f..4171458 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -12,6 +12,7 @@ import com.amap.api.location.AMapLocation import com.casic.br.operationsite.R import com.casic.br.operationsite.callback.OnImageCompressListener +import com.casic.br.operationsite.databinding.ActivityUploadActivityBinding import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar @@ -40,21 +41,9 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_upload_activity.addImageRecyclerView -import kotlinx.android.synthetic.main.activity_upload_activity.eventLocationView -import kotlinx.android.synthetic.main.activity_upload_activity.eventNameView -import kotlinx.android.synthetic.main.activity_upload_activity.inputLengthView -import kotlinx.android.synthetic.main.activity_upload_activity.locationImageView -import kotlinx.android.synthetic.main.activity_upload_activity.personNumberView -import kotlinx.android.synthetic.main.activity_upload_activity.rootView -import kotlinx.android.synthetic.main.activity_upload_activity.siteEditView -import kotlinx.android.synthetic.main.activity_upload_activity.uploadEventButton -import kotlinx.android.synthetic.main.activity_upload_activity.uploadPersonView -import kotlinx.android.synthetic.main.include_base_title.leftBackView -import kotlinx.android.synthetic.main.include_base_title.titleView import java.io.File -class UploadEventActivity : KotlinBaseActivity() { +class UploadEventActivity : KotlinBaseActivity() { private val kTag = "UploadEventActivity" private lateinit var imageAdapter: EditableImageAdapter @@ -66,26 +55,28 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private var mapLocation: AMapLocation? = null - override fun initLayoutView(): Int = R.layout.activity_upload_activity - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "事件信息" + override fun initViewBinding(): ActivityUploadActivityBinding { + return ActivityUploadActivityBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "事件信息" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String if (userDetailJson.isNotBlank()) { val userDetail = Gson().fromJson( userDetailJson, object : TypeToken() {}.type ) - uploadPersonView.text = userDetail.name - personNumberView.text = userDetail.phone + binding.uploadPersonView.text = userDetail.name + binding.personNumberView.text = userDetail.phone } weakReferenceHandler = WeakReferenceHandler(callback) @@ -93,7 +84,7 @@ eventViewModel = ViewModelProvider(this)[EventViewModel::class.java] imageAdapter = EditableImageAdapter(this, 3, 3f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter } override fun onResume() { @@ -118,7 +109,7 @@ } override fun initEvent() { - locationImageView.setOnClickListener { obtainCurrentLocation() } + binding.locationImageView.setOnClickListener { obtainCurrentLocation() } imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { @@ -155,7 +146,7 @@ } } - siteEditView.addTextChangedListener(object : TextWatcher { + binding.siteEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -166,23 +157,23 @@ override fun afterTextChanged(s: Editable?) { val text = s.toString().trim() - inputLengthView.text = String.format("${text.length}/100") + binding.inputLengthView.text = String.format("${text.length}/100") if (text.length > 100) { - inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.redTextColor.convertColor(context)) "现场情况字符不能超过100个字符".show(context) } else { - inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.inputLengthView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) - uploadEventButton.setOnClickListener { - if (eventNameView.text.isNullOrBlank()) { + binding.uploadEventButton.setOnClickListener { + if (binding.eventNameView.text.isNullOrBlank()) { "请输入事件名称".show(this) return@setOnClickListener } - if (siteEditView.text.isNullOrBlank()) { + if (binding.siteEditView.text.isNullOrBlank()) { "请输入事件简要描述".show(this) return@setOnClickListener } @@ -193,13 +184,13 @@ } eventViewModel.addEvent( - eventNameView.text.toString(), - personNumberView.text.toString(), + binding.eventNameView.text.toString(), + binding.personNumberView.text.toString(), mapLocation?.longitude.toString(), System.currentTimeMillis().timestampToCompleteDate(), - siteEditView.text.toString(), + binding.siteEditView.text.toString(), "", - uploadPersonView.text.toString(), + binding.uploadPersonView.text.toString(), imageModels.toTypedArray(), mapLocation?.latitude.toString(), ) @@ -213,16 +204,13 @@ } private fun selectPicture() { - BottomActionSheet.Builder() - .setContext(this) - .setActionItemTitle(listOf("拍照", "相册")) + BottomActionSheet.Builder().setContext(this).setActionItemTitle(listOf("拍照", "相册")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { 0 -> { - PictureSelector.create(context) - .openCamera(SelectMimeType.ofImage()) + PictureSelector.create(context).openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -237,14 +225,11 @@ } }) } + 1 -> { - PictureSelector.create(context) - .openGallery(SelectMimeType.ofImage()) - .isGif(false) - .isMaxSelectEnabledMask(true) - .setFilterMinFileSize(100) - .setMaxSelectNum(3) - .isDisplayCamera(false) + PictureSelector.create(context).openGallery(SelectMimeType.ofImage()) + .isGif(false).isMaxSelectEnabledMask(true).setFilterMinFileSize(100) + .setMaxSelectNum(3).isDisplayCamera(false) .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -287,16 +272,16 @@ } private fun obtainCurrentLocation() { - eventLocationView.text = "定位中..." + binding.eventLocationView.text = "定位中..." LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { if (aMapLocation == null) { - eventLocationView.text = "定位失败" - eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) + binding.eventLocationView.text = "定位失败" + binding.eventLocationView.setTextColor(R.color.redTextColor.convertColor(context)) } else { mapLocation = aMapLocation - eventLocationView.text = aMapLocation.address - eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) + binding.eventLocationView.text = aMapLocation.address + binding.eventLocationView.setTextColor(R.color.subTextColor.convertColor(context)) } } }) diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index c024a56..b164e66 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -9,8 +9,14 @@ import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R +import com.casic.br.operationsite.databinding.ActivitySiteTabBinding import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.model.WorkSiteAreaModel @@ -27,12 +33,9 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_site_tab.* -import kotlinx.android.synthetic.main.include_base_title.* - -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, - AMap.InfoWindowAdapter { +class WorkSiteTabActivity : KotlinBaseActivity(), + AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap @@ -44,24 +47,26 @@ private val workers: MutableList = ArrayList() private val safetyTrees: MutableList = ArrayList() - override fun initLayoutView(): Int = R.layout.activity_site_tab - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false) - .statusBarColor(R.color.mainThemeColor).init() - initLayoutImmersionBar(rootView) - - leftBackView.setOnClickListener { finish() } - titleView.text = "燃气作业现场动态感知" + override fun initViewBinding(): ActivitySiteTabBinding { + return ActivitySiteTabBinding.inflate(layoutInflater) } - override fun initData(savedInstanceState: Bundle?) { + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(false).statusBarColor(R.color.mainThemeColor) + .init() + initLayoutImmersionBar(binding.rootView) + + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "燃气作业现场动态感知" + } + + override fun initOnCreate(savedInstanceState: Bundle?) { projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 * */ - aMap = mapView.map + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -80,11 +85,12 @@ workSiteViewModel.obtainProjectDetail(projectId) workSiteViewModel.detailModel.observe(this) { if (it.code == 200) { - projectNameView.text = it.data.workTitle - principalView.text = String.format("现场负责人:${it.data.workPersonName}") - phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") - workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") - locationView.text = String.format("所属道路:${it.data.workRoad}") + binding.projectNameView.text = it.data.workTitle + binding.principalView.text = String.format("现场负责人:${it.data.workPersonName}") + binding.phoneNumberView.text = + String.format("联系电话:${it.data.workPersonPhoneNumber}") + binding.workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + binding.locationView.text = String.format("所属道路:${it.data.workRoad}") } } @@ -140,12 +146,11 @@ //标记安全树 aMap.addMarker( - MarkerOptions().position(latLng).title(data.deviceCode) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap - ) + MarkerOptions().position(latLng).title(data.deviceCode).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.map_pin).bitmap ) + ) ) } //计算所有点的中心点位置 @@ -169,14 +174,15 @@ it.data.forEach { worker -> workers.add(worker) aMap.addMarker( - MarkerOptions() - .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) - .title(worker.workerId) - .icon( - BitmapDescriptorFactory.fromBitmap( - BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap - ) + MarkerOptions().position( + LatLng( + worker.lat.toDouble(), worker.lng.toDouble() ) + ).title(worker.workerId).icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) ) } } @@ -247,13 +253,12 @@ } override fun initEvent() { - alarmTextView.setOnClickListener { + binding.alarmTextView.setOnClickListener { navigatePageTo() } - fenceTextView.setOnClickListener { - BottomActionSheet.Builder() - .setContext(this) + binding.fenceTextView.setOnClickListener { + BottomActionSheet.Builder().setContext(this) .setActionItemTitle(arrayListOf("监控区域", "云台参数")) .setItemTextColor(R.color.mainThemeColor.convertColor(this)) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { @@ -266,11 +271,11 @@ }).build().show() } - uploadTextView.setOnClickListener { + binding.uploadTextView.setOnClickListener { navigatePageTo() } - applyTextView.setOnClickListener { + binding.applyTextView.setOnClickListener { navigatePageTo(projectId) } } @@ -278,26 +283,26 @@ /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - mapView.onCreate(savedInstanceState) + binding.mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onDestroy() { - mapView.onDestroy() + binding.mapView.onDestroy() super.onDestroy() } 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/res/layout/activity_alarm_detail.xml b/app/src/main/res/layout/activity_alarm_detail.xml index 8e09bf0..8b3c34b 100644 --- a/app/src/main/res/layout/activity_alarm_detail.xml +++ b/app/src/main/res/layout/activity_alarm_detail.xml @@ -5,7 +5,9 @@ android:layout_height="match_parent" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - +