diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt new file mode 100644 index 0000000..14763e8 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt @@ -0,0 +1,63 @@ +package com.casic.qd.smartwell.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.base.BaseActivity +import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.timestampToDate +import com.casic.qd.smartwell.extensions.timestampToLastWeekDate +import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.ChartViewHelper +import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.vm.WaterStatisticsViewModel +import com.github.mikephil.charting.data.Entry +import kotlinx.android.synthetic.main.activity_main.* + +class ExpandedActivity : BaseActivity() { + + private lateinit var waterViewModel: WaterStatisticsViewModel + private val entryModels: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_expanded + + override fun setupTopBarLayout() { + + } + + override fun initData() { + waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + //初始化折线图,X轴从0开始 + ChartViewHelper.initLineChart(waterLineChart, (Constant.ONE_WEEK - 1).toFloat()) + } + + override fun initEvent() { + //一周折线图数据 + val currentTime = System.currentTimeMillis() + waterViewModel.waterCountByDay( + "110000", + currentTime.timestampToLastWeekDate(), + currentTime.timestampToDate() + ) + waterViewModel.areaDataModel.observe(this, { + if (it.code == 200) { + it.data?.forEachIndexed { i, dataBean -> + val entryModel = LineChartEntryModel() + entryModel.lineColor = Constant.COLORS[i].convertColor() + entryModel.entryDate = dataBean.date + + //每个entries都是一条折线 + val entries: ArrayList = ArrayList() + for (j in 0 until Constant.ONE_WEEK) { + val areaData = it.data!![j].data!![i] + entries.add( + Entry(j.toFloat(), areaData.count!!.toFloat(), areaData.areaName) + ) + } + entryModel.entryList = entries + entryModels.add(entryModel) + } + ChartViewHelper.setLineChartData(waterLineChart, entryModels) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt new file mode 100644 index 0000000..14763e8 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt @@ -0,0 +1,63 @@ +package com.casic.qd.smartwell.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.base.BaseActivity +import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.timestampToDate +import com.casic.qd.smartwell.extensions.timestampToLastWeekDate +import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.ChartViewHelper +import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.vm.WaterStatisticsViewModel +import com.github.mikephil.charting.data.Entry +import kotlinx.android.synthetic.main.activity_main.* + +class ExpandedActivity : BaseActivity() { + + private lateinit var waterViewModel: WaterStatisticsViewModel + private val entryModels: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_expanded + + override fun setupTopBarLayout() { + + } + + override fun initData() { + waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + //初始化折线图,X轴从0开始 + ChartViewHelper.initLineChart(waterLineChart, (Constant.ONE_WEEK - 1).toFloat()) + } + + override fun initEvent() { + //一周折线图数据 + val currentTime = System.currentTimeMillis() + waterViewModel.waterCountByDay( + "110000", + currentTime.timestampToLastWeekDate(), + currentTime.timestampToDate() + ) + waterViewModel.areaDataModel.observe(this, { + if (it.code == 200) { + it.data?.forEachIndexed { i, dataBean -> + val entryModel = LineChartEntryModel() + entryModel.lineColor = Constant.COLORS[i].convertColor() + entryModel.entryDate = dataBean.date + + //每个entries都是一条折线 + val entries: ArrayList = ArrayList() + for (j in 0 until Constant.ONE_WEEK) { + val areaData = it.data!![j].data!![i] + entries.add( + Entry(j.toFloat(), areaData.count!!.toFloat(), areaData.areaName) + ) + } + entryModel.entryList = entries + entryModels.add(entryModel) + } + ChartViewHelper.setLineChartData(waterLineChart, entryModels) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 80be752..56ea003 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -153,6 +153,10 @@ ChartViewHelper.setLineChartData(waterLineChart, entryModels) } }) + + expandView.setOnClickListener { + navigatePageTo(ExpandedActivity::class.java) + } } private class WeakReferenceHandler(activity: MainActivity) : Handler(Looper.getMainLooper()) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt new file mode 100644 index 0000000..14763e8 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt @@ -0,0 +1,63 @@ +package com.casic.qd.smartwell.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.base.BaseActivity +import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.timestampToDate +import com.casic.qd.smartwell.extensions.timestampToLastWeekDate +import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.ChartViewHelper +import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.vm.WaterStatisticsViewModel +import com.github.mikephil.charting.data.Entry +import kotlinx.android.synthetic.main.activity_main.* + +class ExpandedActivity : BaseActivity() { + + private lateinit var waterViewModel: WaterStatisticsViewModel + private val entryModels: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_expanded + + override fun setupTopBarLayout() { + + } + + override fun initData() { + waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + //初始化折线图,X轴从0开始 + ChartViewHelper.initLineChart(waterLineChart, (Constant.ONE_WEEK - 1).toFloat()) + } + + override fun initEvent() { + //一周折线图数据 + val currentTime = System.currentTimeMillis() + waterViewModel.waterCountByDay( + "110000", + currentTime.timestampToLastWeekDate(), + currentTime.timestampToDate() + ) + waterViewModel.areaDataModel.observe(this, { + if (it.code == 200) { + it.data?.forEachIndexed { i, dataBean -> + val entryModel = LineChartEntryModel() + entryModel.lineColor = Constant.COLORS[i].convertColor() + entryModel.entryDate = dataBean.date + + //每个entries都是一条折线 + val entries: ArrayList = ArrayList() + for (j in 0 until Constant.ONE_WEEK) { + val areaData = it.data!![j].data!![i] + entries.add( + Entry(j.toFloat(), areaData.count!!.toFloat(), areaData.areaName) + ) + } + entryModel.entryList = entries + entryModels.add(entryModel) + } + ChartViewHelper.setLineChartData(waterLineChart, entryModels) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 80be752..56ea003 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -153,6 +153,10 @@ ChartViewHelper.setLineChartData(waterLineChart, entryModels) } }) + + expandView.setOnClickListener { + navigatePageTo(ExpandedActivity::class.java) + } } private class WeakReferenceHandler(activity: MainActivity) : Handler(Looper.getMainLooper()) { diff --git a/app/src/main/res/drawable/ic_expand.xml b/app/src/main/res/drawable/ic_expand.xml new file mode 100644 index 0000000..614d14e --- /dev/null +++ b/app/src/main/res/drawable/ic_expand.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt new file mode 100644 index 0000000..14763e8 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt @@ -0,0 +1,63 @@ +package com.casic.qd.smartwell.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.base.BaseActivity +import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.timestampToDate +import com.casic.qd.smartwell.extensions.timestampToLastWeekDate +import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.ChartViewHelper +import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.vm.WaterStatisticsViewModel +import com.github.mikephil.charting.data.Entry +import kotlinx.android.synthetic.main.activity_main.* + +class ExpandedActivity : BaseActivity() { + + private lateinit var waterViewModel: WaterStatisticsViewModel + private val entryModels: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_expanded + + override fun setupTopBarLayout() { + + } + + override fun initData() { + waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + //初始化折线图,X轴从0开始 + ChartViewHelper.initLineChart(waterLineChart, (Constant.ONE_WEEK - 1).toFloat()) + } + + override fun initEvent() { + //一周折线图数据 + val currentTime = System.currentTimeMillis() + waterViewModel.waterCountByDay( + "110000", + currentTime.timestampToLastWeekDate(), + currentTime.timestampToDate() + ) + waterViewModel.areaDataModel.observe(this, { + if (it.code == 200) { + it.data?.forEachIndexed { i, dataBean -> + val entryModel = LineChartEntryModel() + entryModel.lineColor = Constant.COLORS[i].convertColor() + entryModel.entryDate = dataBean.date + + //每个entries都是一条折线 + val entries: ArrayList = ArrayList() + for (j in 0 until Constant.ONE_WEEK) { + val areaData = it.data!![j].data!![i] + entries.add( + Entry(j.toFloat(), areaData.count!!.toFloat(), areaData.areaName) + ) + } + entryModel.entryList = entries + entryModels.add(entryModel) + } + ChartViewHelper.setLineChartData(waterLineChart, entryModels) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 80be752..56ea003 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -153,6 +153,10 @@ ChartViewHelper.setLineChartData(waterLineChart, entryModels) } }) + + expandView.setOnClickListener { + navigatePageTo(ExpandedActivity::class.java) + } } private class WeakReferenceHandler(activity: MainActivity) : Handler(Looper.getMainLooper()) { diff --git a/app/src/main/res/drawable/ic_expand.xml b/app/src/main/res/drawable/ic_expand.xml new file mode 100644 index 0000000..614d14e --- /dev/null +++ b/app/src/main/res/drawable/ic_expand.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_expanded.xml b/app/src/main/res/layout/activity_expanded.xml new file mode 100644 index 0000000..1c5d8cf --- /dev/null +++ b/app/src/main/res/layout/activity_expanded.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45a9414..d215e77 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,9 @@ + diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt index 8870765..1e5a885 100644 --- a/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/String.kt @@ -50,3 +50,11 @@ ) return errorModel.message.toString() } + +fun String.formatDate(): String { + if (this.isBlank()) { + return "" + } + val split = this.split("-") + return split[1] + "/" + split[2] +} diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 91b13e9..c3cd0b8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -4,6 +4,7 @@ import com.casic.qd.smartwell.R import com.casic.qd.smartwell.base.BaseApplication import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.formatDate import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.DetailsMarkerView import com.github.mikephil.charting.animation.Easing @@ -45,7 +46,7 @@ //设置x轴 val xAxis: XAxis = chart.xAxis xAxis.textColor = R.color.mainTextColor.convertColor() - xAxis.textSize = 12f + xAxis.textSize = 10f xAxis.axisMaximum = axisMaximum xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 xAxis.setDrawAxisLine(true) //是否绘制轴线 @@ -70,7 +71,11 @@ fun setLineChartData(chart: LineChart, entryModels: List) { val lineDataSets: MutableList = ArrayList() + val xAxisDate: MutableList = ArrayList() entryModels.forEachIndexed { index, it -> + //格式化X轴日期 + xAxisDate.add(it.entryDate.toString().formatDate()) + //设置数据 val dataSet = LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) //线条颜色 @@ -84,6 +89,13 @@ } val lineData = LineData(lineDataSets) lineData.setDrawValues(false) + //设置X轴坐标 + val xAxis = chart.xAxis + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] + } + } chart.data = lineData chart.invalidate() } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt new file mode 100644 index 0000000..14763e8 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/view/ExpandedActivity.kt @@ -0,0 +1,63 @@ +package com.casic.qd.smartwell.view + +import androidx.lifecycle.ViewModelProvider +import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.base.BaseActivity +import com.casic.qd.smartwell.extensions.convertColor +import com.casic.qd.smartwell.extensions.timestampToDate +import com.casic.qd.smartwell.extensions.timestampToLastWeekDate +import com.casic.qd.smartwell.model.LineChartEntryModel +import com.casic.qd.smartwell.utils.ChartViewHelper +import com.casic.qd.smartwell.utils.Constant +import com.casic.qd.smartwell.vm.WaterStatisticsViewModel +import com.github.mikephil.charting.data.Entry +import kotlinx.android.synthetic.main.activity_main.* + +class ExpandedActivity : BaseActivity() { + + private lateinit var waterViewModel: WaterStatisticsViewModel + private val entryModels: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_expanded + + override fun setupTopBarLayout() { + + } + + override fun initData() { + waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) + //初始化折线图,X轴从0开始 + ChartViewHelper.initLineChart(waterLineChart, (Constant.ONE_WEEK - 1).toFloat()) + } + + override fun initEvent() { + //一周折线图数据 + val currentTime = System.currentTimeMillis() + waterViewModel.waterCountByDay( + "110000", + currentTime.timestampToLastWeekDate(), + currentTime.timestampToDate() + ) + waterViewModel.areaDataModel.observe(this, { + if (it.code == 200) { + it.data?.forEachIndexed { i, dataBean -> + val entryModel = LineChartEntryModel() + entryModel.lineColor = Constant.COLORS[i].convertColor() + entryModel.entryDate = dataBean.date + + //每个entries都是一条折线 + val entries: ArrayList = ArrayList() + for (j in 0 until Constant.ONE_WEEK) { + val areaData = it.data!![j].data!![i] + entries.add( + Entry(j.toFloat(), areaData.count!!.toFloat(), areaData.areaName) + ) + } + entryModel.entryList = entries + entryModels.add(entryModel) + } + ChartViewHelper.setLineChartData(waterLineChart, entryModels) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 80be752..56ea003 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -153,6 +153,10 @@ ChartViewHelper.setLineChartData(waterLineChart, entryModels) } }) + + expandView.setOnClickListener { + navigatePageTo(ExpandedActivity::class.java) + } } private class WeakReferenceHandler(activity: MainActivity) : Handler(Looper.getMainLooper()) { diff --git a/app/src/main/res/drawable/ic_expand.xml b/app/src/main/res/drawable/ic_expand.xml new file mode 100644 index 0000000..614d14e --- /dev/null +++ b/app/src/main/res/drawable/ic_expand.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_expanded.xml b/app/src/main/res/layout/activity_expanded.xml new file mode 100644 index 0000000..1c5d8cf --- /dev/null +++ b/app/src/main/res/layout/activity_expanded.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b9a1554..d29dc24 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -147,13 +147,27 @@ - + android:paddingVertical="@dimen/dp_10"> + + + + +