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