diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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 b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/build.gradle b/app/build.gradle index b53ac5c..d8e376e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,24 +2,23 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlin-android-extensions' android { signingConfigs { release { - storeFile file('/Users/a203/Desktop/AndroidProjects/Sanxi/SmartTown/app/SmartTown.jks') + storeFile file('SmartTown.jks') storePassword '123456789' keyAlias 'key0' keyPassword '123456789' } } - compileSdkVersion 31 - buildToolsVersion "30.0.3" + + compileSdkVersion 33 defaultConfig { applicationId "com.casic.smart.town.sanxi" minSdkVersion 23 - targetSdkVersion 31 + targetSdkVersion 33 versionCode 1 versionName "1.0.0.0" } @@ -44,8 +43,12 @@ } } - applicationVariants.all { variant -> - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - variant.outputs.all { + viewBinding { + enabled true + } + + applicationVariants.configureEach { variant -> + variant.outputs.configureEach { outputFileName = "SXXZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk" } } @@ -59,7 +62,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.5' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.5' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' //Google官方授权框架 @@ -92,7 +95,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.9.0' + implementation 'com.google.code.gson:gson:2.10.1' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航、定位、地图三合一 @@ -103,6 +106,4 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' //图片压缩 implementation 'top.zibin:Luban:1.1.8' - //绕过Android 11反射限制 - implementation 'com.github.tiann:FreeReflection:3.1.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 766b62a..db8a60e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,9 +16,15 @@ + - - + + + + + + + @@ -68,7 +74,7 @@ + android:value="34064d6fa0c5ebd8ce48599386ce9c3a" /> + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt index ab7fd9f..48295ed 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/ApplicationBaseActivity.kt @@ -2,6 +2,7 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.viewbinding.ViewBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.casic.smart.town.sanxi.view.LoginActivity import com.casic.smart.town.sanxi.widgets.GlobeAlertDialog @@ -9,7 +10,9 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.WeakReferenceHandler -abstract class ApplicationBaseActivity : AppCompatActivity() { +abstract class ApplicationBaseActivity : AppCompatActivity() { + + protected lateinit var binding: VB companion object { lateinit var weakReferenceHandler: WeakReferenceHandler @@ -17,10 +20,11 @@ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(initLayoutView()) + binding = initViewBinding() + setContentView(binding.root) PageNavigationManager.addActivity(this) setupTopBarLayout() - initData() + initOnCreate(savedInstanceState) observeRequestState() initEvent() @@ -42,9 +46,9 @@ } /** - * 初始化xml布局 + * 初始化ViewBinding */ - abstract fun initLayoutView(): Int + abstract fun initViewBinding(): VB /** * 特定页面定制沉浸式状态栏 @@ -54,7 +58,7 @@ /** * 初始化默认数据 */ - abstract fun initData() + abstract fun initOnCreate(savedInstanceState: Bundle?) /** * 数据请求状态监听 diff --git a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt index 93b2384..f4216a7 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/base/BaseApplication.kt @@ -1,9 +1,7 @@ package com.casic.smart.town.sanxi.base import android.app.Application -import android.content.Context import com.pengxh.kt.lite.utils.SaveKeyValues -import me.weishu.reflection.Reflection import kotlin.properties.Delegates class BaseApplication : Application() { @@ -22,13 +20,5 @@ SaveKeyValues.initSharedPreferences(this) // ArcGISRuntimeEnvironment.setLicense(getString(R.string.arcgis_license)) //去掉开发版水印 // ArcGISRuntimeEnvironment.setApiKey(getString(R.string.arcgis_key)) - //appKey 为保留字段,目前只需传入null或空字符串即可。 -// HatomPlayerSDK.init(this, "", true) - } - - //绕过Android 11以上反射限制 - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - Reflection.unseal(base) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt index e50eeb3..d9b78de 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/HomePageFragment.kt @@ -4,33 +4,43 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.Marker -import com.casic.smart.town.sanxi.R -import kotlinx.android.synthetic.main.fragment_home.view.* +import com.casic.smart.town.sanxi.databinding.FragmentHomeBinding +import com.pengxh.kt.lite.base.KotlinBaseFragment -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : KotlinBaseFragment(), AMap.OnMapLoadedListener, + AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private val kTag = "HomePageFragment" - private lateinit var homeView: View private lateinit var aMap: AMap - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View { - homeView = inflater.inflate(R.layout.fragment_home, container, false) - setMapConfig(savedInstanceState) - return homeView + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentHomeBinding { + return FragmentHomeBinding.inflate(inflater, container, false) } - private fun setMapConfig(savedInstanceState: Bundle?) { - homeView.mapView.onCreate(savedInstanceState) - aMap = homeView.mapView.map + override fun setupTopBarLayout() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -77,21 +87,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - homeView.mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - homeView.mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - homeView.mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - homeView.mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt index a295ff6..03d4e64 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/MorePageFragment.kt @@ -5,20 +5,27 @@ import android.graphics.Color import android.net.Uri import android.os.Build +import android.os.Bundle import android.os.CountDownTimer -import android.widget.LinearLayout +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.core.content.FileProvider import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentMoreBinding import com.casic.smart.town.sanxi.extensions.appendDownloadUrl import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.compressImage import com.casic.smart.town.sanxi.extensions.reformat import com.casic.smart.town.sanxi.model.UserDetailModel -import com.casic.smart.town.sanxi.util.* +import com.casic.smart.town.sanxi.util.AuthenticationHelper +import com.casic.smart.town.sanxi.util.GlideLoadEngine +import com.casic.smart.town.sanxi.util.LoadingDialogHub +import com.casic.smart.town.sanxi.util.LocaleConstant +import com.casic.smart.town.sanxi.util.OnImageCompressListener import com.casic.smart.town.sanxi.view.AboutUsActivity import com.casic.smart.town.sanxi.view.ChangePasswordActivity import com.casic.smart.town.sanxi.view.LoginActivity @@ -32,15 +39,20 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.callback.OnDownloadListener -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.calculateSize +import com.pengxh.kt.lite.extensions.createDownloadFileDir +import com.pengxh.kt.lite.extensions.deleteFile +import com.pengxh.kt.lite.extensions.downloadFile +import com.pengxh.kt.lite.extensions.formatFileSize +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.fragment_more.* import java.io.File -class MorePageFragment : KotlinBaseFragment() { +class MorePageFragment : KotlinBaseFragment() { private val kTag = "MorePageFragment" private lateinit var user: UserDetailModel.DataModel @@ -49,17 +61,18 @@ private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var progressDialog: ProgressDialog - override fun initLayoutView(): Int = R.layout.fragment_more - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentMoreBinding { + return FragmentMoreBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] userViewModel.userDetail.observe(this) { if (it.code == 200) { @@ -125,7 +138,7 @@ Glide.with(requireContext()) .load(it.data.combineImagePath()) .apply(RequestOptions.circleCropTransform()) - .into(userImageView) + .into(binding.userImageView) } } @@ -140,21 +153,29 @@ override fun observeRequestState() { versionViewModel.loadState.observe(this) { when (it) { - is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + is LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "检查版本中,请稍后" + ) + else -> LoadingDialogHub.dismiss() } } uploadImageViewModel.loadState.observe(this) { when (it) { - LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "图片上传中,请稍后...") + LoadState.Loading -> LoadingDialogHub.show( + requireActivity(), + "图片上传中,请稍后..." + ) + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - userImageView.setOnClickListener { + binding.userImageView.setOnClickListener { BottomActionSheet.Builder() .setContext(requireContext()) .setItemTextColor(Color.BLUE) @@ -177,6 +198,7 @@ } }) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) @@ -203,28 +225,28 @@ }).build().show() } - updateUserButton.setOnClickListener { + binding.updateUserButton.setOnClickListener { LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.getUserDetail() } - updateDataLayout.setOnClickListener { + binding.updateDataLayout.setOnClickListener { requireContext().navigatePageTo() } - changePwdLayout.setOnClickListener { + binding.changePwdLayout.setOnClickListener { requireContext().navigatePageTo() } - aboutUsLayout.setOnClickListener { + binding.aboutUsLayout.setOnClickListener { requireContext().navigatePageTo() } - updateVersionLayout.setOnClickListener { + binding.updateVersionLayout.setOnClickListener { versionViewModel.updateVersion() } - clearCacheLayout.setOnClickListener { + binding.clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() @@ -235,12 +257,12 @@ override fun onFinish() { LoadingDialogHub.dismiss() - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() } - loginOutView.setOnClickListener { + binding.loginOutView.setOnClickListener { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出登录") @@ -265,7 +287,7 @@ override fun onResume() { userViewModel.getUserDetail() //缓存 - cacheSizeView.text = collectApplicationCache().formatFileSize() + binding.cacheSizeView.text = collectApplicationCache().formatFileSize() super.onResume() } @@ -281,9 +303,9 @@ // .apply(RequestOptions.circleCropTransform()) // .into(userAvatarView) // } - userNameView.text = user.name - userPhoneView.text = String.format("电话:${user.phone}") - userDeptView.text = String.format("部门:${user.deptName}") + binding.userNameView.text = user.name + binding.userPhoneView.text = String.format("电话:${user.phone}") + binding.userDeptView.text = String.format("部门:${user.deptName}") } private fun analyticalSelectResults(result: LocalMedia) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt index 95bbfd0..c501e24 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/OrderPageFragment.kt @@ -1,19 +1,19 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.fragment.app.Fragment -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.TopViewPagerAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderBinding import com.casic.smart.town.sanxi.fragment.order.CompletedFragment import com.casic.smart.town.sanxi.fragment.order.InHandleFragment import com.casic.smart.town.sanxi.fragment.order.NotConfirmedFragment import com.casic.smart.town.sanxi.fragment.order.NotProcessedFragment import com.casic.smart.town.sanxi.util.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.getStatusBarHeight -import kotlinx.android.synthetic.main.fragment_order.* -class OrderPageFragment : KotlinBaseFragment() { +class OrderPageFragment : KotlinBaseFragment() { private var fragmentPages: ArrayList = ArrayList() @@ -24,24 +24,25 @@ fragmentPages.add(CompletedFragment()) } - override fun initLayoutView(): Int = R.layout.fragment_order - - override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderBinding { + return FragmentOrderBinding.inflate(inflater, container, false) } - override fun initData() { + override fun setupTopBarLayout() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { val topViewPagerAdapter = TopViewPagerAdapter( childFragmentManager, LocaleConstant.SUB_PAGE_TITLES, fragmentPages ) //页面永不销毁 - orderViewPager.offscreenPageLimit = fragmentPages.size - orderViewPager.adapter = topViewPagerAdapter - orderTabLayout.setupWithViewPager(orderViewPager) + binding.orderViewPager.offscreenPageLimit = fragmentPages.size + binding.orderViewPager.adapter = topViewPagerAdapter + binding.orderTabLayout.setupWithViewPager(binding.orderViewPager) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt index b0dcc9e..56a3aa1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/StatisticsPageFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment -import android.widget.LinearLayout +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DividerItemDecoration import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentStatisticsBinding import com.casic.smart.town.sanxi.model.DeviceModel import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.ChartViewHelper @@ -20,32 +23,35 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.timestampToCompleteDate +import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.SaveKeyValues -import kotlinx.android.synthetic.main.fragment_statistics.* -class StatisticsPageFragment : KotlinBaseFragment() { +class StatisticsPageFragment : KotlinBaseFragment() { private lateinit var pipeViewModel: PipeViewModel private lateinit var wellViewModel: WellViewModel private lateinit var infrastructureViewModel: InfrastructureViewModel private lateinit var deviceViewModel: DeviceViewModel - override fun initLayoutView(): Int = R.layout.fragment_statistics + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentStatisticsBinding { + return FragmentStatisticsBinding.inflate(inflater, container, false) + } override fun observeRequestState() { } override fun setupTopBarLayout() { - //根据不同设备状态栏高度设置statusBarView高度 - val statusBarHeight = requireContext().getStatusBarHeight() - val params = statusBarView.layoutParams as LinearLayout.LayoutParams - params.height = statusBarHeight - statusBarView.requestLayout() + } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { //初始化vm pipeViewModel = ViewModelProvider(this)[PipeViewModel::class.java] wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] @@ -70,10 +76,10 @@ xAxisLabel.add(dataModel.deviceType) } - totalAlarmView.text = totalAlarm.toString() + binding.totalAlarmView.text = totalAlarm.toString() //设置柱状图 - ChartViewHelper.setBarChartData(alarmBarChart, xAxisLabel, barEntries) + ChartViewHelper.setBarChartData(binding.alarmBarChart, xAxisLabel, barEntries) } } @@ -106,15 +112,19 @@ val entryEntries: MutableList> = ArrayList() entryEntries.add(firstEntries) entryEntries.add(secondEntries) - ChartViewHelper.setLineChartData(healthStatusChart, xAxisLabel, entryEntries) + ChartViewHelper.setLineChartData( + binding.healthStatusChart, + xAxisLabel, + entryEntries + ) } } //获取窨井监控数据 wellViewModel.countResultModel.observe(this) { - cfWellView.text = it["cfWell"] - bfWellView.text = it["bfWell"] - allWellDataView.text = it["total"] + binding.cfWellView.text = it["cfWell"] + binding.bfWellView.text = it["bfWell"] + binding.allWellDataView.text = it["total"] } deviceViewModel.resultModel.observe(this) { @@ -125,26 +135,27 @@ dateRows.add(data) } } - deviceRecyclerView.addItemDecoration( + binding.deviceRecyclerView.addItemDecoration( DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) ) - deviceRecyclerView.adapter = object : NormalRecyclerAdapter( - R.layout.item_statistics_device_rv_g, dateRows - ) { - override fun convertView( - viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + binding.deviceRecyclerView.adapter = + object : NormalRecyclerAdapter( + R.layout.item_statistics_device_rv_g, dateRows ) { - viewHolder.setText(R.id.onLineStateView, item.onLineState) - .setText(R.id.offLineStateView, item.offLineState) - .setText(R.id.deviceTypeView, item.deviceType) + override fun convertView( + viewHolder: ViewHolder, position: Int, item: DeviceModel.DataModel + ) { + viewHolder.setText(R.id.onLineStateView, item.onLineState) + .setText(R.id.offLineStateView, item.offLineState) + .setText(R.id.deviceTypeView, item.deviceType) + } } - } } } infrastructureViewModel.resultModel.observe(this) { if (it.code == 200) { - infrastructureRv.adapter = object : + binding.infrastructureRv.adapter = object : NormalRecyclerAdapter( R.layout.item_statistics_infrastructure_rv_g, it.data ) { @@ -162,19 +173,19 @@ } override fun initEvent() { - cfWellView.setOnClickListener { + binding.cfWellView.setOnClickListener { requireContext().navigatePageTo() } - bfWellView.setOnClickListener { + binding.bfWellView.setOnClickListener { requireContext().navigatePageTo() } - allWellDataView.setOnClickListener { + binding.allWellDataView.setOnClickListener { requireContext().navigatePageTo() } - refreshImageView.setOnClickListener { + binding.refreshImageView.setOnClickListener { requestData() } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt index bec4c35..6902cd1 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/CompletedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderCompletedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderCompletedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.CompletedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_completed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class CompletedFragment : KotlinBaseFragment() { +class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_completed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderCompletedBinding { + return FragmentOrderCompletedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { completedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } completedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111001) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111001) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("您还没有处理完成过任何工单") { + binding.emptyInclude.emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = completedAdapter + binding.orderRecyclerView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt index e6562bd..d6fcf57 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/InHandleFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderInHandleAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderInHandleBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.InHandleDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_in_handle.* -import kotlinx.android.synthetic.main.include_empty_view.* -class InHandleFragment : KotlinBaseFragment() { +class InHandleFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_in_handle + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderInHandleBinding { + return FragmentOrderInHandleBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { inHandleAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } inHandleAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111004) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111004) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("真不错,您已经处理完所有工单") { + binding.emptyInclude.emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = inHandleAdapter + binding.orderRecyclerView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt index 529b2d2..a85ce0e 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotConfirmedFragment.kt @@ -1,9 +1,12 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.OrderNotConfirmedAdapter +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotConfirmedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.view.order.NotConfirmedDetailActivity @@ -14,10 +17,8 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotConfirmedFragment : KotlinBaseFragment() { +class NotConfirmedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -27,7 +28,12 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotConfirmedBinding { + return FragmentOrderNotConfirmedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { @@ -37,7 +43,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] orderViewModel.resultModel.observe(this) { @@ -46,17 +52,19 @@ when { isRefresh -> { notConfirmedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notConfirmedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111002) @@ -65,19 +73,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -97,14 +105,14 @@ private val callback = Handler.Callback { if (it.what == 2022111002) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您确认的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - orderRecyclerView.adapter = notConfirmedAdapter + binding.orderRecyclerView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt index 4818538..27276f8 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/fragment/order/NotProcessedFragment.kt @@ -1,9 +1,13 @@ package com.casic.smart.town.sanxi.fragment.order +import android.os.Bundle import android.os.Handler +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.FragmentOrderNotProcessedBinding import com.casic.smart.town.sanxi.extensions.showEmptyPage import com.casic.smart.town.sanxi.model.OrderListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -20,10 +24,8 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog -import kotlinx.android.synthetic.main.fragment_order_not_processed.* -import kotlinx.android.synthetic.main.include_empty_view.* -class NotProcessedFragment : KotlinBaseFragment() { +class NotProcessedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var orderViewModel: OrderViewModel @@ -35,7 +37,12 @@ private var isLoadMore = false private var clickedPosition = 0 - override fun initLayoutView(): Int = R.layout.fragment_order_not_processed + override fun initViewBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentOrderNotProcessedBinding { + return FragmentOrderNotProcessedBinding.inflate(inflater, container, false) + } override fun observeRequestState() { //接单状态处理 @@ -51,6 +58,7 @@ clickedPosition, dataBeans.size - clickedPosition ) } + else -> LoadingDialogHub.dismiss() } } @@ -60,7 +68,7 @@ } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -71,17 +79,19 @@ when { isRefresh -> { notProcessedAdapter.setRefreshData(dataRows!!) - orderLayout.finishRefresh() + binding.orderLayout.finishRefresh() isRefresh = false } + isLoadMore -> { if (dataRows?.size == 0) { "到底了,别拉了".show(requireContext()) } notProcessedAdapter.setLoadMoreData(dataRows!!) - orderLayout.finishLoadMore() + binding.orderLayout.finishLoadMore() isLoadMore = false } + else -> { dataBeans = dataRows!! weakReferenceHandler.sendEmptyMessage(2022111003) @@ -90,19 +100,19 @@ } } - orderRecyclerView.addItemDecoration( + binding.orderRecyclerView.addItemDecoration( VerticalMarginItemDecoration(5f.dp2px(requireContext()), 0) ) } override fun initEvent() { - orderLayout.setOnRefreshListener { + binding.orderLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 pageIndex = 1 obtainWorkOrderList() } - orderLayout.setOnLoadMoreListener { + binding.orderLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ obtainWorkOrderList() @@ -122,12 +132,12 @@ private val callback = Handler.Callback { if (it.what == 2022111003) { if (dataBeans.size == 0) { - emptyView.showEmptyPage("没有需要您处理的工单") { + binding.emptyInclude.emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView.hide() + binding.emptyInclude.emptyView.hide() notProcessedAdapter = object : NormalRecyclerAdapter( R.layout.item_order_not_processed_rv, dataBeans @@ -176,7 +186,7 @@ }) } } - orderRecyclerView.adapter = notProcessedAdapter + binding.orderRecyclerView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt index 2dc9f7e..3c4727b 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AboutUsActivity.kt @@ -1,27 +1,29 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import com.casic.smart.town.sanxi.BuildConfig import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityAboutUsBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_about_us.* -import kotlinx.android.synthetic.main.include_base_title.* -class AboutUsActivity : ApplicationBaseActivity() { +class AboutUsActivity : ApplicationBaseActivity() { - override fun initLayoutView(): Int = R.layout.activity_about_us + override fun initViewBinding(): ActivityAboutUsBinding { + return ActivityAboutUsBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "关于我们" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "关于我们" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { - versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") + override fun initOnCreate(savedInstanceState: Bundle?) { + binding.versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt index b0b6d8c..a8bad16 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/AllWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityAllWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_all_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class AllWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class AllWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_all_well) + override fun initViewBinding(): ActivityAllWellBinding { + return ActivityAllWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -88,10 +96,8 @@ longitudeList.add(longitude) //将所有设备信息转化缓存为Marker点 allMarkerOptions.add( - MarkerOptions() - .position(LatLng(latitude, longitude)) - .title(wellInfo.wellTypeName) - .snippet(wellInfo.wellCode) + MarkerOptions().position(LatLng(latitude, longitude)) + .title(wellInfo.wellTypeName).snippet(wellInfo.wellCode) ) } @@ -106,9 +112,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -178,8 +188,7 @@ val clickedLatLng = marker?.position!! for (well in wellInfoModels) { - if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble() - ) { + if (clickedLatLng.latitude == well.latGaode!!.toDouble() && clickedLatLng.longitude == well.lngGaode!!.toDouble()) { wellNameView.text = String.format("点位名称: ${well.wellName}") wellCodeView.text = String.format("点位编号: ${well.wellCode}") wellTypeView.text = String.format("点位类型: ${well.wellType.valueToType()}") @@ -204,21 +213,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt index 875abda..4ae34fe 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BFWellActivity.kt @@ -5,25 +5,28 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityBfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class BFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class BFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -49,25 +52,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_bf_well) + override fun initViewBinding(): ActivityBfWellBinding { + return ActivityBfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已布防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已布防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -110,9 +118,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -208,21 +220,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt index a4bc829..4deaa0f 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/BigImageActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,21 +12,23 @@ import com.bumptech.glide.Glide import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityBigImageBinding import com.luck.picture.lib.photoview.PhotoView import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_big_image.* -class BigImageActivity : ApplicationBaseActivity() { +class BigImageActivity : ApplicationBaseActivity() { - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -40,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/smart/town/sanxi/view/CFWellActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt index 0057e22..249a2fd 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/CFWellActivity.kt @@ -5,26 +5,29 @@ import android.view.LayoutInflater import android.view.View import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -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.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityCfWellBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.valueToType import com.casic.smart.town.sanxi.model.WellListModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_bf_well.* -import kotlinx.android.synthetic.main.include_base_title.* -class CFWellActivity : AppCompatActivity(), AMap.OnMapLoadedListener, +class CFWellActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter { private lateinit var wellViewModel: WellViewModel @@ -50,25 +53,30 @@ * */ private var infoWindow: View? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_cf_well) + override fun initViewBinding(): ActivityCfWellBinding { + return ActivityCfWellBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "已撤防点位分布" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "已撤防点位分布" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.getAllWell() wellViewModel.allWellResult.observe(this) { if (it.code == 200) { @@ -111,9 +119,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_SATELLITE val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -209,7 +221,7 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() if (wellInfoModels.size == 0) { "所有点位已布防".show(this) } @@ -217,16 +229,16 @@ override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt index b8123b2..655ce51 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/ChangePasswordActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityChangePwdBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -15,26 +17,26 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* import java.nio.charset.StandardCharsets -class ChangePasswordActivity : ApplicationBaseActivity() { +class ChangePasswordActivity : ApplicationBaseActivity() { private lateinit var userViewModel: UserViewModel - override fun initLayoutView(): Int = R.layout.activity_change_pwd + override fun initViewBinding(): ActivityChangePwdBinding { + return ActivityChangePwdBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "修改密码" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "修改密码" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { userViewModel = ViewModelProvider(this)[UserViewModel::class.java] } @@ -48,28 +50,29 @@ this.navigatePageTo() PageNavigationManager.finishAllActivity() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { /** * isEmpty 认为空格(无论单空格还是多空格)都是不是空. * isBlank 认为空格,换行符号(\n),tab(\t)都是空. * */ - val oldPassword: String = oldPasswordView.text.toString().trim() + val oldPassword: String = binding.oldPasswordView.text.toString().trim() if (oldPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val newPassword: String = newPasswordView.text.toString().trim() + val newPassword: String = binding.newPasswordView.text.toString().trim() if (newPassword.isBlank()) { "请先输入原密码".show(this) return@setOnClickListener } - val repeatPassword: String = repeatPasswordView.text.toString().trim() + val repeatPassword: String = binding.repeatPasswordView.text.toString().trim() if (repeatPassword.isBlank()) { "请再次输入新密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt index 1954852..d6a3baa 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/DeviceOnMapActivity.kt @@ -2,7 +2,6 @@ import android.graphics.Point import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -12,19 +11,19 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smart.town.sanxi.R +import com.casic.smart.town.sanxi.databinding.ActivityDeviceOnMapBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.WellInfoModel import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_device_on_map.* -import kotlinx.android.synthetic.main.include_base_title.* -class DeviceOnMapActivity : AppCompatActivity(), AMap.OnMapLoadedListener, - AMap.OnCameraChangeListener { +class DeviceOnMapActivity : KotlinBaseActivity(), + AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "DeviceOnMapActivity" private lateinit var wellViewModel: WellViewModel @@ -45,27 +44,32 @@ */ private var markerOptionsInView: MutableList = ArrayList() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_device_on_map) + override fun initViewBinding(): ActivityDeviceOnMapBinding { + return ActivityDeviceOnMapBinding.inflate(layoutInflater) + } + override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) + binding.titleInclude.titleView.text = "异常报警位置" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + } - titleView.text = "异常报警位置" - leftBackView.setOnClickListener { finish() } - - setMapConfig(savedInstanceState) - - val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! - - wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] + override fun observeRequestState() { wellViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") else -> LoadingDialogHub.dismiss() } } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setMapConfig(savedInstanceState) + + val deviceId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + wellViewModel = ViewModelProvider(this)[WellViewModel::class.java] wellViewModel.queryWellInfo(deviceId) wellViewModel.wellResultModel.observe(this) { if (it.code == 200) { @@ -112,9 +116,13 @@ } } + override fun initEvent() { + + } + private fun setMapConfig(savedInstanceState: Bundle?) { - mapView.onCreate(savedInstanceState) - aMap = mapView.map + binding.mapView.onCreate(savedInstanceState) + aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true @@ -160,21 +168,21 @@ /***以下是地图生命周期管理************************************************************************/ override fun onResume() { super.onResume() - mapView.onResume() + binding.mapView.onResume() } override fun onPause() { super.onPause() - mapView.onPause() + binding.mapView.onPause() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - mapView.onSaveInstanceState(outState) + binding.mapView.onSaveInstanceState(outState) } override fun onDestroy() { super.onDestroy() - mapView.onDestroy() + binding.mapView.onDestroy() } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt index 46c0099..a0c85b2 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/LoginActivity.kt @@ -1,8 +1,9 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import androidx.lifecycle.ViewModelProvider -import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityLoginBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.util.AuthenticationHelper import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,26 +17,37 @@ import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_login.* -class LoginActivity : ApplicationBaseActivity() { +class LoginActivity : ApplicationBaseActivity() { private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var userViewModel: UserViewModel - 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() { + override fun initOnCreate(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) // 设置默认账号密码 - userAccountView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) - userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + binding.userAccountView.setText( + SaveKeyValues.getValue( + LocaleConstant.ACCOUNT, + "" + ) as String + ) + binding.userPasswordView.setText( + SaveKeyValues.getValue( + LocaleConstant.PASSWORD, + "" + ) as String + ) authenticateViewModel = ViewModelProvider(this)[AuthenticateViewModel::class.java] userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -51,13 +63,13 @@ } override fun initEvent() { - loginButton.setOnClickListener { - val userAccount = userAccountView.text.toString() + binding.loginButton.setOnClickListener { + val userAccount = binding.userAccountView.text.toString() if (userAccount.isBlank()) { "请输入账号".show(this) return@setOnClickListener } - val userPassword = userPasswordView.text.toString() + val userPassword = binding.userPasswordView.text.toString() if (userPassword.isBlank()) { "请输入密码".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt index 074730f..6bea1ee 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MainActivity.kt @@ -1,5 +1,6 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment @@ -7,15 +8,15 @@ import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.adapter.ViewPagerAdapter import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMainBinding import com.casic.smart.town.sanxi.fragment.HomePageFragment import com.casic.smart.town.sanxi.fragment.MorePageFragment import com.casic.smart.town.sanxi.fragment.OrderPageFragment import com.casic.smart.town.sanxi.fragment.StatisticsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.show -import kotlinx.android.synthetic.main.activity_main.* -class MainActivity : ApplicationBaseActivity() { +class MainActivity : ApplicationBaseActivity() { private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() @@ -28,13 +29,15 @@ fragmentPages.add(MorePageFragment()) } - override fun initLayoutView(): Int = R.layout.activity_main + override fun initViewBinding(): ActivityMainBinding { + return ActivityMainBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } @@ -43,27 +46,30 @@ } override fun initEvent() { - bottomNavigation.itemIconTintList = null - bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> + binding.bottomNavigation.itemIconTintList = null + binding.bottomNavigation.setOnNavigationItemSelectedListener { menuItem -> when (menuItem.itemId) { R.id.nav_home -> { - mainViewPager.currentItem = 0 + binding.mainViewPager.currentItem = 0 } + R.id.nav_statistics -> { - mainViewPager.currentItem = 1 + binding.mainViewPager.currentItem = 1 } + R.id.nav_order -> { - mainViewPager.currentItem = 2 + binding.mainViewPager.currentItem = 2 } + R.id.nav_more -> { - mainViewPager.currentItem = 3 + binding.mainViewPager.currentItem = 3 } } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) - mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 - mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + binding.mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) + binding.mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + binding.mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } @@ -80,9 +86,9 @@ if (menuItem != null) { menuItem!!.isChecked = false } else { - bottomNavigation.menu.getItem(0).isChecked = false + binding.bottomNavigation.menu.getItem(0).isChecked = false } - menuItem = bottomNavigation.menu.getItem(position) + menuItem = binding.bottomNavigation.menu.getItem(position) menuItem!!.isChecked = true } }) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt index ffefdc4..7a2ceaf 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/MonitorRecordActivity.kt @@ -1,14 +1,14 @@ package com.casic.smart.town.sanxi.view import android.content.Context +import android.os.Bundle import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityMonitorRecordBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_change_pwd.* -import kotlinx.android.synthetic.main.include_base_title.* -class MonitorRecordActivity : ApplicationBaseActivity() { +class MonitorRecordActivity : ApplicationBaseActivity() { private val context: Context = this@MonitorRecordActivity private var dataBeans: MutableList = ArrayList() @@ -16,7 +16,9 @@ private var isRefresh = false private var isLoadMore = false - override fun initLayoutView(): Int = R.layout.activity_monitor_record + override fun initViewBinding(): ActivityMonitorRecordBinding { + return ActivityMonitorRecordBinding.inflate(layoutInflater) + } override fun observeRequestState() { @@ -24,13 +26,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - leftBackView.setOnClickListener { finish() } - titleView.text = "监控摄像头列表" + binding.titleInclude.leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "监控摄像头列表" } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt index 8de52c7..585bd2a 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/PermissionActivity.kt @@ -1,16 +1,19 @@ package com.casic.smart.town.sanxi.view +import android.os.Bundle import android.os.CountDownTimer import com.amap.api.maps.MapsInitializer import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityPermissionBinding import com.casic.smart.town.sanxi.util.LocaleConstant import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.SaveKeyValues import pub.devrel.easypermissions.EasyPermissions -class PermissionActivity : ApplicationBaseActivity(), EasyPermissions.PermissionCallbacks { +class PermissionActivity : ApplicationBaseActivity(), + EasyPermissions.PermissionCallbacks { private val isFirstEnter = SaveKeyValues.getValue("isFirstEnter", true) as Boolean private val countDownTimer = object : CountDownTimer(2000, 500) { @@ -24,7 +27,11 @@ } } - override fun initData() { + override fun initViewBinding(): ActivityPermissionBinding { + return ActivityPermissionBinding.inflate(layoutInflater) + } + + override fun initOnCreate(savedInstanceState: Bundle?) { EasyPermissions.requestPermissions( this, resources.getString(R.string.app_name) + "需要获取必要权限", LocaleConstant.PERMISSIONS_CODE, *LocaleConstant.USER_PERMISSIONS @@ -35,8 +42,6 @@ } - override fun initLayoutView(): Int = R.layout.activity_permission - override fun observeRequestState() { } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt index 6ff25e6..97bbd0d 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/UpdateDataActivity.kt @@ -1,9 +1,11 @@ package com.casic.smart.town.sanxi.view import android.graphics.Color +import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityUpdateDataBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.model.InfrastructureModel import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -16,10 +18,8 @@ import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_update_data.* -import kotlinx.android.synthetic.main.include_base_title.* -class UpdateDataActivity : ApplicationBaseActivity() { +class UpdateDataActivity : ApplicationBaseActivity() { private val gson by lazy { Gson() } private var dataBeans: MutableList = ArrayList() @@ -27,7 +27,9 @@ private lateinit var facilitiesId: String private lateinit var infrastructureViewModel: InfrastructureViewModel - override fun initLayoutView(): Int = R.layout.activity_update_data + override fun initViewBinding(): ActivityUpdateDataBinding { + return ActivityUpdateDataBinding.inflate(layoutInflater) + } override fun observeRequestState() { infrastructureViewModel.loadState.observe(this) { @@ -38,6 +40,7 @@ LoadingDialogHub.dismiss() this.finish() } + LoadState.Fail -> LoadingDialogHub.dismiss() } } @@ -45,13 +48,13 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "更新基础设施数据" - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "更新基础设施数据" + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { infrastructureViewModel = ViewModelProvider(this)[InfrastructureViewModel::class.java] val s = SaveKeyValues.getValue(LocaleConstant.INFRASTRUCTURE, "") as String @@ -65,28 +68,26 @@ } override fun initEvent() { - facilitiesNameView.setOnClickListener { + binding.facilitiesNameView.setOnClickListener { if (dataTitles.isNotEmpty()) { - BottomActionSheet.Builder() - .setContext(this) - .setItemTextColor(Color.BLUE) + BottomActionSheet.Builder().setContext(this).setItemTextColor(Color.BLUE) .setActionItemTitle(dataTitles) .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { facilitiesId = dataBeans[position].id - facilitiesNameView.text = dataTitles[position] + binding.facilitiesNameView.text = dataTitles[position] } }).build().show() } } - submitButton.setOnClickListener { - val facilitiesName = facilitiesNameView.text.toString().trim() + binding.submitButton.setOnClickListener { + val facilitiesName = binding.facilitiesNameView.text.toString().trim() if (facilitiesName.isBlank()) { "请先选择设施名称".show(this) return@setOnClickListener } - val facilitiesCount = facilitiesCountView.text.toString().trim() + val facilitiesCount = binding.facilitiesCountView.text.toString().trim() if (facilitiesCount.isBlank()) { "请输入设施数量".show(this) return@setOnClickListener diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt index 614c656..5ae9b74 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/CompletedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderCompletedDetailBinding import com.casic.smart.town.sanxi.extensions.combineImagePath import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese @@ -19,28 +21,27 @@ import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_completed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class CompletedDetailActivity : ApplicationBaseActivity() { +class CompletedDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private val context: Context = this@CompletedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_completed_detail + override fun initViewBinding(): ActivityOrderCompletedDetailBinding { + return ActivityOrderCompletedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] } @@ -59,25 +60,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -92,14 +101,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -114,14 +123,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -131,8 +140,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isEmpty()) { "图片加载失败,无法查看大图".show(context) } else { @@ -141,12 +150,12 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson - completedDateView.text = orderDetail.handleJobTime - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.completedDateView.text = orderDetail.handleJobTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime } } } diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt index 83363e5..6a09545 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/InHandleDetailActivity.kt @@ -3,6 +3,7 @@ import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -12,6 +13,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderInHandleDetailBinding import com.casic.smart.town.sanxi.extensions.* import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -36,12 +38,9 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_in_handle_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class InHandleDetailActivity : ApplicationBaseActivity() { +class InHandleDetailActivity : ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -53,21 +52,23 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail + override fun initViewBinding(): ActivityOrderInHandleDetailBinding { + return ActivityOrderInHandleDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +99,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -116,12 +118,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)) } } }) @@ -130,25 +132,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -163,14 +173,14 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } //现场情况 val firstState = orderDetail.firstState.toString() - currentStateView.text = firstState + binding.currentStateView.text = firstState if (firstState.length > 12) { - stateTipsView.visibility = View.VISIBLE - stateTipsView.setOnClickListener { + binding.stateTipsView.visibility = View.VISIBLE + binding.stateTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("现场情况完整信息") @@ -185,14 +195,14 @@ .show() } } else { - stateTipsView.visibility = View.GONE + binding.stateTipsView.visibility = View.GONE } //绑定窨井图片 if (orderDetail.firstStatePhotos.toString().isBlank()) { - imageGridView.visibility = View.GONE + binding.imageGridView.visibility = View.GONE } else { - imageGridView.visibility = View.VISIBLE + binding.imageGridView.visibility = View.VISIBLE //处理图片地址 val urls: ArrayList = ArrayList() val imageArray = orderDetail.firstStatePhotos.toString().split(",") @@ -202,8 +212,8 @@ } } val imageAdapter = ReadOnlyImageAdapter(this, urls) - imageGridView.adapter = imageAdapter - imageGridView.setOnItemClickListener { _, _, position, _ -> + binding.imageGridView.adapter = imageAdapter + binding.imageGridView.setOnItemClickListener { _, _, position, _ -> if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(context) } else { @@ -212,23 +222,23 @@ } } - confirmPersonView.text = orderDetail.confirmJobPerson + binding.confirmPersonView.text = orderDetail.confirmJobPerson //维护情况 - sceneEditView.setText(orderDetail.handleMessage) + binding.sceneEditView.setText(orderDetail.handleMessage) - confirmDateView.text = orderDetail.confirmJobTime - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.confirmDateView.text = orderDetail.confirmJobTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交工单处理 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入维护情况".show(this) return@setOnClickListener @@ -324,6 +334,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt index 3117c80..8cb9b6c 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotConfirmedDetailActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.graphics.Color +import android.os.Bundle import android.os.CountDownTimer import android.os.Handler import android.text.Editable @@ -10,7 +11,12 @@ import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity -import com.casic.smart.town.sanxi.extensions.* +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotConfirmedDetailBinding +import com.casic.smart.town.sanxi.extensions.combineImagePath +import com.casic.smart.town.sanxi.extensions.compressImage +import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar +import com.casic.smart.town.sanxi.extensions.reformat +import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.GlideLoadEngine import com.casic.smart.town.sanxi.util.LoadingDialogHub import com.casic.smart.town.sanxi.util.OnImageCompressListener @@ -33,12 +39,10 @@ import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* import java.io.File -class NotConfirmedDetailActivity : ApplicationBaseActivity() { +class NotConfirmedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel @@ -51,22 +55,24 @@ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 private val realPaths: ArrayList = ArrayList() //真实图片路径 - override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail + override fun initViewBinding(): ActivityOrderNotConfirmedDetailBinding { + return ActivityOrderNotConfirmedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) - addImageRecyclerView.adapter = imageAdapter + binding.addImageRecyclerView.adapter = imageAdapter weakReferenceHandler = WeakReferenceHandler(callback) orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] @@ -98,13 +104,14 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } } override fun initEvent() { - sceneEditView.addTextChangedListener(object : TextWatcher { + binding.sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -115,12 +122,12 @@ 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)) } } }) @@ -129,25 +136,33 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) .setTitle("点位完整位置") @@ -162,20 +177,20 @@ .show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - acceptDateView.text = orderDetail.getJobTime - dispatchDateView.text = orderDetail.createTime + binding.acceptDateView.text = orderDetail.getJobTime + binding.dispatchDateView.text = orderDetail.createTime //提交 - submitButton.setOnClickListener { + binding.submitButton.setOnClickListener { val orderId = orderDetail.jobId.toString() if (orderId.isBlank()) { "工单ID异常,无法确认工单".show(this) return@setOnClickListener } - val state = sceneEditView.text.toString().trim() + val state = binding.sceneEditView.text.toString().trim() if (state.isBlank()) { "请输入现场情况".show(this) return@setOnClickListener @@ -189,12 +204,14 @@ return@setOnClickListener } needHandle = when { - normalRadioButton.isChecked -> { + binding.normalRadioButton.isChecked -> { "0" } - abnormalRadioButton.isChecked -> { + + binding.abnormalRadioButton.isChecked -> { "1" } + else -> { "请选择点位当前情况".show(this) return@setOnClickListener @@ -283,6 +300,7 @@ } }) } + 1 -> { PictureSelector.create(context) .openGallery(SelectMimeType.ofImage()) diff --git a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt index 53bb168..40725b9 100644 --- a/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/smart/town/sanxi/view/order/NotProcessedDetailActivity.kt @@ -1,10 +1,12 @@ package com.casic.smart.town.sanxi.view.order import android.content.Context +import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.smart.town.sanxi.R import com.casic.smart.town.sanxi.base.ApplicationBaseActivity +import com.casic.smart.town.sanxi.databinding.ActivityOrderNotProcessedDetailBinding import com.casic.smart.town.sanxi.extensions.initLayoutImmersionBar import com.casic.smart.town.sanxi.extensions.toChinese import com.casic.smart.town.sanxi.util.LoadingDialogHub @@ -17,29 +19,29 @@ import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog -import kotlinx.android.synthetic.main.activity_order_not_processed_detail.* -import kotlinx.android.synthetic.main.include_base_order_detail.* -import kotlinx.android.synthetic.main.include_base_title.* -class NotProcessedDetailActivity : ApplicationBaseActivity() { +class NotProcessedDetailActivity : + ApplicationBaseActivity() { private lateinit var jobId: String private lateinit var orderViewModel: OrderViewModel private lateinit var operationViewModel: OperationViewModel private val context: Context = this@NotProcessedDetailActivity - override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail + override fun initViewBinding(): ActivityOrderNotProcessedDetailBinding { + return ActivityOrderNotProcessedDetailBinding.inflate(layoutInflater) + } override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(true).statusBarColor(R.color.white).init() - initLayoutImmersionBar(rootView) + initLayoutImmersionBar(binding.rootView) - titleView.text = "工单详情" - leftBackView.visibility = View.VISIBLE - leftBackView.setOnClickListener { finish() } + binding.titleInclude.titleView.text = "工单详情" + binding.titleInclude.leftBackView.visibility = View.VISIBLE + binding.titleInclude.leftBackView.setOnClickListener { finish() } } - override fun initData() { + override fun initOnCreate(savedInstanceState: Bundle?) { jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! orderViewModel = ViewModelProvider(this)[OrderViewModel::class.java] operationViewModel = ViewModelProvider(this)[OperationViewModel::class.java] @@ -64,6 +66,7 @@ LoadingDialogHub.dismiss() this.finish() } + else -> LoadingDialogHub.dismiss() } } @@ -73,52 +76,52 @@ orderViewModel.detailModel.observe(this) { if (it.code == 200) { val orderDetail = it.data!![0] - alarmContentView.text = orderDetail.alarmContentName - alarmDateView.text = orderDetail.alarmTime - orderCodeView.text = orderDetail.jobCode - wellCodeView.text = orderDetail.wellCode - devCodeView.text = orderDetail.devcode + binding.alarmInfoInclude.alarmContentView.text = orderDetail.alarmContentName + binding.alarmInfoInclude.alarmDateView.text = orderDetail.alarmTime + binding.alarmInfoInclude.orderCodeView.text = orderDetail.jobCode + binding.alarmInfoInclude.wellCodeView.text = orderDetail.wellCode + binding.alarmInfoInclude.devCodeView.text = orderDetail.devcode val level = orderDetail.alarmLevel.toString() if (level.isBlank()) { - alarmLevelView.text = "未知" - alarmLevelView.setTextColor(R.color.mainTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = "未知" + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.mainTextColor.convertColor( + this + ) + ) } else { - alarmLevelView.text = level.toChinese() - alarmLevelView.setTextColor(R.color.redTextColor.convertColor(this)) + binding.alarmInfoInclude.alarmLevelView.text = level.toChinese() + binding.alarmInfoInclude.alarmLevelView.setTextColor( + R.color.redTextColor.convertColor( + this + ) + ) } - alarmValueView.text = orderDetail.alarmValue + binding.alarmInfoInclude.alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() - wellLocationView.text = wellPosition + binding.alarmInfoInclude.wellLocationView.text = wellPosition if (wellPosition.length > 12) { - locationTipsView.visibility = View.VISIBLE - locationTipsView.setOnClickListener { - AlertMessageDialog.Builder() - .setContext(this) - .setTitle("点位完整位置") - .setMessage(wellPosition) - .setPositiveButton("知道了") + binding.alarmInfoInclude.locationTipsView.visibility = View.VISIBLE + binding.alarmInfoInclude.locationTipsView.setOnClickListener { + AlertMessageDialog.Builder().setContext(this).setTitle("点位完整位置") + .setMessage(wellPosition).setPositiveButton("知道了") .setOnDialogButtonClickListener(object : AlertMessageDialog.OnDialogButtonClickListener { override fun onConfirmClick() { } - }).build() - .show() + }).build().show() } } else { - locationTipsView.visibility = View.GONE + binding.alarmInfoInclude.locationTipsView.visibility = View.GONE } - dispatchDateView.text = orderDetail.createTime + binding.dispatchDateView.text = orderDetail.createTime //接单 - acceptOrderButton.setOnClickListener { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : + binding.acceptOrderButton.setOnClickListener { + AlertControlDialog.Builder().setContext(this).setTitle("操作提示") + .setMessage("确定要接单吗").setNegativeButton("取消") + .setPositiveButton("确定").setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onConfirmClick() { if (orderDetail.jobId.toString().isBlank()) { diff --git a/app/src/main/res/layout/activity_about_us.xml b/app/src/main/res/layout/activity_about_us.xml index 92b2dea..cd04140 100644 --- a/app/src/main/res/layout/activity_about_us.xml +++ b/app/src/main/res/layout/activity_about_us.xml @@ -7,7 +7,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + diff --git a/app/src/main/res/layout/activity_all_well.xml b/app/src/main/res/layout/activity_all_well.xml index ff02eec..95cf54d 100644 --- a/app/src/main/res/layout/activity_all_well.xml +++ b/app/src/main/res/layout/activity_all_well.xml @@ -6,7 +6,9 @@ android:background="@color/mainBackColor" android:orientation="vertical"> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +