diff options
| author | Claude <noreply@anthropic.com> | 2026-05-20 19:43:25 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-05-20 19:43:25 +0000 |
| commit | 48ad5dca0452689de86b7edf0b6638fe7c5c7025 (patch) | |
| tree | dd91fe7e466e5e3c54e99fa96a4ff7b385b32f52 /android-app/app/src/main/res/layout | |
| parent | 48ae3b0225cb1a79539711be3a70cbd630c53638 (diff) | |
Fix tack detection and convert track detail to embedded-map fragment
TackDetector: revert STABILITY_MAX to 30° (was tightened too far to 20°),
add 120s start-skip to filter GPS cold-start false positives, keep 45s
minimum gap between tacks.
TrackDetailSheet: convert from BottomSheetDialogFragment to a regular
Fragment with an embedded MapLibreMap in the top half. This fixes the
map centering issue (the embedded map is always sized to its own frame),
eliminates accidental dismissal when dragging the map, and makes the
view self-contained — back navigation restores the track list via the
fragment back stack. Tack markers rendered on the embedded map; tapping
a log event pans the embedded map directly.
https://claude.ai/code/session_01YUbuZNDAoLea4cf9UGQ9qn
Diffstat (limited to 'android-app/app/src/main/res/layout')
| -rw-r--r-- | android-app/app/src/main/res/layout/layout_track_detail_sheet.xml | 179 |
1 files changed, 100 insertions, 79 deletions
diff --git a/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml b/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml index 6a2ba50..fafd75a 100644 --- a/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml +++ b/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml @@ -6,100 +6,121 @@ android:orientation="vertical" android:background="?attr/colorSurface"> +<<<<<<< Updated upstream <!-- Header --> +======= + <!-- Track map — top half --> + <org.maplibre.android.maps.MapView + android:id="@+id/track_map_view" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" /> + + <!-- Detail panel — bottom half --> +>>>>>>> Stashed changes <LinearLayout android:layout_width="match_parent" - android:layout_height="56dp" - android:orientation="horizontal" - android:gravity="center_vertical" - android:paddingStart="8dp" - android:paddingEnd="16dp" - android:elevation="4dp" + android:layout_height="0dp" + android:layout_weight="1" + android:orientation="vertical" android:background="?attr/colorSurface"> - <ImageButton - android:id="@+id/btn_back" - android:layout_width="48dp" - android:layout_height="48dp" - android:src="@drawable/ic_back" - android:background="?attr/selectableItemBackgroundBorderless" - android:contentDescription="Back" /> + <!-- Header --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="56dp" + android:orientation="horizontal" + android:gravity="center_vertical" + android:paddingStart="8dp" + android:paddingEnd="16dp" + android:elevation="4dp" + android:background="?attr/colorSurface"> - <TextView - android:id="@+id/detail_title" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:textSize="17sp" - android:textStyle="bold" - android:layout_marginStart="4dp" /> + <ImageButton + android:id="@+id/btn_back" + android:layout_width="48dp" + android:layout_height="48dp" + android:src="@drawable/ic_back" + android:background="?attr/selectableItemBackgroundBorderless" + android:contentDescription="Back" /> - </LinearLayout> + <TextView + android:id="@+id/detail_title" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textSize="17sp" + android:textStyle="bold" + android:layout_marginStart="4dp" /> - <!-- Stats row: distance · duration · max · avg --> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingHorizontal="12dp" - android:paddingTop="12dp" - android:paddingBottom="12dp"> - - <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" android:orientation="vertical" android:gravity="center"> - <TextView android:id="@+id/detail_distance" android:layout_width="wrap_content" - android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> - <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="nm" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> </LinearLayout> - <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" android:orientation="vertical" android:gravity="center"> - <TextView android:id="@+id/detail_duration" android:layout_width="wrap_content" - android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> - <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="time" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> - </LinearLayout> + <!-- Stats row: distance · duration · max · avg --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingHorizontal="12dp" + android:paddingTop="8dp" + android:paddingBottom="8dp"> - <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" android:orientation="vertical" android:gravity="center"> - <TextView android:id="@+id/detail_max_sog" android:layout_width="wrap_content" - android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> - <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="max kt" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> - </LinearLayout> + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_weight="1" android:orientation="vertical" android:gravity="center"> + <TextView android:id="@+id/detail_distance" android:layout_width="wrap_content" + android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="nm" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> + </LinearLayout> + + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_weight="1" android:orientation="vertical" android:gravity="center"> + <TextView android:id="@+id/detail_duration" android:layout_width="wrap_content" + android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="time" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> + </LinearLayout> + + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_weight="1" android:orientation="vertical" android:gravity="center"> + <TextView android:id="@+id/detail_max_sog" android:layout_width="wrap_content" + android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="max kt" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> + </LinearLayout> + + <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_weight="1" android:orientation="vertical" android:gravity="center"> + <TextView android:id="@+id/detail_avg_sog" android:layout_width="wrap_content" + android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="avg kt" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> + </LinearLayout> - <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1" android:orientation="vertical" android:gravity="center"> - <TextView android:id="@+id/detail_avg_sog" android:layout_width="wrap_content" - android:layout_height="wrap_content" android:textSize="22sp" android:textStyle="bold" /> - <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="avg kt" android:textSize="11sp" android:textColor="?attr/colorOnSurfaceVariant" /> </LinearLayout> - </LinearLayout> + <View android:layout_width="match_parent" android:layout_height="1dp" + android:background="?attr/colorOutlineVariant" android:layout_marginHorizontal="16dp" /> - <View android:layout_width="match_parent" android:layout_height="1dp" - android:background="?attr/colorOutlineVariant" android:layout_marginHorizontal="16dp" /> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingHorizontal="20dp" + android:paddingTop="8dp" + android:paddingBottom="4dp" + android:text="Event Log" + android:textSize="13sp" + android:textAllCaps="true" + android:letterSpacing="0.08" + android:textColor="?attr/colorOnSurfaceVariant" /> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingHorizontal="20dp" - android:paddingTop="12dp" - android:paddingBottom="4dp" - android:text="Event Log" - android:textSize="13sp" - android:textAllCaps="true" - android:letterSpacing="0.08" - android:textColor="?attr/colorOnSurfaceVariant" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_log_entries" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1" - android:clipToPadding="false" - android:paddingBottom="24dp" /> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/rv_log_entries" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:clipToPadding="false" + android:paddingBottom="24dp" /> + + </LinearLayout> </LinearLayout> |
