forked from upstream-mirrors/OpenTracks
Recorded/Recording nested layouts converted to constraint layout. Fixes #15.
This commit is contained in:
+2
-1
@@ -100,7 +100,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'androidx.appcompat:appcompat:1.1.0'
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
||||||
implementation 'androidx.preference:preference:1.1.0'
|
implementation 'androidx.preference:preference:1.1.1'
|
||||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||||
|
|
||||||
androidTestImplementation 'androidx.test:core:1.2.0'
|
androidTestImplementation 'androidx.test:core:1.2.0'
|
||||||
@@ -114,4 +114,5 @@ dependencies {
|
|||||||
testImplementation 'androidx.test:core:1.2.0'
|
testImplementation 'androidx.test:core:1.2.0'
|
||||||
testImplementation 'org.mockito:mockito-core:3.0.0'
|
testImplementation 'org.mockito:mockito-core:3.0.0'
|
||||||
implementation 'com.google.android.material:material:1.1.0'
|
implementation 'com.google.android.material:material:1.1.0'
|
||||||
|
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ TrackListActivity --> TrackRecordedActivity : Show track
|
|||||||
TrackListActivity --> TrackDeleteActivity
|
TrackListActivity --> TrackDeleteActivity
|
||||||
|
|
||||||
SearchListActivity --> MarkerDetailActivity : Search result
|
SearchListActivity --> MarkerDetailActivity : Search result
|
||||||
SearchListActivity --> TrackDetailActivity : Search result
|
SearchListActivity --> TrackRecordedActivity : Search result
|
||||||
|
|
||||||
TrackRecordedActivity --> TrackDeleteActivity
|
TrackRecordedActivity --> TrackDeleteActivity
|
||||||
TrackRecordedActivity --> TrackEditActivity
|
TrackRecordedActivity --> TrackEditActivity
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.constraintlayout.widget.Group;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
@@ -99,10 +100,11 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Views */
|
/* Views */
|
||||||
private View heartRateContainer;
|
private View sensorHorizontalLine;
|
||||||
|
private Group heartRateGroup;
|
||||||
private TextView heartRateValueView;
|
private TextView heartRateValueView;
|
||||||
private TextView heartRateSensorView;
|
private TextView heartRateSensorView;
|
||||||
private View cadenceContainer;
|
private Group cadenceGroup;
|
||||||
private TextView cadenceValueView;
|
private TextView cadenceValueView;
|
||||||
private TextView cadenceSensorView;
|
private TextView cadenceSensorView;
|
||||||
|
|
||||||
@@ -133,16 +135,13 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
private TextView speedMovingLabel;
|
private TextView speedMovingLabel;
|
||||||
private TextView speedMovingValue;
|
private TextView speedMovingValue;
|
||||||
private TextView speedMovingUnit;
|
private TextView speedMovingUnit;
|
||||||
private View elevationSeparator;
|
private Group elevationGroup;
|
||||||
private View elevationContainer;
|
|
||||||
private View speedContainer;
|
|
||||||
private TextView speedLabel;
|
private TextView speedLabel;
|
||||||
private TextView speedValue;
|
private TextView speedValue;
|
||||||
private TextView speedUnit;
|
private TextView speedUnit;
|
||||||
private TextView elevationValue;
|
private TextView elevationValue;
|
||||||
private TextView elevationUnit;
|
private TextView elevationUnit;
|
||||||
private View coordinateSeparator;
|
private Group coordinateGroup;
|
||||||
private View coordinateContainer;
|
|
||||||
private TextView latitudeValue;
|
private TextView latitudeValue;
|
||||||
private TextView longitudeValue;
|
private TextView longitudeValue;
|
||||||
|
|
||||||
@@ -150,11 +149,13 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
heartRateContainer = view.findViewById(R.id.stats_sensor_heart_rate_container);
|
sensorHorizontalLine = view.findViewById(R.id.stats_sensor_horizontal_line);
|
||||||
|
|
||||||
|
heartRateGroup = view.findViewById(R.id.stats_sensor_heart_rate_group);
|
||||||
heartRateValueView = view.findViewById(R.id.stats_sensor_heart_rate_value);
|
heartRateValueView = view.findViewById(R.id.stats_sensor_heart_rate_value);
|
||||||
heartRateSensorView = view.findViewById(R.id.stats_sensor_heart_rate_sensor_value);
|
heartRateSensorView = view.findViewById(R.id.stats_sensor_heart_rate_sensor_value);
|
||||||
|
|
||||||
cadenceContainer = view.findViewById(R.id.stats_sensor_cadence_container);
|
cadenceGroup = view.findViewById(R.id.stats_sensor_cadence_group);
|
||||||
cadenceValueView = view.findViewById(R.id.stats_sensor_cadence_value);
|
cadenceValueView = view.findViewById(R.id.stats_sensor_cadence_value);
|
||||||
cadenceSensorView = view.findViewById(R.id.stats_sensor_cadence_sensor_value);
|
cadenceSensorView = view.findViewById(R.id.stats_sensor_cadence_sensor_value);
|
||||||
|
|
||||||
@@ -180,10 +181,8 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
speedMovingValue = view.findViewById(R.id.stats_moving_speed_value);
|
speedMovingValue = view.findViewById(R.id.stats_moving_speed_value);
|
||||||
speedMovingUnit = view.findViewById(R.id.stats_moving_speed_unit);
|
speedMovingUnit = view.findViewById(R.id.stats_moving_speed_unit);
|
||||||
|
|
||||||
elevationSeparator = view.findViewById(R.id.stats_elevation_separator);
|
elevationGroup = view.findViewById(R.id.stats_elevation_current_group);
|
||||||
elevationContainer = view.findViewById(R.id.stats_elevation_container);
|
|
||||||
|
|
||||||
speedContainer = view.findViewById(R.id.stats_speed);
|
|
||||||
speedLabel = view.findViewById(R.id.stats_speed_label);
|
speedLabel = view.findViewById(R.id.stats_speed_label);
|
||||||
speedValue = view.findViewById(R.id.stats_speed_value);
|
speedValue = view.findViewById(R.id.stats_speed_value);
|
||||||
speedUnit = view.findViewById(R.id.stats_speed_unit);
|
speedUnit = view.findViewById(R.id.stats_speed_unit);
|
||||||
@@ -191,8 +190,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
elevationValue = view.findViewById(R.id.stats_elevation_current_value);
|
elevationValue = view.findViewById(R.id.stats_elevation_current_value);
|
||||||
elevationUnit = view.findViewById(R.id.stats_elevation_current_unit);
|
elevationUnit = view.findViewById(R.id.stats_elevation_current_unit);
|
||||||
|
|
||||||
coordinateSeparator = view.findViewById(R.id.stats_coordinate_separator);
|
coordinateGroup = view.findViewById(R.id.stats_coordinate_group);
|
||||||
coordinateContainer = view.findViewById(R.id.stats_coordinate_container);
|
|
||||||
|
|
||||||
latitudeValue = view.findViewById(R.id.stats_latitude_value);
|
latitudeValue = view.findViewById(R.id.stats_latitude_value);
|
||||||
longitudeValue = view.findViewById(R.id.stats_longitude_value);
|
longitudeValue = view.findViewById(R.id.stats_longitude_value);
|
||||||
@@ -261,10 +259,12 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
heartRateContainer = null;
|
sensorHorizontalLine = null;
|
||||||
|
|
||||||
|
heartRateGroup = null;
|
||||||
heartRateValueView = null;
|
heartRateValueView = null;
|
||||||
heartRateSensorView = null;
|
heartRateSensorView = null;
|
||||||
cadenceContainer = null;
|
cadenceGroup = null;
|
||||||
cadenceValueView = null;
|
cadenceValueView = null;
|
||||||
cadenceSensorView = null;
|
cadenceSensorView = null;
|
||||||
|
|
||||||
@@ -290,10 +290,8 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
speedMovingValue = null;
|
speedMovingValue = null;
|
||||||
speedMovingUnit = null;
|
speedMovingUnit = null;
|
||||||
|
|
||||||
elevationSeparator = null;
|
elevationGroup = null;
|
||||||
elevationContainer = null;
|
|
||||||
|
|
||||||
speedContainer = null;
|
|
||||||
speedLabel = null;
|
speedLabel = null;
|
||||||
speedValue = null;
|
speedValue = null;
|
||||||
speedUnit = null;
|
speedUnit = null;
|
||||||
@@ -301,8 +299,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
elevationValue = null;
|
elevationValue = null;
|
||||||
elevationUnit = null;
|
elevationUnit = null;
|
||||||
|
|
||||||
coordinateSeparator = null;
|
coordinateGroup = null;
|
||||||
coordinateContainer = null;
|
|
||||||
|
|
||||||
latitudeValue = null;
|
latitudeValue = null;
|
||||||
longitudeValue = null;
|
longitudeValue = null;
|
||||||
@@ -433,57 +430,65 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
sensorDataSet = trackRecordingService.getSensorData();
|
sensorDataSet = trackRecordingService.getSensorData();
|
||||||
}
|
}
|
||||||
|
|
||||||
setHeartRateSensorData(sensorDataSet, isSelectedTrackRecording());
|
setHeartRateSensorData(sensorDataSet);
|
||||||
setCadenceSensorData(sensorDataSet, isSelectedTrackRecording());
|
setCadenceSensorData(sensorDataSet);
|
||||||
setSpeedSensorData(sensorDataSet, isSelectedTrackRecording());
|
setSpeedSensorData(sensorDataSet, isSelectedTrackRecording());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setHeartRateSensorData(SensorDataSet sensorDataSet, boolean isRecording) {
|
private void setHeartRateSensorData(SensorDataSet sensorDataSet) {
|
||||||
int isVisible = View.VISIBLE;
|
int isVisible = View.VISIBLE;
|
||||||
if (!isRecording || PreferencesUtils.isBluetoothHeartRateSensorAddressNone(getContext())) {
|
if (PreferencesUtils.isBluetoothHeartRateSensorAddressNone(getContext())) {
|
||||||
isVisible = View.INVISIBLE;
|
isVisible = View.GONE;
|
||||||
}
|
}
|
||||||
heartRateContainer.setVisibility(isVisible);
|
heartRateGroup.setVisibility(isVisible);
|
||||||
|
setVisibilitySensorHorizontalLine();
|
||||||
|
|
||||||
if (isRecording) {
|
String sensorValue = getContext().getString(R.string.value_unknown);
|
||||||
String sensorValue = getContext().getString(R.string.value_unknown);
|
String sensorName = getContext().getString(R.string.value_unknown);
|
||||||
String sensorName = getContext().getString(R.string.value_unknown);
|
if (sensorDataSet != null && sensorDataSet.getHeartRate() != null) {
|
||||||
if (sensorDataSet != null && sensorDataSet.getHeartRate() != null) {
|
SensorDataHeartRate data = sensorDataSet.getHeartRate();
|
||||||
SensorDataHeartRate data = sensorDataSet.getHeartRate();
|
|
||||||
|
|
||||||
sensorName = data.getSensorName();
|
sensorName = data.getSensorName();
|
||||||
if (data.hasHeartRate_bpm() && data.isRecent()) {
|
if (data.hasHeartRate_bpm() && data.isRecent()) {
|
||||||
sensorValue = StringUtils.formatDecimal(data.getHeartRate_bpm(), 0);
|
sensorValue = StringUtils.formatDecimal(data.getHeartRate_bpm(), 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
heartRateSensorView.setText(sensorName);
|
|
||||||
heartRateValueView.setText(sensorValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
heartRateSensorView.setText(sensorName);
|
||||||
|
heartRateValueView.setText(sensorValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setCadenceSensorData(SensorDataSet sensorDataSet, boolean isRecording) {
|
private void setCadenceSensorData(SensorDataSet sensorDataSet) {
|
||||||
int isVisible = View.VISIBLE;
|
int isVisible = View.VISIBLE;
|
||||||
if (!isRecording || PreferencesUtils.isBluetoothCyclingCadenceSensorAddressNone(getContext())) {
|
if (PreferencesUtils.isBluetoothCyclingCadenceSensorAddressNone(getContext())) {
|
||||||
isVisible = View.INVISIBLE;
|
isVisible = View.GONE;
|
||||||
}
|
}
|
||||||
cadenceContainer.setVisibility(isVisible);
|
cadenceGroup.setVisibility(isVisible);
|
||||||
|
setVisibilitySensorHorizontalLine();
|
||||||
|
|
||||||
if (isRecording) {
|
String sensorValue = getContext().getString(R.string.value_unknown);
|
||||||
String sensorValue = getContext().getString(R.string.value_unknown);
|
String sensorName = getContext().getString(R.string.value_unknown);
|
||||||
String sensorName = getContext().getString(R.string.value_unknown);
|
if (sensorDataSet != null && sensorDataSet.getCyclingCadence() != null) {
|
||||||
if (sensorDataSet != null && sensorDataSet.getCyclingCadence() != null) {
|
SensorDataCycling.Cadence data = sensorDataSet.getCyclingCadence();
|
||||||
SensorDataCycling.Cadence data = sensorDataSet.getCyclingCadence();
|
sensorName = data.getSensorName();
|
||||||
sensorName = data.getSensorName();
|
|
||||||
|
|
||||||
if (data.hasCadence_rpm() && data.isRecent()) {
|
if (data.hasCadence_rpm() && data.isRecent()) {
|
||||||
sensorValue = StringUtils.formatDecimal(data.getCadence_rpm(), 0);
|
sensorValue = StringUtils.formatDecimal(data.getCadence_rpm(), 0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cadenceSensorView.setText(sensorName);
|
|
||||||
cadenceValueView.setText(sensorValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cadenceSensorView.setText(sensorName);
|
||||||
|
cadenceValueView.setText(sensorValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If cadence and hear rate groups are invisible then sensor horizontal line hast to be invisible too.
|
||||||
|
*/
|
||||||
|
private void setVisibilitySensorHorizontalLine() {
|
||||||
|
if (cadenceGroup.getVisibility() != View.VISIBLE && heartRateGroup.getVisibility() != View.VISIBLE) {
|
||||||
|
sensorHorizontalLine.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSpeedSensorData(SensorDataSet sensorDataSet, boolean isRecording) {
|
private void setSpeedSensorData(SensorDataSet sensorDataSet, boolean isRecording) {
|
||||||
@@ -566,7 +571,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
// Make elevation visible?
|
// Make elevation visible?
|
||||||
{
|
{
|
||||||
boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext());
|
boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext());
|
||||||
elevationSeparator.setVisibility(showElevation ? View.VISIBLE : View.GONE);
|
elevationGroup.setVisibility(showElevation ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -595,18 +600,14 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
|
|
||||||
private void setLocationValues() {
|
private void setLocationValues() {
|
||||||
boolean metricUnits = PreferencesUtils.isMetricUnits(getContext());
|
boolean metricUnits = PreferencesUtils.isMetricUnits(getContext());
|
||||||
boolean isRecording = isSelectedTrackRecording();
|
|
||||||
|
|
||||||
// Set speed/pace
|
// Set speed/pace
|
||||||
speedContainer.setVisibility(isRecording ? View.VISIBLE : View.INVISIBLE);
|
double speed = lastTrackPoint != null && lastTrackPoint.hasSpeed() ? lastTrackPoint.getSpeed() : Double.NaN;
|
||||||
if (isRecording) {
|
setSpeed(speed);
|
||||||
double speed = lastTrackPoint != null && lastTrackPoint.hasSpeed() ? lastTrackPoint.getSpeed() : Double.NaN;
|
|
||||||
setSpeed(speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set elevation
|
// Set elevation
|
||||||
boolean showElevation = isRecording && PreferencesUtils.isShowStatsElevation(getContext());
|
boolean showElevation = PreferencesUtils.isShowStatsElevation(getContext());
|
||||||
elevationContainer.setVisibility(showElevation ? View.VISIBLE : View.GONE);
|
elevationGroup.setVisibility(showElevation ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
if (showElevation) {
|
if (showElevation) {
|
||||||
double altitude = lastTrackPoint != null && lastTrackPoint.hasAltitude() ? lastTrackPoint.getAltitude() : Double.NaN;
|
double altitude = lastTrackPoint != null && lastTrackPoint.hasAltitude() ? lastTrackPoint.getAltitude() : Double.NaN;
|
||||||
@@ -617,10 +618,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set coordinate
|
// Set coordinate
|
||||||
boolean showCoordinate = isRecording && PreferencesUtils.isStatsShowCoordinate(getContext());
|
boolean showCoordinate = PreferencesUtils.isStatsShowCoordinate(getContext());
|
||||||
|
|
||||||
coordinateSeparator.setVisibility(showCoordinate ? View.VISIBLE : View.GONE);
|
coordinateGroup.setVisibility(showCoordinate ? View.VISIBLE : View.GONE);
|
||||||
coordinateContainer.setVisibility(showCoordinate ? View.VISIBLE : View.GONE);
|
|
||||||
if (showCoordinate) {
|
if (showCoordinate) {
|
||||||
double latitude = lastTrackPoint != null ? lastTrackPoint.getLatitude() : Double.NaN;
|
double latitude = lastTrackPoint != null ? lastTrackPoint.getLatitude() : Double.NaN;
|
||||||
String latitudeText = Double.isNaN(latitude) || Double.isInfinite(latitude) ? getContext().getString(R.string.value_unknown) : StringUtils.formatCoordinate(latitude);
|
String latitudeText = Double.isNaN(latitude) || Double.isInfinite(latitude) ? getContext().getString(R.string.value_unknown) : StringUtils.formatCoordinate(latitude);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import java.util.concurrent.Executors;
|
|||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.TrackListActivity;
|
import de.dennisguse.opentracks.TrackListActivity;
|
||||||
import de.dennisguse.opentracks.TrackRecordedActivity;
|
import de.dennisguse.opentracks.TrackRecordingActivity;
|
||||||
import de.dennisguse.opentracks.content.data.Track;
|
import de.dennisguse.opentracks.content.data.Track;
|
||||||
import de.dennisguse.opentracks.content.data.TrackPoint;
|
import de.dennisguse.opentracks.content.data.TrackPoint;
|
||||||
import de.dennisguse.opentracks.content.data.Waypoint;
|
import de.dennisguse.opentracks.content.data.Waypoint;
|
||||||
@@ -743,10 +743,10 @@ public class TrackRecordingService extends Service {
|
|||||||
|
|
||||||
private void showNotification(boolean isGpsStarted) {
|
private void showNotification(boolean isGpsStarted) {
|
||||||
if (isRecording()) {
|
if (isRecording()) {
|
||||||
Intent intent = IntentUtils.newIntent(this, TrackRecordedActivity.class)
|
Intent intent = IntentUtils.newIntent(this, TrackRecordingActivity.class)
|
||||||
.putExtra(TrackRecordedActivity.EXTRA_TRACK_ID, recordingTrackId);
|
.putExtra(TrackRecordingActivity.EXTRA_TRACK_ID, recordingTrackId);
|
||||||
PendingIntent pendingIntent = TaskStackBuilder.create(this)
|
PendingIntent pendingIntent = TaskStackBuilder.create(this)
|
||||||
.addParentStack(TrackRecordedActivity.class)
|
.addParentStack(TrackRecordingActivity.class)
|
||||||
.addNextIntent(intent)
|
.addNextIntent(intent)
|
||||||
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
|
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
|
|||||||
@@ -1,177 +1,213 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
Copyright 2010 Google Inc.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
style="@style/StatsScrollView">
|
style="@style/StatsScrollView">
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:orientation="vertical">
|
|
||||||
|
<!-- Guidelines -->
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_begin="8dp" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.5" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline3"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_end="8dp" />
|
||||||
|
|
||||||
|
<!-- Distance -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_distance_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_distance"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_distance_value"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_distance_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_distance_label"
|
||||||
|
tools:text="100" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_distance_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_distance_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_distance_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
tools:text="km" />
|
||||||
|
|
||||||
|
<!-- Activity Type -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_activity_type_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/track_edit_activity_type_hint"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<Spinner
|
||||||
|
android:id="@+id/stats_activity_type_icon"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_distance_value"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/stats_distance_value" />
|
||||||
|
|
||||||
|
<!-- Total time -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_total_time_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_total_time"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_distance_value" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_total_time_value"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_total_time_label"
|
||||||
|
tools:text="00:00:00" />
|
||||||
|
|
||||||
|
<!-- Moving time -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_time_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_moving_time"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/stats_total_time_label"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_total_time_label" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_time_value"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_time_label"
|
||||||
|
tools:text="00:00:00" />
|
||||||
|
|
||||||
<!-- Horizontal line -->
|
<!-- Horizontal line -->
|
||||||
<View style="@style/StatsHorizontalLine" />
|
|
||||||
|
|
||||||
<!-- Distance and activity type -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
<!-- Distance -->
|
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/StatsLargeLabel"
|
|
||||||
android:text="@string/stats_distance" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsLargeValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_distance_value"
|
|
||||||
style="@style/StatsLargeValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_distance_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Activity type -->
|
|
||||||
<include
|
|
||||||
android:id="@+id/stats_activity_type"
|
|
||||||
layout="@layout/stats_activity_type" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Total time and moving time -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<!-- Total time -->
|
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/StatsLargeLabel"
|
|
||||||
android:text="@string/stats_total_time" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_total_time_value"
|
|
||||||
style="@style/StatsLargeValue" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Moving time -->
|
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/StatsLargeLabel"
|
|
||||||
android:text="@string/stats_moving_time" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_time_value"
|
|
||||||
style="@style/StatsLargeValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Horizontal line -->
|
|
||||||
<View style="@style/StatsHorizontalLine" />
|
|
||||||
|
|
||||||
<!-- Speed/pace and average -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<!-- Left empty -->
|
|
||||||
<View
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1" />
|
|
||||||
|
|
||||||
<!-- Average -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Speed max and moving -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<!-- Speed max -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Speed moving -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/stats_sensor_separator"
|
android:id="@+id/stats_speed_horizontal_line"
|
||||||
style="@style/StatsHorizontalLine" />
|
style="@style/StatsHorizontalLine"
|
||||||
</LinearLayout>
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_time_value" />
|
||||||
|
|
||||||
|
<!-- Average speed/pace -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_average_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_speed_horizontal_line"
|
||||||
|
tools:text="Avg. Speed" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_average_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_average_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_average_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_average_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_average_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_average_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
|
<!-- Speed max -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_max_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_average_speed_value"
|
||||||
|
tools:text="Max. Speed" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_max_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_max_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_max_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_max_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_max_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_max_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
|
<!-- Moving speed max -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_average_speed_value"
|
||||||
|
tools:text="Max. Moving Speed" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_moving_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_moving_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_moving_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
@@ -1,318 +1,430 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
style="@style/StatsScrollView">
|
style="@style/StatsScrollView">
|
||||||
|
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<!-- Distance and activity type -->
|
<!-- Guidelines -->
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.Guideline
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/guideline"
|
||||||
android:layout_height="wrap_content">
|
android:layout_width="0dp"
|
||||||
<!-- Distance -->
|
android:layout_height="0dp"
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_begin="8dp" />
|
||||||
|
|
||||||
<TextView
|
<androidx.constraintlayout.widget.Guideline
|
||||||
style="@style/StatsLargeLabel"
|
android:id="@+id/guideline2"
|
||||||
android:text="@string/stats_distance" />
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.5" />
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsLargeValueContainer">
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline3"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_end="8dp" />
|
||||||
|
|
||||||
<TextView
|
<!-- Distance -->
|
||||||
android:id="@+id/stats_distance_value"
|
<TextView
|
||||||
style="@style/StatsLargeValue"
|
android:id="@+id/stats_distance_label"
|
||||||
android:value="@string/value_unknown" />
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_distance"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/stats_distance_unit"
|
android:id="@+id/stats_distance_value"
|
||||||
style="@style/StatsUnit" />
|
style="@style/StatsLargeValue"
|
||||||
</LinearLayout>
|
android:value="@string/value_unknown"
|
||||||
</LinearLayout>
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_distance_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_distance_label"
|
||||||
|
tools:text="100" />
|
||||||
|
|
||||||
<!-- Activity type -->
|
<TextView
|
||||||
<include
|
android:id="@+id/stats_distance_unit"
|
||||||
android:id="@+id/stats_activity_type"
|
style="@style/StatsUnit"
|
||||||
layout="@layout/stats_activity_type" />
|
app:layout_constraintBottom_toBottomOf="@+id/stats_distance_value"
|
||||||
</LinearLayout>
|
app:layout_constraintLeft_toRightOf="@+id/stats_distance_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
tools:text="km" />
|
||||||
|
|
||||||
<!-- Total time and moving time -->
|
<!-- Activity Type -->
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/stats_activity_type_label"
|
||||||
android:layout_height="wrap_content">
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/track_edit_activity_type_hint"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<!-- Total time -->
|
<Spinner
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
android:id="@+id/stats_activity_type_icon"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_distance_value"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/stats_distance_value" />
|
||||||
|
|
||||||
<TextView
|
<!-- Total time -->
|
||||||
style="@style/StatsLargeLabel"
|
<TextView
|
||||||
android:text="@string/stats_total_time" />
|
android:id="@+id/stats_total_time_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_total_time"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_distance_value" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/stats_total_time_value"
|
android:id="@+id/stats_total_time_value"
|
||||||
style="@style/StatsLargeValue" />
|
style="@style/StatsLargeValue"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_total_time_label"
|
||||||
|
tools:text="00:00:00" />
|
||||||
|
|
||||||
</LinearLayout>
|
<!-- Moving time -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_time_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/stats_moving_time"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/stats_total_time_label"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_total_time_label" />
|
||||||
|
|
||||||
<!-- Moving time -->
|
<TextView
|
||||||
<LinearLayout style="@style/StatsLargeItemContainer">
|
android:id="@+id/stats_moving_time_value"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
<TextView
|
android:value="@string/value_unknown"
|
||||||
style="@style/StatsLargeLabel"
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
android:text="@string/stats_moving_time" />
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_time_label"
|
||||||
<TextView
|
tools:text="00:00:00" />
|
||||||
android:id="@+id/stats_moving_time_value"
|
|
||||||
style="@style/StatsLargeValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Horizontal line -->
|
|
||||||
<View style="@style/StatsHorizontalLine" />
|
|
||||||
|
|
||||||
<!-- Speed/pace and average -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<!-- Speed/pace -->
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/stats_speed"
|
|
||||||
style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Average -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_average_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Speed max and moving -->
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<!-- Speed max -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_max_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Speed moving -->
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_label"
|
|
||||||
style="@style/StatsSmallLabel" />
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallValueContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_moving_speed_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/stats_elevation_separator"
|
|
||||||
style="@style/StatsHorizontalLine" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/stats_elevation_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallGroupContainer">
|
|
||||||
<!-- This is a placeholder -->
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Elevation -->
|
|
||||||
<LinearLayout style="@style/StatsSmallGroupContainer">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
style="@style/StatsSmallLabel"
|
|
||||||
android:text="@string/stats_elevation" />
|
|
||||||
|
|
||||||
<TableLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center">
|
|
||||||
|
|
||||||
<!-- Current elevation -->
|
|
||||||
<LinearLayout
|
|
||||||
style="@style/StatsSmallValueContainer"
|
|
||||||
android:layout_gravity="start|bottom">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_elevation_current_value"
|
|
||||||
style="@style/StatsSmallValue"
|
|
||||||
android:value="@string/value_unknown" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/stats_elevation_current_unit"
|
|
||||||
style="@style/StatsUnit" />
|
|
||||||
</LinearLayout>
|
|
||||||
</TableLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- Horizontal line -->
|
<!-- Horizontal line -->
|
||||||
<View
|
<View
|
||||||
android:id="@+id/stats_coordinate_separator"
|
android:id="@+id/stats_speed_horizontal_line"
|
||||||
style="@style/StatsHorizontalLine" />
|
style="@style/StatsHorizontalLine"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_time_value" />
|
||||||
|
|
||||||
<!-- Latitude and longitude -->
|
<!-- Speed/pace -->
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:id="@+id/stats_coordinate_container"
|
android:id="@+id/stats_speed_label"
|
||||||
android:layout_width="match_parent"
|
style="@style/StatsSmallLabel"
|
||||||
android:layout_height="wrap_content">
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_speed_horizontal_line"
|
||||||
|
tools:text="Speed" />
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
<TextView
|
||||||
|
android:id="@+id/stats_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/StatsSmallLabel"
|
android:id="@+id/stats_speed_unit"
|
||||||
android:text="@string/stats_latitude" />
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
<TextView
|
<!-- Average speed/pace -->
|
||||||
android:id="@+id/stats_latitude_value"
|
<TextView
|
||||||
style="@style/StatsSmallValue" />
|
android:id="@+id/stats_average_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_speed_horizontal_line"
|
||||||
|
tools:text="Avg. Speed" />
|
||||||
|
|
||||||
</LinearLayout>
|
<TextView
|
||||||
|
android:id="@+id/stats_average_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_average_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_average_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsSmallItemContainer">
|
<TextView
|
||||||
|
android:id="@+id/stats_average_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_average_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_average_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
<TextView
|
<!-- Speed max -->
|
||||||
style="@style/StatsSmallLabel"
|
<TextView
|
||||||
android:text="@string/stats_longitude" />
|
android:id="@+id/stats_max_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_average_speed_value"
|
||||||
|
tools:text="Max. Speed" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/stats_longitude_value"
|
android:id="@+id/stats_max_speed_value"
|
||||||
style="@style/StatsSmallValue"
|
style="@style/StatsSmallValue"
|
||||||
android:value="@string/value_unknown" />
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_max_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_max_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
</LinearLayout>
|
<TextView
|
||||||
</LinearLayout>
|
android:id="@+id/stats_max_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_max_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_max_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
|
<!-- Moving speed max -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_average_speed_value"
|
||||||
|
tools:text="Max. Moving Speed" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_moving_speed_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_speed_label"
|
||||||
|
tools:text="30.00" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_moving_speed_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/stats_moving_speed_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_moving_speed_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
tools:text="km/h" />
|
||||||
|
|
||||||
|
<!-- Horizontal line -->
|
||||||
<View
|
<View
|
||||||
android:id="@+id/stats_sensor_separator"
|
android:id="@+id/stats_elevation_horizontal_line"
|
||||||
style="@style/StatsHorizontalLine" />
|
style="@style/StatsHorizontalLine"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_moving_speed_value" />
|
||||||
|
|
||||||
<!-- Sensor data -->
|
<!-- Current elevation -->
|
||||||
<LinearLayout
|
<androidx.constraintlayout.widget.Group
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/stats_elevation_current_group"
|
||||||
android:layout_height="wrap_content">
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="stats_elevation_current_label,stats_elevation_current_value,stats_elevation_current_unit,stats_elevation_horizontal_line" />
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:id="@+id/stats_sensor_heart_rate_container"
|
android:id="@+id/stats_elevation_current_label"
|
||||||
style="@style/StatsLargeItemContainer">
|
style="@style/StatsSmallLabel"
|
||||||
|
android:text="@string/stats_elevation"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_elevation_horizontal_line" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/StatsLargeLabel"
|
android:id="@+id/stats_elevation_current_value"
|
||||||
android:text="@string/sensor_state_heart_rate" />
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/stats_elevation_current_unit"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_elevation_current_label"
|
||||||
|
tools:text="100" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/stats_sensor_heart_rate_sensor_value"
|
android:id="@+id/stats_elevation_current_unit"
|
||||||
style="@style/StatsTinyValue"
|
style="@style/StatsUnit"
|
||||||
android:text="@string/value_unknown" />
|
app:layout_constraintBottom_toBottomOf="@+id/stats_elevation_current_value"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/stats_elevation_current_value"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
tools:text="m" />
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsLargeValueContainer">
|
<!-- Coordinate group -->
|
||||||
|
<androidx.constraintlayout.widget.Group
|
||||||
|
android:id="@+id/stats_coordinate_group"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="stats_latitude_label,stats_latitude_value,stats_longitude_label,stats_longitude_value,stats_coordinate_horizontal_line" />
|
||||||
|
|
||||||
<TextView
|
<!-- Horizontal line -->
|
||||||
android:id="@+id/stats_sensor_heart_rate_value"
|
<View
|
||||||
style="@style/StatsLargeValue"
|
android:id="@+id/stats_coordinate_horizontal_line"
|
||||||
android:value="@string/value_unknown" />
|
style="@style/StatsHorizontalLine"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_elevation_current_value" />
|
||||||
|
|
||||||
<TextView
|
<!-- Latitude -->
|
||||||
style="@style/StatsUnit"
|
<TextView
|
||||||
android:text="@string/sensor_unit_beats_per_minute" />
|
android:id="@+id/stats_latitude_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
android:text="@string/stats_latitude"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_coordinate_horizontal_line" />
|
||||||
|
|
||||||
</LinearLayout>
|
<TextView
|
||||||
|
android:id="@+id/stats_latitude_value"
|
||||||
|
style="@style/StatsSmallValue"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_latitude_label"
|
||||||
|
tools:text="0.834937848" />
|
||||||
|
|
||||||
</LinearLayout>
|
<!-- Longitude -->
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_longitude_label"
|
||||||
|
style="@style/StatsSmallLabel"
|
||||||
|
android:text="@string/stats_longitude"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_coordinate_horizontal_line" />
|
||||||
|
|
||||||
<LinearLayout
|
<TextView
|
||||||
android:id="@+id/stats_sensor_cadence_container"
|
android:id="@+id/stats_longitude_value"
|
||||||
style="@style/StatsLargeItemContainer">
|
style="@style/StatsSmallValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_longitude_label"
|
||||||
|
tools:text="0.834937848" />
|
||||||
|
|
||||||
<TextView
|
<!-- Horizontal line -->
|
||||||
style="@style/StatsLargeLabel"
|
<View
|
||||||
android:text="@string/sensor_state_cadence" />
|
android:id="@+id/stats_sensor_horizontal_line"
|
||||||
|
style="@style/StatsHorizontalLine"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_latitude_value" />
|
||||||
|
|
||||||
<TextView
|
<!-- Heart rate -->
|
||||||
android:id="@+id/stats_sensor_cadence_sensor_value"
|
<androidx.constraintlayout.widget.Group
|
||||||
style="@style/StatsTinyValue"
|
android:id="@+id/stats_sensor_heart_rate_group"
|
||||||
android:text="@string/value_unknown" />
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="stats_sensor_heart_rate_label,stats_sensor_heart_rate_sensor_value,stats_sensor_heart_rate_value,stats_sensor_heart_rate_unit" />
|
||||||
|
|
||||||
<LinearLayout style="@style/StatsLargeValueContainer">
|
<TextView
|
||||||
|
android:id="@+id/stats_sensor_heart_rate_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/sensor_state_heart_rate"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_sensor_horizontal_line" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/stats_sensor_cadence_value"
|
android:id="@+id/stats_sensor_heart_rate_sensor_value"
|
||||||
style="@style/StatsLargeValue"
|
style="@style/StatsTinyValue"
|
||||||
android:value="@string/value_unknown" />
|
android:text="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_heart_rate_label"
|
||||||
|
tools:text="90" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/StatsUnit"
|
android:id="@+id/stats_sensor_heart_rate_value"
|
||||||
android:text="@string/sensor_unit_rounds_per_minute" />
|
style="@style/StatsLargeValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_heart_rate_sensor_value"
|
||||||
|
tools:text="90" />
|
||||||
|
|
||||||
</LinearLayout>
|
<TextView
|
||||||
</LinearLayout>
|
android:id="@+id/stats_sensor_heart_rate_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
android:text="@string/sensor_unit_beats_per_minute"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline2"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_heart_rate_value" />
|
||||||
|
|
||||||
</LinearLayout>
|
<!-- Cadence -->
|
||||||
</LinearLayout>
|
<androidx.constraintlayout.widget.Group
|
||||||
|
android:id="@+id/stats_sensor_cadence_group"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="stats_sensor_cadence_label,stats_sensor_cadence_sensor_value,stats_sensor_cadence_value,stats_sensor_cadence_unit" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_sensor_cadence_label"
|
||||||
|
style="@style/StatsLargeLabel"
|
||||||
|
android:text="@string/sensor_state_cadence"
|
||||||
|
app:layout_constrainedWidth="true"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/stats_sensor_horizontal_line" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_sensor_cadence_sensor_value"
|
||||||
|
style="@style/StatsTinyValue"
|
||||||
|
android:text="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_cadence_label"
|
||||||
|
tools:text="90" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_sensor_cadence_value"
|
||||||
|
style="@style/StatsLargeValue"
|
||||||
|
android:value="@string/value_unknown"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_cadence_sensor_value"
|
||||||
|
tools:text="90" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/stats_sensor_cadence_unit"
|
||||||
|
style="@style/StatsUnit"
|
||||||
|
android:text="@string/sensor_unit_rounds_per_minute"
|
||||||
|
app:layout_constraintLeft_toRightOf="@+id/guideline2"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/stats_sensor_cadence_value" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
@@ -117,8 +117,7 @@ limitations under the License.
|
|||||||
<style name="StatsHorizontalLine">
|
<style name="StatsHorizontalLine">
|
||||||
<item name="android:background">@color/stats_separator</item>
|
<item name="android:background">@color/stats_separator</item>
|
||||||
<item name="android:layout_height">1dp</item>
|
<item name="android:layout_height">1dp</item>
|
||||||
<item name="android:layout_marginLeft">8dp</item>
|
<item name="android:layout_margin">8dp</item>
|
||||||
<item name="android:layout_marginRight">8dp</item>
|
|
||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
</style>
|
</style>
|
||||||
<!-- stats large item container -->
|
<!-- stats large item container -->
|
||||||
@@ -140,6 +139,9 @@ limitations under the License.
|
|||||||
<item name="android:textAllCaps">true</item>
|
<item name="android:textAllCaps">true</item>
|
||||||
<item name="android:textColor">@color/stats_large_label</item>
|
<item name="android:textColor">@color/stats_large_label</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
|
<item name="android:paddingLeft">4dp</item>
|
||||||
|
<item name="android:paddingRight">4dp</item>
|
||||||
|
<item name="android:layout_marginTop">16dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="StatsLargeValue">
|
<style name="StatsLargeValue">
|
||||||
@@ -179,6 +181,7 @@ limitations under the License.
|
|||||||
<item name="android:singleLine">false</item>
|
<item name="android:singleLine">false</item>
|
||||||
<item name="android:textAllCaps">true</item>
|
<item name="android:textAllCaps">true</item>
|
||||||
<item name="android:textStyle">bold</item>
|
<item name="android:textStyle">bold</item>
|
||||||
|
<item name="android:layout_marginTop">16dp</item>
|
||||||
</style>
|
</style>
|
||||||
<!-- stats small value -->
|
<!-- stats small value -->
|
||||||
<style name="StatsSmallValue" parent="@style/TextLarge">
|
<style name="StatsSmallValue" parent="@style/TextLarge">
|
||||||
|
|||||||
Reference in New Issue
Block a user