[android] Migrate NavMenu to Material components

Signed-off-by: jeanbaptisteC <jeanbaptiste.charron@outlook.fr>
This commit is contained in:
Jean-Baptiste
2025-08-22 20:16:49 +02:00
committed by Konstantin Pastbin
parent 008387b0cf
commit c3d8f948ce
12 changed files with 13 additions and 65 deletions

View File

@@ -16,7 +16,6 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.AnyRes; import androidx.annotation.AnyRes;
@@ -208,13 +207,6 @@ public final class UiUtils
windowManager.getDefaultDisplay().getRealMetrics(metrics); windowManager.getDefaultDisplay().getRealMetrics(metrics);
return metrics.heightPixels; return metrics.heightPixels;
} }
public static void updateRedButton(Button button)
{
button.setTextColor(ThemeUtils.getColor(
button.getContext(), button.isEnabled() ? R.attr.redButtonTextColor : R.attr.redButtonTextColorDisabled));
}
public static void setInputError(@NonNull TextInputLayout layout, @StringRes int error) public static void setInputError(@NonNull TextInputLayout layout, @StringRes int error)
{ {
setInputError(layout, error == 0 ? null : layout.getContext().getString(error)); setInputError(layout, error == 0 ? null : layout.getContext().getString(error));

View File

@@ -3,8 +3,6 @@ package app.organicmaps.widget.menu;
import android.location.Location; import android.location.Location;
import android.util.Pair; import android.util.Pair;
import android.view.View; import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
@@ -17,6 +15,8 @@ import app.organicmaps.util.Graphics;
import app.organicmaps.util.ThemeUtils; import app.organicmaps.util.ThemeUtils;
import app.organicmaps.util.UiUtils; import app.organicmaps.util.UiUtils;
import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.imageview.ShapeableImageView;
import com.google.android.material.progressindicator.LinearProgressIndicator; import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.android.material.textview.MaterialTextView; import com.google.android.material.textview.MaterialTextView;
import java.time.LocalTime; import java.time.LocalTime;
@@ -29,7 +29,7 @@ public class NavMenu
private final View mBottomSheetBackground; private final View mBottomSheetBackground;
private final View mHeaderFrame; private final View mHeaderFrame;
private final ImageView mTts; private final ShapeableImageView mTts;
private final View mSpeedViewContainer; private final View mSpeedViewContainer;
private final MaterialTextView mSpeedValue; private final MaterialTextView mSpeedValue;
private final MaterialTextView mSpeedUnits; private final MaterialTextView mSpeedUnits;
@@ -105,13 +105,12 @@ public class NavMenu
mRouteProgress = bottomFrame.findViewById(R.id.navigation_progress); mRouteProgress = bottomFrame.findViewById(R.id.navigation_progress);
// Bottom frame buttons // Bottom frame buttons
ImageView mSettings = bottomFrame.findViewById(R.id.settings); ShapeableImageView mSettings = bottomFrame.findViewById(R.id.settings);
mSettings.setOnClickListener(v -> onSettingsClicked()); mSettings.setOnClickListener(v -> onSettingsClicked());
mTts = bottomFrame.findViewById(R.id.tts_volume); mTts = bottomFrame.findViewById(R.id.tts_volume);
mTts.setOnClickListener(v -> onTtsClicked()); mTts.setOnClickListener(v -> onTtsClicked());
Button stop = bottomFrame.findViewById(R.id.stop); MaterialButton stop = bottomFrame.findViewById(R.id.stop);
stop.setOnClickListener(v -> onStopClicked()); stop.setOnClickListener(v -> onStopClicked());
UiUtils.updateRedButton(stop);
} }
private void onStopClicked() private void onStopClicked()

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/button_pressed">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/button_red"/>
<corners android:radius="2dp"/>
</shape>
</item>
</ripple>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/button_red_disabled"/>
<corners android:radius="2dp"/>
</shape>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/button_red"/>
<corners android:radius="2dp"/>
</shape>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/button_red_pressed"/>
<corners android:radius="2dp"/>
</shape>

View File

