mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-09 03:37:03 +01:00
Stress fragment redesign
This commit is contained in:
parent
bb50796d0a
commit
b43c109903
@ -150,7 +150,7 @@ public class SleepChartFragment extends AbstractActivityChartFragment<SleepChart
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
entries.add(new PieEntry(1));
|
entries.add(new PieEntry(1));
|
||||||
colors.add(Color.GRAY);
|
colors.add(getResources().getColor(R.color.gauge_line_color));
|
||||||
}
|
}
|
||||||
|
|
||||||
PieDataSet set = new PieDataSet(entries, "");
|
PieDataSet set = new PieDataSet(entries, "");
|
||||||
|
@ -18,10 +18,16 @@ package nodomain.freeyourgadget.gadgetbridge.activities.charts;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.text.Spannable;
|
||||||
|
import android.text.SpannableString;
|
||||||
|
import android.text.Spanned;
|
||||||
|
import android.text.style.RelativeSizeSpan;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
@ -45,7 +51,9 @@ import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -66,6 +74,11 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
|
|
||||||
private LineChart mStressChart;
|
private LineChart mStressChart;
|
||||||
private PieChart mStressLevelsPieChart;
|
private PieChart mStressLevelsPieChart;
|
||||||
|
private TextView stressChartRelaxedTime;
|
||||||
|
private TextView stressChartMildTime;
|
||||||
|
private TextView stressChartModerateTime;
|
||||||
|
private TextView stressChartHighTime;
|
||||||
|
private TextView stressDate;
|
||||||
|
|
||||||
private int BACKGROUND_COLOR;
|
private int BACKGROUND_COLOR;
|
||||||
private int DESCRIPTION_COLOR;
|
private int DESCRIPTION_COLOR;
|
||||||
@ -115,10 +128,48 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
@Override
|
@Override
|
||||||
protected void updateChartsnUIThread(final StressChartsData stressData) {
|
protected void updateChartsnUIThread(final StressChartsData stressData) {
|
||||||
final PieData pieData = stressData.getPieData();
|
final PieData pieData = stressData.getPieData();
|
||||||
if (stressData.getAverage() > 0) {
|
|
||||||
mStressLevelsPieChart.setCenterText(requireContext().getString(R.string.average, String.valueOf(stressData.getAverage())));
|
Date date = new Date((long) this.getTSEnd() * 1000);
|
||||||
|
String formattedDate = new SimpleDateFormat("E, MMM dd").format(date);
|
||||||
|
stressDate.setText(formattedDate);
|
||||||
|
|
||||||
|
Map<StressType, Integer> stressZoneTimes = stressData.getStressZoneTimes();
|
||||||
|
Integer relaxedTime = stressZoneTimes.get(StressType.RELAXED);
|
||||||
|
if (0 < relaxedTime) {
|
||||||
|
stressChartRelaxedTime.setText(DateTimeUtils.formatDurationHoursMinutes(relaxedTime, TimeUnit.SECONDS));
|
||||||
} else {
|
} else {
|
||||||
mStressLevelsPieChart.setCenterText(requireContext().getString(R.string.no_data));
|
stressChartRelaxedTime.setText(R.string.stats_empty_value);
|
||||||
|
}
|
||||||
|
Integer mildTime = stressZoneTimes.get(StressType.MILD);
|
||||||
|
if (mildTime > 0) {
|
||||||
|
stressChartMildTime.setText(DateTimeUtils.formatDurationHoursMinutes(mildTime, TimeUnit.SECONDS));
|
||||||
|
} else {
|
||||||
|
stressChartMildTime.setText(R.string.stats_empty_value);
|
||||||
|
}
|
||||||
|
Integer moderateTime = stressZoneTimes.get(StressType.MODERATE);
|
||||||
|
if (moderateTime > 0) {
|
||||||
|
stressChartModerateTime.setText(DateTimeUtils.formatDurationHoursMinutes(moderateTime, TimeUnit.SECONDS));
|
||||||
|
} else {
|
||||||
|
stressChartModerateTime.setText(R.string.stats_empty_value);
|
||||||
|
}
|
||||||
|
Integer highTime = stressZoneTimes.get(StressType.HIGH);
|
||||||
|
if (highTime > 0) {
|
||||||
|
stressChartHighTime.setText(DateTimeUtils.formatDurationHoursMinutes(highTime, TimeUnit.SECONDS));
|
||||||
|
} else {
|
||||||
|
stressChartHighTime.setText(R.string.stats_empty_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stressData.getAverage() > 0) {
|
||||||
|
int noc = String.valueOf(stressData.getAverage()).length();
|
||||||
|
SpannableString pieChartCenterText = new SpannableString(stressData.getAverage() + "\n" + requireContext().getString(R.string.stress_average));
|
||||||
|
pieChartCenterText.setSpan(new RelativeSizeSpan(1.75f), 0, noc, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
pieChartCenterText.setSpan(new RelativeSizeSpan(0.72f), noc, pieChartCenterText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
mStressLevelsPieChart.setCenterText(pieChartCenterText);
|
||||||
|
} else {
|
||||||
|
SpannableString pieChartCenterText = new SpannableString("-\n" + requireContext().getString(R.string.stress_average));
|
||||||
|
pieChartCenterText.setSpan(new RelativeSizeSpan(1.25f), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
pieChartCenterText.setSpan(new RelativeSizeSpan(0.72f), 2, pieChartCenterText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||||
|
mStressLevelsPieChart.setCenterText(pieChartCenterText);
|
||||||
}
|
}
|
||||||
mStressLevelsPieChart.setData(pieData);
|
mStressLevelsPieChart.setData(pieData);
|
||||||
|
|
||||||
@ -147,8 +198,19 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
final Bundle savedInstanceState) {
|
final Bundle savedInstanceState) {
|
||||||
final View rootView = inflater.inflate(R.layout.fragment_stresschart, container, false);
|
final View rootView = inflater.inflate(R.layout.fragment_stresschart, container, false);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
rootView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
|
||||||
|
getChartsHost().enableSwipeRefresh(scrollY == 0);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
mStressChart = rootView.findViewById(R.id.stress_line_chart);
|
mStressChart = rootView.findViewById(R.id.stress_line_chart);
|
||||||
mStressLevelsPieChart = rootView.findViewById(R.id.stress_pie_chart);
|
mStressLevelsPieChart = rootView.findViewById(R.id.stress_pie_chart);
|
||||||
|
stressChartRelaxedTime = rootView.findViewById(R.id.stress_chart_relaxed_time);
|
||||||
|
stressChartMildTime = rootView.findViewById(R.id.stress_chart_mild_time);
|
||||||
|
stressChartModerateTime = rootView.findViewById(R.id.stress_chart_moderate_time);
|
||||||
|
stressChartHighTime = rootView.findViewById(R.id.stress_chart_high_time);
|
||||||
|
stressDate = rootView.findViewById(R.id.stress_date);
|
||||||
|
|
||||||
setupLineChart();
|
setupLineChart();
|
||||||
setupPieChart();
|
setupPieChart();
|
||||||
@ -165,6 +227,12 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
mStressLevelsPieChart.setEntryLabelColor(DESCRIPTION_COLOR);
|
mStressLevelsPieChart.setEntryLabelColor(DESCRIPTION_COLOR);
|
||||||
mStressLevelsPieChart.getDescription().setText("");
|
mStressLevelsPieChart.getDescription().setText("");
|
||||||
mStressLevelsPieChart.setNoDataText("");
|
mStressLevelsPieChart.setNoDataText("");
|
||||||
|
mStressLevelsPieChart.setTouchEnabled(false);
|
||||||
|
mStressLevelsPieChart.setCenterTextColor(GBApplication.getTextColor(getContext()));
|
||||||
|
mStressLevelsPieChart.setCenterTextSize(18f);
|
||||||
|
mStressLevelsPieChart.setHoleColor(getContext().getResources().getColor(R.color.transparent));
|
||||||
|
mStressLevelsPieChart.setHoleRadius(85);
|
||||||
|
mStressLevelsPieChart.setDrawEntryLabels(false);
|
||||||
mStressLevelsPieChart.getLegend().setEnabled(false);
|
mStressLevelsPieChart.getLegend().setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -380,18 +448,25 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
final List<ILineDataSet> lineDataSets = new ArrayList<>();
|
final List<ILineDataSet> lineDataSets = new ArrayList<>();
|
||||||
final List<PieEntry> pieEntries = new ArrayList<>();
|
final List<PieEntry> pieEntries = new ArrayList<>();
|
||||||
final List<Integer> pieColors = new ArrayList<>();
|
final List<Integer> pieColors = new ArrayList<>();
|
||||||
|
final Map<StressType, Integer> stressZoneTimes = new HashMap<>();
|
||||||
|
|
||||||
for (final StressType stressType : StressType.values()) {
|
for (final StressType stressType : StressType.values()) {
|
||||||
final List<Entry> stressEntries = lineEntriesPerLevel.get(stressType);
|
final List<Entry> stressEntries = lineEntriesPerLevel.get(stressType);
|
||||||
lineDataSets.add(createDataSet(stressType, stressEntries));
|
lineDataSets.add(createDataSet(stressType, stressEntries));
|
||||||
|
|
||||||
final Integer stressTime = accumulator.get(stressType);
|
final Integer stressTime = accumulator.get(stressType);
|
||||||
|
stressZoneTimes.put(stressType, stressTime);
|
||||||
if (stressType != StressType.UNKNOWN && stressTime != null && stressTime != 0) {
|
if (stressType != StressType.UNKNOWN && stressTime != null && stressTime != 0) {
|
||||||
pieEntries.add(new PieEntry(stressTime, stressType.getLabel(requireContext())));
|
pieEntries.add(new PieEntry(stressTime, stressType.getLabel(requireContext())));
|
||||||
pieColors.add(stressType.getColor(requireContext()));
|
pieColors.add(stressType.getColor(requireContext()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pieEntries.isEmpty()) {
|
||||||
|
pieEntries.add(new PieEntry(1));
|
||||||
|
pieColors.add(getResources().getColor(R.color.gauge_line_color));
|
||||||
|
}
|
||||||
|
|
||||||
final PieDataSet pieDataSet = new PieDataSet(pieEntries, "");
|
final PieDataSet pieDataSet = new PieDataSet(pieEntries, "");
|
||||||
pieDataSet.setValueFormatter(new ValueFormatter() {
|
pieDataSet.setValueFormatter(new ValueFormatter() {
|
||||||
@Override
|
@Override
|
||||||
@ -404,12 +479,14 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
pieDataSet.setValueTextSize(13f);
|
pieDataSet.setValueTextSize(13f);
|
||||||
pieDataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
|
pieDataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
|
||||||
pieDataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
|
pieDataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
|
||||||
|
pieDataSet.setDrawValues(false);
|
||||||
|
pieDataSet.setSliceSpace(2f);
|
||||||
final PieData pieData = new PieData(pieDataSet);
|
final PieData pieData = new PieData(pieDataSet);
|
||||||
|
|
||||||
final LineData lineData = new LineData(lineDataSets);
|
final LineData lineData = new LineData(lineDataSets);
|
||||||
final ValueFormatter xValueFormatter = new SampleXLabelFormatter(tsTranslation);
|
final ValueFormatter xValueFormatter = new SampleXLabelFormatter(tsTranslation);
|
||||||
final DefaultChartsData<LineData> chartsData = new DefaultChartsData<>(lineData, xValueFormatter);
|
final DefaultChartsData<LineData> chartsData = new DefaultChartsData<>(lineData, xValueFormatter);
|
||||||
return new StressChartsData(pieData, chartsData, Math.round((float) averageSum / averageNumSamples));
|
return new StressChartsData(pieData, chartsData, Math.round((float) averageSum / averageNumSamples), stressZoneTimes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,11 +494,17 @@ public class StressChartFragment extends AbstractChartFragment<StressChartFragme
|
|||||||
private final PieData pieData;
|
private final PieData pieData;
|
||||||
private final DefaultChartsData<LineData> chartsData;
|
private final DefaultChartsData<LineData> chartsData;
|
||||||
private final int average;
|
private final int average;
|
||||||
|
private Map<StressType, Integer> stressZoneTimes;
|
||||||
|
|
||||||
public StressChartsData(final PieData pieData, final DefaultChartsData<LineData> chartsData, final int average) {
|
public StressChartsData(final PieData pieData, final DefaultChartsData<LineData> chartsData, final int average, Map<StressType, Integer> stressZoneTimes) {
|
||||||
this.pieData = pieData;
|
this.pieData = pieData;
|
||||||
this.chartsData = chartsData;
|
this.chartsData = chartsData;
|
||||||
this.average = average;
|
this.average = average;
|
||||||
|
this.stressZoneTimes = stressZoneTimes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<StressType, Integer> getStressZoneTimes() {
|
||||||
|
return stressZoneTimes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PieData getPieData() {
|
public PieData getPieData() {
|
||||||
|
@ -1,69 +0,0 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:context="nodomain.freeyourgadget.gadgetbridge.activities.charts.ActivityChartsActivity$PlaceholderFragment">
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/sleepchart_info"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:scrollbarAlwaysDrawVerticalTrack="true"
|
|
||||||
android:scrollbarFadeDuration="0"
|
|
||||||
android:layout_weight="90" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="10"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.PieChart
|
|
||||||
android:id="@+id/sleepchart_pie_light_deep"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_weight="40" />
|
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.LineChart
|
|
||||||
android:id="@+id/sleepchart"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_weight="20" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<!--<TextView-->
|
|
||||||
<!--android:text="Test"-->
|
|
||||||
<!--android:layout_width="fill_parent"-->
|
|
||||||
<!--android:layout_height="fill_parent"-->
|
|
||||||
<!--android:layout_weight="20" />-->
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
<include
|
|
||||||
layout="@layout/layout_widget_heartrate_average"
|
|
||||||
android:layout_width="50dp"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_gravity="top|end"
|
|
||||||
android:layout_marginTop="25dp"
|
|
||||||
android:layout_marginStart="170dp" />
|
|
||||||
|
|
||||||
<include
|
|
||||||
layout="@layout/layout_widget_intensity_total"
|
|
||||||
android:layout_width="50dp"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_gravity="top|end"
|
|
||||||
android:layout_marginTop="75dp"
|
|
||||||
android:layout_marginStart="171dp" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
@ -1,32 +0,0 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:context="nodomain.freeyourgadget.gadgetbridge.activities.charts.ActivityChartsActivity$PlaceholderFragment">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="10"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.PieChart
|
|
||||||
android:id="@+id/stress_pie_chart"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_weight="40" />
|
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.LineChart
|
|
||||||
android:id="@+id/stress_line_chart"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_weight="20" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</RelativeLayout>
|
|
@ -1,25 +1,188 @@
|
|||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:orientation="vertical"
|
|
||||||
tools:context="nodomain.freeyourgadget.gadgetbridge.activities.charts.ActivityChartsActivity$PlaceholderFragment">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stress_date"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
|
android:gravity="center"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.PieChart
|
<com.github.mikephil.charting.charts.PieChart
|
||||||
android:id="@+id/stress_pie_chart"
|
android:id="@+id/stress_pie_chart"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="200dp"
|
||||||
|
android:layout_marginTop="15dp"
|
||||||
android:layout_weight="2" />
|
android:layout_weight="2" />
|
||||||
|
|
||||||
|
<TableLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="30dp"
|
||||||
|
android:layout_weight="3"
|
||||||
|
android:shrinkColumns="*"
|
||||||
|
android:stretchColumns="*">
|
||||||
|
|
||||||
|
<TableRow
|
||||||
|
android:id="@+id/tableRow1"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:weightSum="2">
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="20dip"
|
||||||
|
android:paddingTop="20dip"
|
||||||
|
android:paddingRight="20dip">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="5dp"
|
||||||
|
android:background="@color/chart_stress_relaxed" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stress_chart_relaxed_time"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:layout_marginTop="20dip"
|
||||||
|
android:text="@string/stats_empty_value"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="left"
|
||||||
|
android:text="@string/stress_relaxed"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="20dip"
|
||||||
|
android:paddingTop="20dip"
|
||||||
|
android:paddingRight="20dip">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="5dp"
|
||||||
|
android:background="@color/chart_stress_mild" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stress_chart_mild_time"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:layout_marginTop="20dip"
|
||||||
|
android:text="@string/stats_empty_value"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:text="@string/stress_mild"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</TableRow>
|
||||||
|
|
||||||
|
<TableRow
|
||||||
|
android:id="@+id/tableRow2"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:weightSum="2">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="20dip"
|
||||||
|
android:paddingTop="20dip"
|
||||||
|
android:paddingRight="20dip">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="5dp"
|
||||||
|
android:background="@color/chart_stress_moderate" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stress_chart_moderate_time"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:layout_marginTop="20dip"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/stats_empty_value"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/stress_moderate"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="20dip"
|
||||||
|
android:paddingTop="20dip"
|
||||||
|
android:paddingRight="20dip">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="5dp"
|
||||||
|
android:background="@color/chart_stress_high" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stress_chart_high_time"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:layout_marginTop="20dip"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/stats_empty_value"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="@string/stress_high"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
</TableRow>
|
||||||
|
</TableLayout>
|
||||||
|
|
||||||
<com.github.mikephil.charting.charts.LineChart
|
<com.github.mikephil.charting.charts.LineChart
|
||||||
android:id="@+id/stress_line_chart"
|
android:id="@+id/stress_line_chart"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent"
|
android:layout_height="300dp"
|
||||||
|
android:layout_marginBottom="25dp"
|
||||||
android:layout_weight="2" />
|
android:layout_weight="2" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
</ScrollView>
|
||||||
|
@ -954,6 +954,7 @@
|
|||||||
<string name="lack_of_step">Lack of steps: %1$d</string>
|
<string name="lack_of_step">Lack of steps: %1$d</string>
|
||||||
<string name="overstep">Overstep: %1$d</string>
|
<string name="overstep">Overstep: %1$d</string>
|
||||||
<string name="average">Average: %1$s</string>
|
<string name="average">Average: %1$s</string>
|
||||||
|
<string name="stress_average">Average</string>
|
||||||
<string name="pref_huami_truncate_fetch_operation_timestamps_title">Truncate fetch operation timestamps</string>
|
<string name="pref_huami_truncate_fetch_operation_timestamps_title">Truncate fetch operation timestamps</string>
|
||||||
<string name="pref_huami_truncate_fetch_operation_timestamps_summary">Truncate the fetch operation timestamps to minutes. Disable this setting to keep the timestamps in seconds, if you face issues while fetching very short workouts.</string>
|
<string name="pref_huami_truncate_fetch_operation_timestamps_summary">Truncate the fetch operation timestamps to minutes. Disable this setting to keep the timestamps in seconds, if you face issues while fetching very short workouts.</string>
|
||||||
<string name="pref_title_dont_ack_transfer">Do not ACK activity data transfer</string>
|
<string name="pref_title_dont_ack_transfer">Do not ACK activity data transfer</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user