diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-23 04:16:32 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-23 04:16:32 +0000 |
| commit | 77892d354eda07d98e2dfa5d00fca1ed1f808d8b (patch) | |
| tree | 53c05f944d616eef5cbc3ee667ad6beb18665d23 /android-app/app/src/main/res/values | |
| parent | f024a6a1cbcb68395fe1a15d4ac852c2be2416e6 (diff) | |
feat: refactor UI to BottomNavigationView with Safety and Doc fragments
Replace FAB-based navigation with a 4-tab BottomNavigationView (Map,
Instruments, Log, Safety). Instruments use a collapsible bottom sheet;
Log and Safety display as full-screen overlay fragments.
- Add SafetyFragment with MOB and Anchor Watch controls
- Add DocFragment for in-app markdown help (Markwon: core, tables, images)
- Add layout_instruments_sheet with 3x3 instrument grid and PolarDiagramView
- Add fragment_safety and fragment_doc layouts
- Add vector drawables: ic_map, ic_instruments, ic_log, ic_safety, ic_close
- Update activity_main.xml to CoordinatorLayout with bottom sheet + overlay
- Fix: set isHideable=true before STATE_HIDDEN to avoid silent no-op from
behavior_hideable=false default; restore false on Map/Instruments tabs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'android-app/app/src/main/res/values')
| -rwxr-xr-x | android-app/app/src/main/res/values/colors.xml | 57 | ||||
| -rwxr-xr-x | android-app/app/src/main/res/values/themes.xml | 81 |
2 files changed, 79 insertions, 59 deletions
diff --git a/android-app/app/src/main/res/values/colors.xml b/android-app/app/src/main/res/values/colors.xml index 43e0076..b380d2d 100755 --- a/android-app/app/src/main/res/values/colors.xml +++ b/android-app/app/src/main/res/values/colors.xml @@ -1,28 +1,46 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <color name="purple_200">#FFBB86FC</color> - <color name="purple_500">#FF6200EE</color> - <color name="purple_700">#FF3700B3</color> - <color name="teal_200">#FF03DAC5</color> - <color name="teal_700">#FF018786</color> + <!-- M3 Color Palette --> + <color name="md_theme_primary">#005FB0</color> + <color name="md_theme_onPrimary">#FFFFFF</color> + <color name="md_theme_primaryContainer">#D6E3FF</color> + <color name="md_theme_onPrimaryContainer">#001B3E</color> + + <color name="md_theme_secondary">#565F71</color> + <color name="md_theme_onSecondary">#FFFFFF</color> + <color name="md_theme_secondaryContainer">#DAE2F9</color> + <color name="md_theme_onSecondaryContainer">#131C2C</color> + + <color name="md_theme_error">#BA1A1A</color> + <color name="md_theme_onError">#FFFFFF</color> + <color name="md_theme_errorContainer">#FFDAD6</color> + <color name="md_theme_onErrorContainer">#410002</color> + + <color name="md_theme_background">#FDFBFF</color> + <color name="md_theme_onBackground">#1A1C1E</color> + <color name="md_theme_surface">#FDFBFF</color> + <color name="md_theme_onSurface">#1A1C1E</color> + <color name="md_theme_surfaceVariant">#E0E2EC</color> + <color name="md_theme_onSurfaceVariant">#44474E</color> + <color name="md_theme_outline">#74777F</color> + + <!-- Legacy / Functional Colors --> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> - - <!-- Maritime theme colors --> - <color name="primary">#0D47A1</color> + <color name="primary">#005FB0</color> <color name="primary_dark">#002171</color> <color name="accent">#FF6D00</color> - <color name="surface">#FFFFFF</color> - <color name="on_primary">#FFFFFF</color> - <!-- Colors for instrument display --> - <color name="instrument_text_normal">#FFFFFFFF</color> - <color name="instrument_text_secondary">#B3FFFFFF</color> - <color name="instrument_text_alarm">#FFFF0000</color> - <color name="instrument_text_stale">#FFFFFF00</color> - <color name="instrument_background">#E61E1E1E</color> - <color name="mob_button_background">#FFD70000</color> - <color name="anchor_button_background">#3F51B5</color> + <!-- Instrument Specific --> + <color name="instrument_text_normal">#1A1C1E</color> + <color name="instrument_text_secondary">#44474E</color> + <color name="instrument_text_alarm">#BA1A1A</color> + <color name="instrument_text_stale">#74777F</color> + <color name="instrument_background">#FDFBFF</color> + <color name="instrument_card_background">#F1F4F9</color> + + <color name="mob_button_background">#BA1A1A</color> + <color name="anchor_button_background">#005FB0</color> <!-- Wind overlay colors --> <color name="wind_arrow">#FFFFFFFF</color> @@ -30,12 +48,11 @@ <color name="wind_medium">#FF9800</color> <color name="wind_strong">#F44336</color> - <!-- Night Vision Mode Colors --> + <!-- Night Vision Mode (Stays Red) --> <color name="night_red_primary">#FFFF0000</color> <color name="night_red_variant">#FFBB0000</color> <color name="night_on_red">#FF000000</color> <color name="night_background">#FF000000</color> - <color name="night_on_background">#FFFF0000</color> <color name="night_surface">#FF110000</color> <color name="night_on_surface">#FFFF0000</color> </resources> diff --git a/android-app/app/src/main/res/values/themes.xml b/android-app/app/src/main/res/values/themes.xml index abef4b9..2281d96 100755 --- a/android-app/app/src/main/res/values/themes.xml +++ b/android-app/app/src/main/res/values/themes.xml @@ -1,64 +1,67 @@ <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"> - <!-- Base application theme. --> - <style name="Theme.Nav" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> - <item name="colorPrimary">@color/purple_200</item> - <item name="colorPrimaryVariant">@color/purple_700</item> - <item name="colorOnPrimary">@color/black</item> - <item name="colorSecondary">@color/teal_200</item> - <item name="colorSecondaryVariant">@color/teal_200</item> - <item name="colorOnSecondary">@color/black</item> - <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> + <!-- Base application theme (Material 3) --> + <style name="Theme.Nav" parent="Theme.Material3.DayNight.NoActionBar"> + <item name="colorPrimary">@color/md_theme_primary</item> + <item name="colorOnPrimary">@color/md_theme_onPrimary</item> + <item name="colorPrimaryContainer">@color/md_theme_primaryContainer</item> + <item name="colorOnPrimaryContainer">@color/md_theme_onPrimaryContainer</item> + + <item name="colorSecondary">@color/md_theme_secondary</item> + <item name="colorOnSecondary">@color/md_theme_onSecondary</item> + <item name="colorSecondaryContainer">@color/md_theme_secondaryContainer</item> + <item name="colorOnSecondaryContainer">@color/md_theme_onSecondaryContainer</item> + + <item name="android:colorBackground">@color/md_theme_background</item> + <item name="colorSurface">@color/md_theme_surface</item> + <item name="colorOnSurface">@color/md_theme_onSurface</item> + <item name="colorSurfaceVariant">@color/md_theme_surfaceVariant</item> + <item name="colorOnSurfaceVariant">@color/md_theme_onSurfaceVariant</item> + + <item name="colorError">@color/md_theme_error</item> + <item name="colorOnError">@color/md_theme_onError</item> + <item name="colorErrorContainer">@color/md_theme_errorContainer</item> + <item name="colorOnErrorContainer">@color/md_theme_onErrorContainer</item> + + <item name="android:statusBarColor" tools:targetApi="l">?attr/colorSurface</item> + <item name="android:windowLightStatusBar">true</item> </style> - <!-- Maritime theme (weather/forecast features) --> - <style name="Theme.NavApp" parent="Theme.MaterialComponents.DayNight.NoActionBar"> - <item name="colorPrimary">@color/primary</item> - <item name="colorPrimaryDark">@color/primary_dark</item> - <item name="colorAccent">@color/accent</item> - <item name="android:statusBarColor">@color/primary_dark</item> - </style> - - <!-- Night Vision Theme --> - <style name="Theme.Nav.NightVision" parent="Theme.MaterialComponents.NoActionBar"> + <!-- Night Vision Theme (Stays Dark and Red) --> + <style name="Theme.Nav.NightVision" parent="Theme.Material3.DayNight.NoActionBar"> <item name="colorPrimary">@color/night_red_primary</item> - <item name="colorPrimaryVariant">@color/night_red_variant</item> <item name="colorOnPrimary">@color/night_on_red</item> - <item name="colorSecondary">@color/night_red_primary</item> - <item name="colorSecondaryVariant">@color/night_red_variant</item> - <item name="colorOnSecondary">@color/night_on_red</item> <item name="android:colorBackground">@color/night_background</item> <item name="colorSurface">@color/night_surface</item> <item name="colorOnSurface">@color/night_on_surface</item> <item name="android:statusBarColor" tools:targetApi="l">@color/night_background</item> + <item name="android:windowLightStatusBar">false</item> </style> <!-- Instrument Display Styles --> - <style name="InstrumentLabel" parent="Widget.AppCompat.TextView"> - <item name="android:layout_width">0dp</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center</item> - <item name="android:textColor">@color/instrument_text_normal</item> + <style name="InstrumentLabel" parent="android:Widget.TextView"> + <item name="android:textColor">@color/instrument_text_secondary</item> <item name="android:textSize">@dimen/text_size_instrument_label</item> + <item name="android:textAllCaps">true</item> + <item name="android:letterSpacing">0.1</item> <item name="android:textStyle">bold</item> - <item name="android:paddingTop">@dimen/instrument_padding</item> - <item name="android:paddingBottom">@dimen/instrument_padding</item> </style> - <style name="InstrumentPrimaryValue" parent="Widget.AppCompat.TextView"> - <item name="android:layout_width">0dp</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center</item> + <style name="InstrumentPrimaryValue" parent="android:Widget.TextView"> <item name="android:textColor">@color/instrument_text_normal</item> <item name="android:textSize">@dimen/text_size_instrument_primary</item> <item name="android:textStyle">bold</item> + <item name="android:includeFontPadding">false</item> </style> - <style name="InstrumentSecondaryLabel" parent="Widget.AppCompat.TextView"> - <item name="android:layout_width">0dp</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:gravity">center</item> - <item name="android:textColor">@color/instrument_text_normal</item> + <style name="InstrumentSecondaryLabel" parent="android:Widget.TextView"> + <item name="android:textColor">@color/instrument_text_secondary</item> <item name="android:textSize">@dimen/text_size_instrument_secondary</item> </style> + + <style name="InstrumentCard" parent="Widget.Material3.CardView.Elevated"> + <item name="cardBackgroundColor">@color/instrument_card_background</item> + <item name="cardCornerRadius">12dp</item> + <item name="cardElevation">2dp</item> + </style> </resources> |
