diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml
deleted file mode 100644
index d90eb44..0000000
--- a/app/src/main/res/layout/item_big_picture.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml
deleted file mode 100644
index d90eb44..0000000
--- a/app/src/main/res/layout/item_big_picture.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_device_rv_l.xml b/app/src/main/res/layout/item_device_rv_l.xml
index 2657f5c..66114f8 100644
--- a/app/src/main/res/layout/item_device_rv_l.xml
+++ b/app/src/main/res/layout/item_device_rv_l.xml
@@ -1,6 +1,5 @@
+ android:layout_height="wrap_content">
-
+ android:textSize="@dimen/sp_12" />
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml
deleted file mode 100644
index d90eb44..0000000
--- a/app/src/main/res/layout/item_big_picture.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_device_rv_l.xml b/app/src/main/res/layout/item_device_rv_l.xml
index 2657f5c..66114f8 100644
--- a/app/src/main/res/layout/item_device_rv_l.xml
+++ b/app/src/main/res/layout/item_device_rv_l.xml
@@ -1,6 +1,5 @@
+ android:layout_height="wrap_content">
-
+ android:textSize="@dimen/sp_12" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_group_over_view_rv_l.xml b/app/src/main/res/layout/item_group_over_view_rv_l.xml
index e7179c6..eb7b044 100644
--- a/app/src/main/res/layout/item_group_over_view_rv_l.xml
+++ b/app/src/main/res/layout/item_group_over_view_rv_l.xml
@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white"
android:orientation="vertical"
android:padding="@dimen/dp_10">
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml
deleted file mode 100644
index d90eb44..0000000
--- a/app/src/main/res/layout/item_big_picture.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_device_rv_l.xml b/app/src/main/res/layout/item_device_rv_l.xml
index 2657f5c..66114f8 100644
--- a/app/src/main/res/layout/item_device_rv_l.xml
+++ b/app/src/main/res/layout/item_device_rv_l.xml
@@ -1,6 +1,5 @@
+ android:layout_height="wrap_content">
-
+ android:textSize="@dimen/sp_12" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_group_over_view_rv_l.xml b/app/src/main/res/layout/item_group_over_view_rv_l.xml
index e7179c6..eb7b044 100644
--- a/app/src/main/res/layout/item_group_over_view_rv_l.xml
+++ b/app/src/main/res/layout/item_group_over_view_rv_l.xml
@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white"
android:orientation="vertical"
android:padding="@dimen/dp_10">
diff --git a/app/src/main/res/layout/widget_view_empty.xml b/app/src/main/res/layout/widget_view_empty.xml
deleted file mode 100644
index f5b48f1..0000000
--- a/app/src/main/res/layout/widget_view_empty.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index cd8f7c4..ad8477e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -62,7 +62,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.1'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.1.4'
def base_version = "1.6.1"
implementation "androidx.appcompat:appcompat:${base_version}"
implementation "com.google.android.material:material:${base_version}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0be8031..529403a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
- android:theme="@style/AppTheme"
+ android:theme="@style/Theme.SmartTube"
android:usesCleartextTraffic="true">
+ android:theme="@style/Theme.CustomActivityAnimation" />
@@ -61,8 +61,7 @@
val lelValueView: TextView = holder.itemView.findViewById(R.id.lelValueView)
val volValueView: TextView = holder.itemView.findViewById(R.id.volValueView)
val installDateView: TextView = holder.itemView.findViewById(R.id.installDateView)
- val dataHistoryButton: QMUIRoundButton =
- holder.itemView.findViewById(R.id.dataHistoryButton)
+ val dataHistoryButton: Button = holder.itemView.findViewById(R.id.dataHistoryButton)
//绑定数据
val rowsBean = dataRows[position]
diff --git a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
index 82996e8..f94274d 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/LineChart.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.github.mikephil.charting.animation.Easing
import com.github.mikephil.charting.charts.Chart
import com.github.mikephil.charting.charts.LineChart
@@ -13,7 +12,7 @@
fun LineChart.init(labelCount: Int) {
this.setNoDataText("无数据,无法渲染...")
this.setNoDataTextColor(R.color.orangeTextColor)
- this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(BaseApplication.obtainInstance()).toFloat()
+ this.getPaint(Chart.PAINT_INFO).textSize = 14f.dp2px(this.context)
this.setDrawGridBackground(false)
this.setDrawBorders(false)
this.animateY(1200, Easing.EaseInOutQuad)
@@ -28,7 +27,7 @@
this.isScaleYEnabled = false //Y轴不可缩放
//设置x轴
val xAxis: XAxis = this.xAxis
- xAxis.textColor = R.color.mainTextColor.convertColor(BaseApplication.obtainInstance())
+ xAxis.textColor = R.color.mainTextColor.convertColor(this.context)
xAxis.textSize = 10f
xAxis.labelCount = labelCount //x轴标签数量
xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值
diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
index d896eb5..5ebc06f 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt
@@ -187,7 +187,7 @@
val latLng = LatLng(latitudeList[0], longitudeList[0])
val cameraPosition = CameraPosition(latLng, 14f, 0f, 0f)
val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition)
- aMap.animateCamera(cameraUpdate, 1500, null)
+ aMap.animateCamera(cameraUpdate)
}
}
}
diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
index e997f6a..1d0aa3d 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -1,11 +1,11 @@
package com.casic.smarttube.fragment
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.DividerItemDecoration
import com.amap.api.services.core.LatLonPoint
import com.amap.api.services.geocoder.GeocodeResult
import com.amap.api.services.geocoder.GeocodeSearch
@@ -16,16 +16,18 @@
import com.casic.smarttube.model.ProjectGroupModel
import com.casic.smarttube.view.GroupDeviceActivity
import com.casic.smarttube.vm.ProjectGroupViewModel
-import com.casic.smarttube.widgets.EmptyView
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.divider.RecyclerViewItemDivider
import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.widget.EmptyView
import com.pengxh.kt.lite.widget.TitleBarView
import com.pengxh.kt.lite.widget.dialog.AlertInputDialog
class OverviewFragment : KotlinBaseFragment() {
+ private val kTag = "OverviewFragment"
private val geocoderSearch by lazy { GeocodeSearch(requireContext()) }
private lateinit var groupViewModel: ProjectGroupViewModel
private lateinit var groupListAdapter: NormalRecyclerAdapter
@@ -48,13 +50,12 @@
bindRecyclerView(it)
}
}
- groupViewModel.getGroupList()
-
groupViewModel.changeGroupResult.observe(this) {
if (it.code == 200) {
groupListAdapter.notifyItemChanged(clickedPosition)
}
}
+ groupViewModel.getGroupList()
}
private fun bindRecyclerView(it: ProjectGroupModel) {
@@ -105,7 +106,7 @@
}
}
binding.recyclerView.addItemDecoration(
- DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL)
+ RecyclerViewItemDivider(0f, 0f, Color.LTGRAY)
)
binding.recyclerView.adapter = groupListAdapter
groupListAdapter.setOnItemClickedListener(object :
diff --git a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
index 69b7f0c..5f65387 100644
--- a/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/CenterMarkerView.kt
@@ -19,7 +19,7 @@
import com.amap.api.services.geocoder.RegeocodeQuery
import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.smarttube.R
-import com.pengxh.kt.lite.extensions.breakLine
+import com.pengxh.kt.lite.extensions.wrapLine
class CenterMarkerView(private val context: Context, private var aMap: AMap) {
private lateinit var centerMarker: Marker
@@ -44,7 +44,7 @@
if (code == 1000) {
//手动换行
val address = regeocodeResult.regeocodeAddress.formatAddress
- locationView.text = address.breakLine(22)
+ locationView.text = address.wrapLine(22)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
index aaef036..a4db48e 100644
--- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt
@@ -1,7 +1,6 @@
package com.casic.smarttube.utils
import com.casic.smarttube.R
-import com.casic.smarttube.base.BaseApplication
import com.casic.smarttube.extensions.init
import com.casic.smarttube.widgets.LineChartMarkerView
import com.github.mikephil.charting.charts.LineChart
@@ -37,11 +36,11 @@
val dataSet = LineDataSet(entries, entries[0].data.toString())
dataSet.setDrawCircles(true)
//圆点颜色
- dataSet.setCircleColor(R.color.redTextColor.convertColor(BaseApplication.obtainInstance()))
+ dataSet.setCircleColor(R.color.redTextColor.convertColor(chart.context))
//线条颜色
- dataSet.color = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+ dataSet.color = R.color.redTextColor.convertColor(chart.context)
dataSet.setDrawFilled(false)
-// dataSet.fillColor = R.color.redTextColor.convertColor(BaseApplication.obtainInstance())
+// dataSet.fillColor = R.color.redTextColor.convertColor(chart.context)
dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER
lineDataSets.add(dataSet)
@@ -56,7 +55,11 @@
val xAxis = chart.xAxis
xAxis.valueFormatter = object : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
- return xAxisDate[value.toInt()]
+ return if (xAxisDate.size == 1) {
+ xAxisDate[0]
+ } else {
+ xAxisDate[value.toInt()]
+ }
}
}
chart.data = lineData
diff --git a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
index 4a7e884..6050a4d 100644
--- a/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/BigImageActivity.kt
@@ -1,31 +1,22 @@
package com.casic.smarttube.view
-import android.content.Context
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import androidx.viewpager.widget.PagerAdapter
-import androidx.viewpager.widget.ViewPager
-import com.bumptech.glide.Glide
+import androidx.viewpager2.widget.ViewPager2
import com.casic.smarttube.R
import com.casic.smarttube.databinding.ActivityBigImageBinding
-import com.casic.smarttube.extensions.initImmersionBar
-import com.luck.picture.lib.photoview.PhotoView
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
import com.pengxh.kt.lite.base.KotlinBaseActivity
-import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.LiteKitConstant
class BigImageActivity : KotlinBaseActivity() {
-
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
override fun setupTopBarLayout() {
- ActivityStackManager.addActivity(this)
- binding.rootView.initImmersionBar(this, true, R.color.black)
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
}
override fun initOnCreate(savedInstanceState: Bundle?) {
@@ -34,25 +25,25 @@
if (urls == null || urls.size == 0) {
return
}
- binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
- binding.imagePagerView.adapter = BigImageAdapter(this, urls)
- binding.imagePagerView.currentItem = index
- binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
- override fun onPageScrollStateChanged(state: Int) {
-
+ val imageSize = urls.size
+ binding.indexView.text = String.format("(${(index + 1)}/${imageSize})")
+ val adapter = object : NormalRecyclerAdapter(R.layout.item_big_image, urls) {
+ override fun convertView(viewHolder: ViewHolder, position: Int, item: String) {
+ viewHolder.setImageResource(R.id.photoView, item)
}
-
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
-
+ }
+ binding.viewPager.adapter = adapter
+ binding.viewPager.currentItem = index
+ adapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(position: Int, item: String) {
+ finish()
}
+ })
+ binding.viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
- binding.pageNumberView.text =
- String.format("(" + (position + 1) + "/" + urls.size + ")")
+ binding.indexView.text = String.format("(${(position + 1)}/${imageSize})")
}
})
}
@@ -62,33 +53,6 @@
}
override fun initEvent() {
- binding.leftBackView.setOnClickListener { this.finish() }
- }
-
- inner class BigImageAdapter(private var context: Context, imageList: ArrayList) :
- PagerAdapter() {
-
- private var images: ArrayList = imageList
-
- override fun getCount(): Int = images.size
-
- override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
-
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view = LayoutInflater.from(context).inflate(
- R.layout.item_big_picture, container, false
- )
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(images[position]).into(photoView)
- photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
- container.addView(view)
- //点击大图取消预览
- photoView.setOnClickListener { finish() }
- return view
- }
-
- override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
- container.removeView(obj as View)
- }
+ binding.leftBackView.setOnClickListener { finish() }
}
}
diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
index f93caaf..8bc6ab5 100644
--- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -18,7 +18,7 @@
import com.casic.smarttube.model.DeviceDetailModel
import com.casic.smarttube.utils.RouteOnMap
import com.casic.smarttube.vm.DeviceViewModel
-import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter
+import com.pengxh.kt.lite.adapter.GridViewImageAdapter
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
@@ -106,7 +106,7 @@
urls.add(path.combineImagePath())
}
}
- val imageAdapter = ReadOnlyImageAdapter(this, urls)
+ val imageAdapter = GridViewImageAdapter(this, urls)
binding.imageGridView.adapter = imageAdapter
binding.imageGridView.setOnItemClickListener { _, _, position, _ ->
if (urls[position].isEmpty()) {
diff --git a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt b/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
deleted file mode 100644
index 6646439..0000000
--- a/app/src/main/java/com/casic/smarttube/widgets/EmptyView.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.casic.smarttube.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.widget.LinearLayout
-import com.casic.smarttube.databinding.WidgetViewEmptyBinding
-
-class EmptyView(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
-
- private var binding: WidgetViewEmptyBinding
-
- init {
- binding = WidgetViewEmptyBinding.inflate(LayoutInflater.from(context), this, true)
- binding.reloadButton.setOnClickListener {
- listener?.onReloadButtonClicked()
- }
- }
-
- private var listener: OnClickListener? = null
-
- fun setOnClickListener(listener: OnClickListener?) {
- this.listener = listener
- }
-
- interface OnClickListener {
- fun onReloadButtonClicked()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_empty.xml b/app/src/main/res/drawable/ic_empty.xml
deleted file mode 100644
index 8f39874..0000000
--- a/app/src/main/res/drawable/ic_empty.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml
index f4bac32..5f55b26 100644
--- a/app/src/main/res/layout/activity_add_device.xml
+++ b/app/src/main/res/layout/activity_add_device.xml
@@ -233,7 +233,8 @@
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
index 4a07241..88592cd 100644
--- a/app/src/main/res/layout/activity_big_image.xml
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -1,39 +1,35 @@
-
+ android:background="@color/black">
-
+ android:layout_height="match_parent" />
-
+
-
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml
index 83ec477..84ed762 100644
--- a/app/src/main/res/layout/activity_device_detail.xml
+++ b/app/src/main/res/layout/activity_device_detail.xml
@@ -175,14 +175,12 @@
diff --git a/app/src/main/res/layout/activity_group_device.xml b/app/src/main/res/layout/activity_group_device.xml
index 9fb1059..f75eb99 100644
--- a/app/src/main/res/layout/activity_group_device.xml
+++ b/app/src/main/res/layout/activity_group_device.xml
@@ -15,11 +15,6 @@
app:tbv_show_right_image="true"
app:tbv_smaller_title="true" />
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index c7ac8fb..91d4a60 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -40,8 +40,7 @@
android:background="@null"
android:hint="请输入账号"
android:singleLine="true"
- android:textSize="@dimen/sp_16"
- android:theme="@style/EditTextTheme" />
+ android:textSize="@dimen/sp_16" />
+ android:textSize="@dimen/sp_16" />
+ android:background="@color/lib_line_color" />
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/lib_sp_14" />
+ android:background="@color/lib_line_color" />
+ android:textSize="@dimen/lib_sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_select_date.xml b/app/src/main/res/layout/dialog_select_date.xml
index 675f4e7..1a458c5 100644
--- a/app/src/main/res/layout/dialog_select_date.xml
+++ b/app/src/main/res/layout/dialog_select_date.xml
@@ -9,7 +9,7 @@
+ android:layout_height="@dimen/lib_px_1"
+ android:layout_marginTop="@dimen/lib_dp_20"
+ android:background="@color/lib_line_color" />
+ android:textColor="@color/red"
+ android:textSize="@dimen/sp_14" />
+ android:textSize="@dimen/sp_14" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index f6027bd..92daa2b 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -35,7 +35,7 @@
android:orientation="vertical"
app:behavior_fitToContents="false"
app:behavior_halfExpandedRatio="0.5"
- app:behavior_hideable="true"
+ app:behavior_hideable="false"
app:behavior_peekHeight="30dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml
index 7296194..e035231 100644
--- a/app/src/main/res/layout/fragment_mine.xml
+++ b/app/src/main/res/layout/fragment_mine.xml
@@ -71,13 +71,14 @@
@@ -224,7 +225,8 @@
diff --git a/app/src/main/res/layout/fragment_overview.xml b/app/src/main/res/layout/fragment_overview.xml
index ea583f3..f5aff85 100644
--- a/app/src/main/res/layout/fragment_overview.xml
+++ b/app/src/main/res/layout/fragment_overview.xml
@@ -3,7 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/mainBackColor"
+ android:background="@color/white"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/include_empty_view.xml b/app/src/main/res/layout/include_empty_view.xml
deleted file mode 100644
index 37de024..0000000
--- a/app/src/main/res/layout/include_empty_view.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_image.xml b/app/src/main/res/layout/item_big_image.xml
new file mode 100644
index 0000000..d90eb44
--- /dev/null
+++ b/app/src/main/res/layout/item_big_image.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_big_picture.xml b/app/src/main/res/layout/item_big_picture.xml
deleted file mode 100644
index d90eb44..0000000
--- a/app/src/main/res/layout/item_big_picture.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_device_rv_l.xml b/app/src/main/res/layout/item_device_rv_l.xml
index 2657f5c..66114f8 100644
--- a/app/src/main/res/layout/item_device_rv_l.xml
+++ b/app/src/main/res/layout/item_device_rv_l.xml
@@ -1,6 +1,5 @@
+ android:layout_height="wrap_content">
-
+ android:textSize="@dimen/sp_12" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_group_over_view_rv_l.xml b/app/src/main/res/layout/item_group_over_view_rv_l.xml
index e7179c6..eb7b044 100644
--- a/app/src/main/res/layout/item_group_over_view_rv_l.xml
+++ b/app/src/main/res/layout/item_group_over_view_rv_l.xml
@@ -3,7 +3,6 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/white"
android:orientation="vertical"
android:padding="@dimen/dp_10">
diff --git a/app/src/main/res/layout/widget_view_empty.xml b/app/src/main/res/layout/widget_view_empty.xml
deleted file mode 100644
index f5b48f1..0000000
--- a/app/src/main/res/layout/widget_view_empty.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index d0a8ac4..f92b64a 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,34 +1,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file