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 @@