From 88fa5aa9631b263e6e3d99d9ee787f73e78c6fda Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期五, 17 五月 2024 14:54:53 +0800 Subject: [PATCH] 2024年05月17日14:54:51 --- app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java | 136 +++++--------- app/src/main/res/layout/fragment_home_page.xml | 18 + app/src/main/res/values/strings.xml | 4 app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java | 18 + app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java | 4 app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java | 4 app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java | 193 +++++++++++++++++++++ app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java | 34 +++ app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java | 8 app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java | 64 ++++++ app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 23 -- 11 files changed, 371 insertions(+), 135 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java index c866afe..8569903 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java @@ -21,6 +21,8 @@ import java.io.InputStream; import java.io.OutputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.InetSocketAddress; import java.net.Socket; import java.util.Hashtable; @@ -48,6 +50,37 @@ } return sHdlCommonLogic; + } + + public static String getConvertDoubleUnit(String value) { + if (TextUtils.isEmpty(value)) { + return HdlDeviceLogic.noValue ; + } + BigDecimal formattedValue = getBigDecimal(value); + return formattedValue.toString() ; + + } + + public static String getConvertDoubleUnit(int value) { + if (value == 0) { + return HdlDeviceLogic.noValue ; + } + BigDecimal formattedValue = getBigDecimal(value + ""); + return formattedValue.toString() ; + } + + + public static String convertString(Object value) { + return String.valueOf(value); + } + + + public static BigDecimal getBigDecimal(String value) { + if (TextUtils.isEmpty(value)) { + return new BigDecimal(0); + } + double doubleValue = Double.parseDouble(value); + return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP); } @@ -131,7 +164,6 @@ } } - } diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java index 59c99f1..4be1d77 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -82,30 +82,7 @@ private List<DeviceBean> mListDevice = new ArrayList<>(); - public static String getConvertDoubleUnit(String value) { - if (TextUtils.isEmpty(value)) { - return noValue + kWh; - } - BigDecimal formattedValue = getBigDecimal(value); - return formattedValue + kWh; - } - - public static String getConvertDoubleUnit(int value) { - if (value == 0) { - return noValue + kWh; - } - BigDecimal formattedValue = getBigDecimal(value + ""); - return formattedValue + kWh; - } - - private static BigDecimal getBigDecimal(String value) { - if (TextUtils.isEmpty(value)) { - return new BigDecimal(0); - } - double doubleValue = Double.parseDouble(value); - return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP); - } public void clearDeviceList() { if (mListDevice == null) { diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java index 2976c31..95928d5 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java @@ -6,14 +6,19 @@ import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.hdl.linkpm.sdk.core.exception.HDLException; +import com.hdl.photovoltaic.config.UserConfigManage; +import com.hdl.photovoltaic.enums.TimeType; import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.internet.api.HttpApi; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.DataOverBean; import com.hdl.photovoltaic.ui.bean.SocialContributionBean; import com.hdl.photovoltaic.ui.bean.StatisticsBean; +import com.hdl.photovoltaic.utils.TimeUtils; import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; /** @@ -38,6 +43,7 @@ } return sHdlPowerStationDataStatisticsLogic; } + /** * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害) @@ -87,9 +93,19 @@ public void getStatistics(String type, String time, CloudCallBeak<List<StatisticsBean>> cloudCallBeak) { String requestUrl = HttpApi.POST_Home_page_statistics; JsonObject json = new JsonObject(); - json.addProperty("dataType", "GE");//鍙戠數閲� + json.addProperty("dataType", "GE");//鍙戠數閲忥紙GE 锛� 鍙戠數閲� ;POWER 锛� 鍙戠數鍔熺巼锛� json.addProperty("type", type);//绫诲瀷 if (!TextUtils.isEmpty(time)) { + if (!UserConfigManage.getInstance().isZh()) { + //鑻辨枃鐨勬椂鍊欓渶瑕佹棩鏈熸牸寮� + if (TimeType.day.equals(type)) { + String[] ary = time.split("/"); + time = ary[2] + "/" + ary[1] + "/" + ary[0]; + } else if (TimeType.month.equals(type)) { + String[] ary = time.split("/"); + time = ary[1] + "/" + ary[0]; + } + } json.addProperty("time", time);//鏃堕棿 } //json.addProperty("zoneType", "password");//鍖哄煙 diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java index 39483f2..a8040cd 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java @@ -10,7 +10,7 @@ public class StatisticsBean implements Serializable { private String fieldName;// 鎻忚堪 - private int fieldValue;//鍊� + private String fieldValue;//鍊� private String time;// 鏃堕棿 public String getFieldName() { @@ -21,11 +21,11 @@ this.fieldName = fieldName; } - public int getFieldValue() { - return fieldValue; + public String getFieldValue() { + return fieldValue == null ? "" : fieldValue; } - public void setFieldValue(int fieldValue) { + public void setFieldValue(String fieldValue) { this.fieldValue = fieldValue; } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java index c048c81..6f08954 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java @@ -26,6 +26,7 @@ import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.TimeType; import com.hdl.photovoltaic.listener.CloudCallBeak; +import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlPowerStationDataStatisticsLogic; @@ -63,8 +64,8 @@ AAChartModel aaChartModel; - private String[] fieldNames = {"00:00", "02:00", "05:00", "07:00", "09:00", "17:00", "22:00", "23:59"};//鍥炬爣X杞村潗鏍囧�肩殑鏁扮粍 - private Object[] fieldValues = {35, 70.5, 150.5, 135, 170, 205, 222, 245};//鍥炬爣Y杞村潗鏍囧�肩殑鏁扮粍 + private String[] fieldNames = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"};//鍥炬爣X杞村潗鏍囧�肩殑鏁扮粍 + private Object[] fieldValues = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};//鍥炬爣Y杞村潗鏍囧�肩殑鏁扮粍 private String timeType = TimeType.day;//鏃堕棿绫诲瀷(榛樿锛氬ぉ) @@ -147,7 +148,7 @@ viewBinding.v3.setVisibility(View.VISIBLE); viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE); - String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat()); + String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType)); viewBinding.yearMonthDayTv.setText(dataStr); getStatistics(); @@ -178,7 +179,7 @@ viewBinding.v2.setVisibility(View.GONE); viewBinding.v3.setVisibility(View.VISIBLE); viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE); - String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat()); + String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType)); viewBinding.yearMonthDayTv.setText(dataStr); getStatistics(); @@ -210,7 +211,7 @@ viewBinding.v2.setVisibility(View.GONE); viewBinding.v3.setVisibility(View.GONE); viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE); - String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat()); + String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType)); viewBinding.yearMonthDayTv.setText(dataStr); getStatistics(); } @@ -252,11 +253,11 @@ if (TextUtils.isEmpty(currDate)) { return; } - String timeDateFormat = getTimeDateFormat(); + String timeDateFormat = TimeUtils.getTimeDateFormat(timeType); Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat); String time = TimeUtils.subtractDayMonthYearFromDate(calendar, 1, timeDateFormat, timeType); viewBinding.yearMonthDayTv.setText(time); - + getStatistics(); } }); @@ -268,15 +269,16 @@ if (TextUtils.isEmpty(currDate)) { return; } - String timeDateFormat = getTimeDateFormat(); + String timeDateFormat = TimeUtils.getTimeDateFormat(timeType); Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat); String time = TimeUtils.addDayMonthYearToDate(calendar, 1, timeDateFormat, timeType); - if (TimeUtils.stringDateToTimestamp(time, timeDateFormat) > getCurrentTimestamp()) { + if (TimeUtils.stringDateToTimestamp(time, timeDateFormat) > TimeUtils.getCurrentTimestamp()) { HdlThreadLogic.toast(_mActivity, getString(R.string.the_query_date_is_exceeded)); return; } viewBinding.yearMonthDayTv.setText(time); + getStatistics(); } }); //璁剧疆涓嬫媺绠ご棰滆壊 @@ -298,9 +300,9 @@ private void selectedTimePickerBuilder() { String currDate = viewBinding.yearMonthDayTv.getText().toString(); //鏃堕棿閫夋嫨鍣� - Calendar selectedDate = TimeUtils.stringToCalendar(currDate, getTimeDateFormat()); + Calendar selectedDate = TimeUtils.stringToCalendar(currDate, TimeUtils.getTimeDateFormat(timeType)); Calendar startDate = Calendar.getInstance(); - Calendar endDate = TimeUtils.timestampToCalendar(getCurrentTimestamp()); + Calendar endDate = TimeUtils.timestampToCalendar(TimeUtils.getCurrentTimestamp()); //璁剧疆鏃ユ湡銆愬紑濮嬨�戝拰銆愮粨鏉熴�� startDate.set(2023, 1, 1); endDate.set(endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH)); @@ -316,7 +318,7 @@ TimePickerView pvTime = new TimePickerBuilder(_mActivity, new OnTimeSelectListener() { @Override public void onTimeSelect(Date date, View v) {//閫変腑浜嬩欢鍥炶皟 - String timeDateFormat = getTimeDateFormat(); + String timeDateFormat = TimeUtils.getTimeDateFormat(timeType); String time = TimeUtils.dateToString(date, timeDateFormat); if (viewBinding.yearMonthDayTv.getText().toString().equals(time)) { //琛ㄧず鍚屼竴涓椂闂� @@ -356,11 +358,11 @@ aaChartView = viewBinding.autoSizeMyAAChart; aaChartView.callBack = this; if (TimeType.day.equals(timeType)) { - aaChartModel = BasicChartComposer.configureAreaChart("Pv鍙戠數鍔熺巼", fieldNames, fieldValues); + aaChartModel = BasicChartComposer.configureAreaChart(getString(R.string.pv_power), fieldNames, fieldValues); } else if (TimeType.month.equals(timeType) || TimeType.year.equals(timeType) || TimeType.all.equals(timeType)) { - aaChartModel = configureColorfulColumnChart("Pv鍙戠數鍔熺巼", fieldNames, fieldValues); + aaChartModel = configureColorfulColumnChart(getString(R.string.pv_power), fieldNames, fieldValues); } aaChartView.aa_drawChartWithChartModel(aaChartModel); @@ -374,7 +376,7 @@ viewBinding.homeOfflineIl.stationTitleTv.setText(getString(R.string.my_power_station_off_line)); viewBinding.homeConnectedIl.stationTitleTv.setText(getString(R.string.to_be_added)); - String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat()); + String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType)); viewBinding.yearMonthDayTv.setText(dataStr); String installed_capacity = getString(R.string.installed_capacity) + "(" + HdlDeviceLogic.kWp + ")"; @@ -444,10 +446,10 @@ if (statusOverviewBean == null) { return; } - viewBinding.homeAllIl.stationTotalTv.setText(statusOverviewBean.getTotal() + ""); - viewBinding.homeFaultsIl.stationTotalTv.setText(statusOverviewBean.getFault() + ""); - viewBinding.homeOfflineIl.stationTotalTv.setText(statusOverviewBean.getOffline() + ""); - viewBinding.homeConnectedIl.stationTotalTv.setText(statusOverviewBean.getConnecting() + ""); + viewBinding.homeAllIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getTotal())); + viewBinding.homeFaultsIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getFault())); + viewBinding.homeOfflineIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getOffline())); + viewBinding.homeConnectedIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getConnecting())); } @Override @@ -462,6 +464,7 @@ * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害) */ private void getDataOver() { + HdlPowerStationDataStatisticsLogic.getInstance().getDataOver(new CloudCallBeak<DataOverBean>() { @Override public void onSuccess(DataOverBean dataOverBean) { @@ -471,14 +474,14 @@ if (dataOverBean == null) { return; } - viewBinding.infoRl1Text1Tv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getInstalledCapacity())); - viewBinding.infoRl1Text3Tv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getPower())); + viewBinding.infoRl1Text1Tv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getInstalledCapacity())); + viewBinding.infoRl1Text3Tv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getPower())); viewBinding.infoRl1FText1Tv.setText(dataOverBean.getPowerRatio()); - viewBinding.homePageStationInfoRl2DayIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getTodayElectricity())); - viewBinding.homePageStationInfoRl2MonIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getMonthElectricity())); - viewBinding.homePageStationInfoRl2YearIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getYearElectricity())); - viewBinding.homePageStationInfoRl2CumulativeIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getTotalElectricity())); + viewBinding.homePageStationInfoRl2DayIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getTodayElectricity())); + viewBinding.homePageStationInfoRl2MonIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getMonthElectricity())); + viewBinding.homePageStationInfoRl2YearIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getYearElectricity())); + viewBinding.homePageStationInfoRl2CumulativeIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getTotalElectricity())); } }); } @@ -495,21 +498,27 @@ */ private void getStatistics() { String currDate = viewBinding.yearMonthDayTv.getText().toString(); - HdlPowerStationDataStatisticsLogic.getInstance().getStatistics(currDate, timeType, new CloudCallBeak<List<StatisticsBean>>() { + HdlPowerStationDataStatisticsLogic.getInstance().getStatistics(timeType, currDate, new CloudCallBeak<List<StatisticsBean>>() { @Override public void onSuccess(List<StatisticsBean> list) { - if (list == null || list.size() == 0) { - return; - } - String[] keys = new String[list.size()]; - Object[] values = new Object[list.size()]; - for (int i = 0; i < list.size(); i++) { - keys[i] = list.get(i).getFieldName(); - values[i] = list.get(i).getFieldValue(); - } - fieldNames = keys; - fieldValues = values; - setUpAAChartView(); + HdlThreadLogic.runMainThread(new Runnable() { + @Override + public void run() { + if (list == null || list.size() == 0) { + return; + } + String[] keys = new String[list.size()]; + Object[] values = new Object[list.size()]; + for (int i = 0; i < list.size(); i++) { + keys[i] = list.get(i).getFieldName(); + values[i] = HdlCommonLogic.getBigDecimal(list.get(i).getFieldValue()).intValue();//鑾峰彇鏁存暟閮ㄥ垎 + } + fieldNames = keys; + fieldValues = values; + setUpAAChartView(); + } + }); + } @Override @@ -529,9 +538,9 @@ if (socialContributionBean == null) { return; } - viewBinding.socialContributionData1Tv.setText(socialContributionBean.getCoal()); - viewBinding.socialContributionData2Tv.setText(socialContributionBean.getCo2()); - viewBinding.socialContributionData3Tv.setText(socialContributionBean.getTreePlanting()); + viewBinding.socialContributionData1Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getCoal()))); + viewBinding.socialContributionData2Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getCo2()))); + viewBinding.socialContributionData3Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getTreePlanting()))); } @Override @@ -539,51 +548,6 @@ } }); - } - - - /** - * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴� - * - * @return 鏃堕棿鎴� - */ - private long getCurrentTimestamp() { - return new Date().getTime(); - } - - /** - * 鑾峰彇鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd) - * - * @return 鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd) - */ - private String getTimeDateFormat() { - String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; - switch (timeType) { - case TimeType.day: { - timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; - if (!UserConfigManage.getInstance().isZh()) { - timeDateFormat = TimeUtils.enDateYearMonthDayFormat; - } - } - break; - case TimeType.month: { - timeDateFormat = TimeUtils.zhDateYearMonthFormat; - if (!UserConfigManage.getInstance().isZh()) { - timeDateFormat = TimeUtils.enDateYearMonthFormat; - } - } - break; - case TimeType.year: - case TimeType.all: { - timeDateFormat = TimeUtils.zhDateYearFormat; - if (!UserConfigManage.getInstance().isZh()) { - timeDateFormat = TimeUtils.enDateYearFormat; - } - } - break; - - } - return timeDateFormat; } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java index 67d941a..9d9686f 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java @@ -56,7 +56,7 @@ .legendEnabled(false) .markerRadius(0) // .markerSymbol(AAChartSymbolType.Circle) -// .markerSymbolStyle(AAChartSymbolStyleType.Normal) + .markerSymbolStyle(AAChartSymbolStyleType.Normal) .chartType(AAChartType.Area) .categories(new String[]{"涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀", "涓冩湀", "鍏湀", "涔濇湀", "鍗佹湀", "鍗佷竴鏈�", "鍗佷簩鏈�"}) .series(new AASeriesElement[]{element1}); @@ -95,7 +95,7 @@ // .markerSymbolStyle(AAChartSymbolStyleType.Normal) .chartType(AAChartType.Area) .categories(categories) -// .zoomType(AAChartZoomType.None)//鎵嬪娍缂╂斁 + .zoomType(AAChartZoomType.None)//鎵嬪娍缂╂斁 // .yAxisMax(500) .yAxisMin(0) .series(new AASeriesElement[]{element1}); diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java index 102353a..d985836 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java @@ -195,12 +195,12 @@ .colorsTheme(new String[]{"#38C494",}) .categories(categories) .xAxisLabelsEnabled(true) - .zoomType(AAChartZoomType.XY) + .zoomType(AAChartZoomType.None) .legendEnabled(false) .series(new AASeriesElement[]{ new AASeriesElement() // .color(linearGradientColor) - .name("涓滀含") + .name(tipSuspendName) .data(data) // .colorByPoint(true) .tooltip(new AATooltip().style(new AAStyle().backgroundColor("#FFFFFF").fontSize(25))) diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java new file mode 100644 index 0000000..cf8ec0a --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java @@ -0,0 +1,193 @@ +package com.hdl.photovoltaic.utils; + +import android.graphics.Paint; +import android.graphics.Typeface; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextPaint; +import android.text.style.BackgroundColorSpan; +import android.text.style.ClickableSpan; +import android.text.style.ForegroundColorSpan; +import android.text.style.MetricAffectingSpan; +import android.text.style.RelativeSizeSpan; +import android.view.View; + +import androidx.annotation.NonNull; + + +/** + * String瀛楃涓查�氳繃鍖洪棿鏉ユ敼鍙橀鑹诧紝澶у皬锛屽瓧浣擄紝涓嬪垝绾跨瓑 + */ +public class SpanUtils { + + private long mLastClickTime = 0; + public static final int TIME_INTERVAL = 1000; + + + private static volatile SpanUtils sSpanUtils; + + + /** + * 鑾峰彇褰撳墠瀵硅薄 + * + * @return HdlCommonLogic + */ + public static synchronized SpanUtils getInstance() { + if (sSpanUtils == null) { + synchronized (SpanUtils.class) { + if (sSpanUtils == null) { + sSpanUtils = new SpanUtils(); + } + } + + } + return sSpanUtils; + } + + private SpanUtils() { + } + + /** + * 鍙樺ぇ鍙樺皬 + */ + public CharSequence toSizeSpan(CharSequence charSequence, int start, int end, float scale) { + + SpannableString spannableString = new SpannableString(charSequence); + + spannableString.setSpan( + new RelativeSizeSpan(scale), + start, + end, + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + + return spannableString; + } + + /** + * 鍙樿壊 + */ + public CharSequence toColorSpan(CharSequence charSequence, int start, int end, int color) { + + SpannableString spannableString = new SpannableString(charSequence); + + spannableString.setSpan( + new ForegroundColorSpan(color), + start, + end, + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + + return spannableString; + } + + /** + * 鍙樿儗鏅壊 + */ + public CharSequence toBackgroundColorSpan(CharSequence charSequence, int start, int end, int color) { + + SpannableString spannableString = new SpannableString(charSequence); + + spannableString.setSpan( + new BackgroundColorSpan(color), + start, + end, + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + + return spannableString; + } + + + /** + * 鍙偣鍑�-甯︿笅鍒掔嚎 + */ + public CharSequence toClickSpan(CharSequence charSequence, int start, int end, int color, boolean needUnderLine, OnSpanClickListener listener) { + + SpannableString spannableString = new SpannableString(charSequence); + + ClickableSpan clickableSpan = new ClickableSpan() { + @Override + public void onClick(@NonNull View widget) { + if (listener != null) { + //闃叉閲嶅鐐瑰嚮 + if (System.currentTimeMillis() - mLastClickTime >= TIME_INTERVAL) { + //to do + listener.onClick(charSequence.subSequence(start, end)); + + mLastClickTime = System.currentTimeMillis(); + } + + } + } + + @Override + public void updateDrawState(@NonNull TextPaint ds) { + ds.setColor(color); + ds.setUnderlineText(needUnderLine); + } + }; + + spannableString.setSpan( + clickableSpan, + start, + end, + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + + return spannableString; + } + + public interface OnSpanClickListener { + void onClick(CharSequence charSequence); + } + + + /** + * 鍙樻垚鑷畾涔夌殑瀛椾綋 + */ + public CharSequence toCustomTypeFaceSpan(CharSequence charSequence, int start, int end, Typeface typeface) { + + SpannableString spannableString = new SpannableString(charSequence); + + spannableString.setSpan( + new MyTypefaceSpan(typeface), + start, + end, + Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + + return spannableString; + } + + /** + * 绯荤粺鍘熺敓鐨凾ypefaceSpan鍙兘浣跨敤鍘熺敓鐨勯粯璁ゅ瓧浣� + * 濡傛灉浣跨敤鑷畾涔夌殑瀛椾綋锛岄�氳繃杩欎釜鏉ュ疄鐜� + */ + public class MyTypefaceSpan extends MetricAffectingSpan { + private final Typeface typeface; + + public MyTypefaceSpan(final Typeface typeface) { + this.typeface = typeface; + } + + @Override + public void updateDrawState(final TextPaint drawState) { + apply(drawState); + } + + @Override + public void updateMeasureState(final TextPaint paint) { + apply(paint); + } + + private void apply(final Paint paint) { + final Typeface oldTypeface = paint.getTypeface(); + final int oldStyle = oldTypeface != null ? oldTypeface.getStyle() : 0; + int fakeStyle = oldStyle & ~typeface.getStyle(); + if ((fakeStyle & Typeface.BOLD) != 0) { + paint.setFakeBoldText(true); + } + if ((fakeStyle & Typeface.ITALIC) != 0) { + paint.setTextSkewX(-0.25f); + } + paint.setTypeface(typeface); + } + } +} + diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java index 3d5578d..fee374f 100644 --- a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java +++ b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java @@ -24,8 +24,52 @@ public static final String zhDateYearFormat = "yyyy"; public static final String enDateYearMonthDayFormat = "dd/MM/yyyy"; - public static final String enDateYearMonthFormat = "/MM/yyyy"; + public static final String enDateYearMonthFormat = "MM/yyyy"; public static final String enDateYearFormat = "yyyy"; + + /** + * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴� + * + * @return 鏃堕棿鎴� + */ + public static long getCurrentTimestamp() { + return new Date().getTime(); + } + + /** + * 鑾峰彇鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd) + * + * @return 鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd) + */ + public static String getTimeDateFormat(String timeType) { + String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; + switch (timeType) { + case TimeType.day: { + timeDateFormat = TimeUtils.zhDateYearMonthDayFormat; + if (!UserConfigManage.getInstance().isZh()) { + timeDateFormat = TimeUtils.enDateYearMonthDayFormat; + } + } + break; + case TimeType.month: { + timeDateFormat = TimeUtils.zhDateYearMonthFormat; + if (!UserConfigManage.getInstance().isZh()) { + timeDateFormat = TimeUtils.enDateYearMonthFormat; + } + } + break; + case TimeType.year: + case TimeType.all: { + timeDateFormat = TimeUtils.zhDateYearFormat; + if (!UserConfigManage.getInstance().isZh()) { + timeDateFormat = TimeUtils.enDateYearFormat; + } + } + break; + + } + return timeDateFormat; + } /** * 鑾峰彇鍒嗛挓 @@ -35,7 +79,7 @@ */ public static String getMinuteTime(long timestamp) { try { - SimpleDateFormat dateFormat = new SimpleDateFormat("mm", Locale.ENGLISH); + SimpleDateFormat dateFormat = new SimpleDateFormat("mm", getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { @@ -53,7 +97,7 @@ */ public static String getDateTimestamp(long timestamp, String date_format) { try { - SimpleDateFormat dateFormat = new SimpleDateFormat(date_format, Locale.ENGLISH); + SimpleDateFormat dateFormat = new SimpleDateFormat(date_format, getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { @@ -74,7 +118,7 @@ if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) { pattern = "dd-MM-yyyy HH:mm"; } - SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.ENGLISH); + SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, getLocale()); Date date = new Date(timestamp); return dateFormat.format(date); } catch (Exception e) { @@ -184,7 +228,7 @@ * @return Calendar瀵硅薄 */ public static Calendar stringToCalendar(String dateString, String dateFormat) { - SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH); + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); Calendar calendar = Calendar.getInstance(); try { Date date = sdf.parse(dateString); @@ -203,7 +247,7 @@ * @return Calendar瀵硅薄 */ public static String calendarToString(Calendar calendar, String dateFormat) { - SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH); + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); return sdf.format(calendar.getTime()); } @@ -214,7 +258,7 @@ * @return Calendar瀵硅薄 */ public static String dateToString(Date date, String dateFormat) { - SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH); + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale()); return sdf.format(date.getTime()); } @@ -227,7 +271,7 @@ */ public static long stringDateToTimestamp(String dateString, String dateFormat) { try { - SimpleDateFormat slf = new SimpleDateFormat(dateFormat, Locale.getDefault()); + SimpleDateFormat slf = new SimpleDateFormat(dateFormat, getLocale()); Date date = slf.parse(dateString); if (date == null) { return 0; @@ -238,4 +282,8 @@ return 0; } + private static Locale getLocale() { + return Locale.ENGLISH; + } + } diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml index 193afad..b51770e 100644 --- a/app/src/main/res/layout/fragment_home_page.xml +++ b/app/src/main/res/layout/fragment_home_page.xml @@ -103,11 +103,13 @@ <TextView android:id="@+id/info_rl1_f_text1_tv" - android:layout_width="56dp" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerVertical="true" + android:layout_centerInParent="true" + android:layout_marginStart="@dimen/dp_6" android:gravity="end|center_vertical" android:text="88" + android:textColor="@color/text_E6000000" android:textSize="@dimen/text_26" android:textStyle="bold" /> @@ -528,8 +530,8 @@ android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="@dimen/dp_10" - android:layout_marginTop="@dimen/dp_35" - android:text="s" + android:layout_marginTop="@dimen/dp_39" + android:text="@string/saving_standard_coal" android:textColor="@color/text_66000000" android:textSize="@dimen/text_12" /> @@ -584,8 +586,8 @@ android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="@dimen/dp_10" - android:layout_marginTop="@dimen/dp_35" - android:text="s" + android:layout_marginTop="@dimen/dp_39" + android:text="@string/co_reduction_rate" android:textColor="@color/text_66000000" android:textSize="@dimen/text_12" /> @@ -639,8 +641,8 @@ android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginStart="@dimen/dp_10" - android:layout_marginTop="@dimen/dp_35" - android:text="s" + android:layout_marginTop="@dimen/dp_39" + android:text="@string/quantity_of_equivalent_values" android:textColor="@color/text_66000000" android:textSize="@dimen/text_12" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c06509..67943ad 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -293,4 +293,8 @@ <string name="email_address">閭鍦板潃</string> <string name="successful_replication">澶嶅埗鎴愬姛</string> <string name="to_be_added">寰呮帴鍏�</string> + <string name="saving_standard_coal">鑺傜害鏍囧噯鐓�</string> + <string name="co_reduction_rate">CO2鍑忔帓</string> + <string name="quantity_of_equivalent_values">绛夋晥鍊兼暟閲�</string> + <string name="pv_power">Pv鍙戠數鍔熺巼</string> </resources> \ No newline at end of file -- Gitblit v1.8.0