@@ -43,7 +43,7 @@
android:paddingEnd="@dimen/nav_bottom_gap" android:paddingEnd="@dimen/nav_bottom_gap"
tools:background="#300000FF"> tools:background="#300000FF">
<ImageView <com.google.android.material.imageview.ShapeableImageView
android:id="@+id/tts_volume" android:id="@+id/tts_volume"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/nav_icon_size" android:layout_height="@dimen/nav_icon_size"
@@ -52,7 +52,7 @@
android:scaleType="center" android:scaleType="center"
app:srcCompat="@drawable/ic_voice_on" /> app:srcCompat="@drawable/ic_voice_on" />
<ImageView <com.google.android.material.imageview.ShapeableImageView
android:id="@+id/settings" android:id="@+id/settings"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/nav_icon_size" android:layout_height="@dimen/nav_icon_size"
@@ -63,16 +63,16 @@
app:srcCompat="@drawable/ic_menu_settings" app:srcCompat="@drawable/ic_menu_settings"
app:tint="?iconTint" /> app:tint="?iconTint" />
<Button <com.google.android.material.button.MaterialButton
android:id="@+id/stop" android:id="@+id/stop"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/nav_button_height" android:layout_height="@dimen/nav_button_height"
android:layout_weight="0.4" android:layout_weight="0.4"
android:background="?redButtonBackground"
android:fontFamily="@string/robotoMedium"
android:minWidth="@dimen/start_button_width" android:minWidth="@dimen/start_button_width"
android:text="@string/navigation_stop_button" android:text="@string/navigation_stop_button"
android:textAppearance="@style/MwmTextAppearance.Button.Red" android:textColor="@color/button_red_text"
android:textStyle="bold"
app:backgroundTint="@color/base_red"
tools:ignore="UnusedAttribute" /> tools:ignore="UnusedAttribute" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@@ -66,10 +66,6 @@
accentButtonTextColor selector --> accentButtonTextColor selector -->
<item name="accentButtonTextColorDisabled">@color/button_accent_text_disabled_night</item> <item name="accentButtonTextColorDisabled">@color/button_accent_text_disabled_night</item>
<item name="redButtonBackground">@drawable/button_red</item>
<item name="redButtonTextColor">@color/button_red_text</item>
<item name="redButtonTextColorDisabled">@color/button_red_text_disabled</item>
<item name="primaryButtonBackground">@drawable/button_accent_night</item> <item name="primaryButtonBackground">@drawable/button_accent_night</item>
<item name="menuBackground">@color/bg_menu_night</item> <item name="menuBackground">@color/bg_menu_night</item>

View File

@@ -108,12 +108,8 @@
<color name="button_accent_text_disabled">#42000000</color> <color name="button_accent_text_disabled">#42000000</color>
<color name="button_accent_text_disabled_night">#4CFFFFFF</color> <color name="button_accent_text_disabled_night">#4CFFFFFF</color>
<color name="button_red">@color/button_red_normal</color> <color name="button_red">@color/base_red</color>
<color name="button_red_normal">@color/base_red</color>
<color name="button_red_pressed">#FFC22219</color>
<color name="button_red_disabled">#FFB9332B</color>
<color name="button_red_text">#FFFFFFFF</color> <color name="button_red_text">#FFFFFFFF</color>
<color name="button_red_text_disabled">#FF606060</color>
<!-- Routing--> <!-- Routing-->
<color name="bg_routing_progress">#1F000000</color> <color name="bg_routing_progress">#1F000000</color>

View File

@@ -111,7 +111,7 @@
<dimen name="nav_numbers_side_min_width">90dp</dimen> <dimen name="nav_numbers_side_min_width">90dp</dimen>
<dimen name="nav_progress">4sp</dimen> <dimen name="nav_progress">4sp</dimen>
<dimen name="nav_progress_head">2dp</dimen> <dimen name="nav_progress_head">2dp</dimen>
<dimen name="nav_button_height">@dimen/primary_button_min_height</dimen> <dimen name="nav_button_height">44dp</dimen>
<dimen name="nav_icon_size">48dp</dimen> <dimen name="nav_icon_size">48dp</dimen>
<dimen name="nav_bottom_gap">12dp</dimen> <dimen name="nav_bottom_gap">12dp</dimen>
<dimen name="nav_menu_height">80sp</dimen> <dimen name="nav_menu_height">80sp</dimen>

View File

@@ -30,9 +30,6 @@
<attr name="accentButtonBackground" format="reference" /> <attr name="accentButtonBackground" format="reference" />
<attr name="accentButtonTextColor" format="color" /> <attr name="accentButtonTextColor" format="color" />
<attr name="accentButtonTextColorDisabled" format="color" /> <attr name="accentButtonTextColorDisabled" format="color" />
<attr name="redButtonBackground" format="reference" />
<attr name="redButtonTextColor" format="color" />
<attr name="redButtonTextColorDisabled" format="color" />
<attr name="primaryButtonBackground" format="reference" /> <attr name="primaryButtonBackground" format="reference" />
<attr name="menuBackground" format="color" /> <attr name="menuBackground" format="color" />
<attr name="myPositionButtonAnimation" format="reference" /> <attr name="myPositionButtonAnimation" format="reference" />

View File

@@ -64,10 +64,6 @@
accentButtonTextColor selector --> accentButtonTextColor selector -->
<item name="accentButtonTextColorDisabled">@color/button_accent_text_disabled</item> <item name="accentButtonTextColorDisabled">@color/button_accent_text_disabled</item>
<item name="redButtonBackground">@drawable/button_red</item>
<item name="redButtonTextColor">@color/button_red_text</item>
<item name="redButtonTextColorDisabled">@color/button_red_text_disabled</item>
<item name="primaryButtonBackground">@drawable/button_accent</item> <item name="primaryButtonBackground">@drawable/button_accent</item>
<item name="menuBackground">@color/bg_menu</item> <item name="menuBackground">@color/bg_menu</item>