From c19cf469d3c76994374d195bfef0500dd0f7ca76 Mon Sep 17 00:00:00 2001 From: y20k Date: Mon, 5 Dec 2016 15:10:24 +0100 Subject: [PATCH] changed layout and behavior of statistics sheet - plus: some accessibility descriptions --- app/build.gradle | 10 +-- .../trackbook/MainActivityTrackFragment.java | 48 ++++++++++- .../res/drawable/ic_statistics_white_48dp.xml | 9 ++ app/src/main/res/layout/fragment_main_map.xml | 3 +- .../main/res/layout/fragment_main_track.xml | 85 +++++++++++++------ app/src/main/res/values-de/strings.xml | 18 ++++ app/src/main/res/values-w820dp/dimens.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 19 ++++- 10 files changed, 159 insertions(+), 36 deletions(-) create mode 100644 app/src/main/res/drawable/ic_statistics_white_48dp.xml diff --git a/app/build.gradle b/app/build.gradle index f9ec9e4..63376ab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 25 - buildToolsVersion "24.0.3" + buildToolsVersion '25.0.0' defaultConfig { applicationId "org.y20k.trackbook" @@ -21,10 +21,10 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:25.0.0' - compile 'com.android.support:design:25.0.0' + compile 'com.android.support:appcompat-v7:25.0.1' + compile 'com.android.support:design:25.0.1' compile 'org.osmdroid:osmdroid-android:5.5:release@aar' - compile 'com.google.code.gson:gson:2.7' + compile 'com.google.code.gson:gson:2.8.0' } diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java index 218b449..4da2021 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityTrackFragment.java @@ -20,8 +20,10 @@ import android.app.Activity; import android.location.Location; import android.os.AsyncTask; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.BottomSheetBehavior; +import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; @@ -59,6 +61,7 @@ public class MainActivityTrackFragment extends Fragment implements TrackbookKeys private MapView mMapView; private IMapController mController; private ItemizedIconOverlay mTrackOverlay; + private View mStaticticsView; private TextView mDistanceView; private TextView mStepsView; private TextView mWaypointsView; @@ -66,6 +69,7 @@ public class MainActivityTrackFragment extends Fragment implements TrackbookKeys private TextView mRecordingStartView; private TextView mRecordingStopView; private View mStatisticsSheet; + private Snackbar mStatisticsSnackbar; private BottomSheetBehavior mStatisticsSheetBehavior; private Track mTrack; @@ -120,13 +124,14 @@ public class MainActivityTrackFragment extends Fragment implements TrackbookKeys // get views + mStaticticsView = mRootView.findViewById(R.id.statistics_view); mDistanceView = (TextView) mRootView.findViewById(R.id.statistics_data_distance); mStepsView = (TextView) mRootView.findViewById(R.id.statistics_data_steps); mWaypointsView = (TextView) mRootView.findViewById(R.id.statistics_data_waypoints); mDurationView = (TextView) mRootView.findViewById(R.id.statistics_data_duration); mRecordingStartView = (TextView) mRootView.findViewById(R.id.statistics_data_recording_start); mRecordingStopView = (TextView) mRootView.findViewById(R.id.statistics_data_recording_stop); - mStatisticsSheet = mRootView.findViewById(R.id.statistic_sheet); + mStatisticsSheet = mRootView.findViewById(R.id.statistics_sheet); if (mTrack == null) { // load track and display map and statistics @@ -139,7 +144,46 @@ public class MainActivityTrackFragment extends Fragment implements TrackbookKeys // show statistics sheet mStatisticsSheetBehavior = BottomSheetBehavior.from(mStatisticsSheet); - mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + mStatisticsSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + // react to state change + switch (newState) { + case BottomSheetBehavior.STATE_EXPANDED: + LogHelper.v(LOG_TAG,"Statistics sheet expanded"); + break; + case BottomSheetBehavior.STATE_COLLAPSED: + LogHelper.v(LOG_TAG,"Statistics sheet collapsed"); + mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + break; + case BottomSheetBehavior.STATE_HIDDEN: + LogHelper.v(LOG_TAG,"Statistics sheet hidden"); + mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + break; + default: + break; + } + } + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + // react to dragging events + } + }); + + // react to tap on sheet heading + mStaticticsView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + LogHelper.v(LOG_TAG,"Statistics view tapped"); + if (mStatisticsSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) { + mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); + } else { + mStatisticsSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); + } + } + }); + return mRootView; } diff --git a/app/src/main/res/drawable/ic_statistics_white_48dp.xml b/app/src/main/res/drawable/ic_statistics_white_48dp.xml new file mode 100644 index 0000000..dd7aac8 --- /dev/null +++ b/app/src/main/res/drawable/ic_statistics_white_48dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/fragment_main_map.xml b/app/src/main/res/layout/fragment_main_map.xml index 8f59045..3bd12eb 100644 --- a/app/src/main/res/layout/fragment_main_map.xml +++ b/app/src/main/res/layout/fragment_main_map.xml @@ -11,6 +11,7 @@ + android:layout_height="fill_parent" + android:contentDescription="@string/descr_map_current_track" /> diff --git a/app/src/main/res/layout/fragment_main_track.xml b/app/src/main/res/layout/fragment_main_track.xml index 4e2f26f..6b8949e 100644 --- a/app/src/main/res/layout/fragment_main_track.xml +++ b/app/src/main/res/layout/fragment_main_track.xml @@ -8,39 +8,59 @@ android:layout_height="match_parent" tools:context=".MainActivityMapFragment"> - + android:layout_height="fill_parent" + android:contentDescription="@string/descr_map_last_track" /> + + - + android:orientation="horizontal" + android:layout_marginBottom="8dp"> + + + + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_distance" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_distance_value" /> + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_steps" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_steps_value" /> + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_waypoints" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_waypoints_value" /> + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_duration" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_duration_value" /> + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_recording_start" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_recording_start_value" /> + android:textAppearance="@android:style/TextAppearance.Small.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_recording_end" /> + android:textAppearance="@android:style/TextAppearance.Medium.Inverse" + android:contentDescription="@string/descr_statistics_sheet_p_recording_end_value" /> - \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index fbf1b1b..19af69a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -90,4 +90,22 @@ Berechtigung WRITE_EXTERNAL_STORAGE Trackbook nutzt osmdroid. osmdroid speichert Kartendaten im Externen Speicher von Android. Der Karten-Cache befindet sich im Ordner osmdroid auf der obersten Ebene des für Nutzer sichtbaren Dateisystems. + + Karte der aktuellen Aufzeichnung + Karte der letzten Aufzeichnung + Überschrift der Statistik-Einblendung + Icon Balkendiagramm + Datenpunkt: Distanz + Datenpunkt: Schritte + Datenpunkt: Wegpunkte + Datenpunkt: Dauer + Datenpunkt: Start der Aufzeichnung + Datenpunkt: Ende der Aufzeichnung + Wert: Distanz + Wert: Schritte + Wert: Wegpunkte + Wert: Dauer + Wert: Start der Aufzeichnung + Wert: Ende der Aufzeichnung + \ No newline at end of file diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml index 63fc816..76bc186 100644 --- a/app/src/main/res/values-w820dp/dimens.xml +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -3,4 +3,5 @@ (such as screen margins) for screens with more than 820dp of available width. This would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> 64dp + 600dp diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2c6335b..5f3b8c4 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -8,6 +8,7 @@ #FF2095F2 #FF12537F + #D92095F2 #FFFFFFFF diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index cef3abc..588bced 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -4,4 +4,5 @@ 16dp 16dp 8dp + 0dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f5c1544..7b3b59d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -59,7 +59,6 @@ Recording started: Recording stopped: - Hello Trackbook App Icon @@ -91,4 +90,22 @@ Permission WRITE_EXTERNAL_STORAGE Trackbook uses osmdroid, which caches map tiles on Android\'s external storage. You can find the map cache in the osmdroid folder on the top level of the user-facing file system. + + Map of the current track + Map of the last track + Headline of the statistics sheet + Icon of a bar chart + Data point: distance + Data point: steps + Data point: waypoints + Data point: duration + Data point: start of recording + Data point: end of recording + Value: distance + Value: steps + Value: waypoints + Value: duration + Value: start of recording + Value: end of recording +