[android] Migrate about screen to Material Components

Signed-off-by: Jean-Baptiste Charron <jeanbaptiste.charron@outlook.fr>
This commit is contained in:
Jean-Baptiste
2025-08-10 17:44:50 +02:00
committed by Konstantin Pastbin
parent b26deb3bb2
commit 8e1c723b41
3 changed files with 75 additions and 64 deletions

View File

@@ -7,12 +7,15 @@ import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.ViewCompat;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.textview.MaterialTextView;
import app.organicmaps.BuildConfig;
import app.organicmaps.R;
import app.organicmaps.base.BaseMwmFragment;
@@ -32,7 +35,15 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene
private void setupItem(@IdRes int id, boolean tint, @NonNull View frame)
{
final TextView view = frame.findViewById(id);
final MaterialTextView view = frame.findViewById(id);
view.setOnClickListener(this);
if (tint)
Graphics.tint(view);
}
private void setupButton(@IdRes int id, boolean tint, @NonNull View frame)
{
final MaterialButton view = frame.findViewById(id);
view.setOnClickListener(this);
if (tint)
Graphics.tint(view);
@@ -44,12 +55,12 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene
mDonateUrl = Config.getDonateUrl(requireContext());
View root = inflater.inflate(R.layout.about, container, false);
((TextView) root.findViewById(R.id.version)).setText(BuildConfig.VERSION_NAME);
((MaterialTextView) root.findViewById(R.id.version)).setText(BuildConfig.VERSION_NAME);
final boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
final String dataVersion = DateUtils.getShortDateFormatter().format(Framework.getDataVersion());
final TextView osmPresentationView = root.findViewById(R.id.osm_presentation);
final MaterialTextView osmPresentationView = root.findViewById(R.id.osm_presentation);
if (osmPresentationView != null)
{
osmPresentationView.setText(getString(R.string.osm_presentation, dataVersion));
@@ -68,23 +79,23 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene
setupItem(R.id.mastodon, false, root);
setupItem(R.id.openstreetmap, true, root);
setupItem(R.id.faq, true, root);
setupItem(R.id.report, isLandscape, root);
setupButton(R.id.report, isLandscape, root);
setupItem(R.id.copyright, false, root);
final TextView supportUsView = root.findViewById(R.id.support_us);
final MaterialTextView supportUsView = root.findViewById(R.id.support_us);
if (BuildConfig.FLAVOR.equals("google") && !TextUtils.isEmpty(mDonateUrl))
supportUsView.setVisibility(View.GONE);
else
setupItem(R.id.support_us, true, root);
final TextView donateView = root.findViewById(R.id.donate);
final MaterialButton donateView = root.findViewById(R.id.donate);
if (TextUtils.isEmpty(mDonateUrl))
donateView.setVisibility(View.GONE);
else
{
/*donateView.setCompoundDrawablesRelativeWithIntrinsicBounds(R.drawable.ic_donate, 0,
R.drawable.ic_donate, 0);*/
setupItem(R.id.donate, isLandscape, root);
setupButton(R.id.donate, isLandscape, root);
}
if (BuildConfig.REVIEW_URL.isEmpty())

View File

@@ -33,7 +33,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5">
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -43,7 +43,7 @@
android:textIsSelectable="true"
tools:text="2025.04.16-FDroid" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/about_headline"
@@ -53,7 +53,7 @@
app:layout_constraintTop_toTopOf="@id/version" />
</LinearLayout>
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/imageView3"
android:layout_width="@dimen/about_logo"
android:layout_height="@dimen/about_logo"
@@ -85,7 +85,7 @@
android:orientation="vertical"
android:layout_gravity="center">
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_half"
@@ -93,7 +93,7 @@
android:textAppearance="@style/MwmTextAppearance.Body1"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_half"
@@ -101,7 +101,7 @@
android:textAppearance="@style/MwmTextAppearance.Body1"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_half"
@@ -112,7 +112,7 @@
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
@@ -130,7 +130,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_half">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/osm_logo"
android:layout_width="@dimen/osm_logo"
android:layout_height="@dimen/osm_logo"
@@ -142,7 +142,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/osm_presentation"
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -165,7 +165,7 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_half"
android:orientation="horizontal">
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/donate"
style="@style/MwmWidget.Button.Accent"
android:layout_width="0dp"
@@ -182,7 +182,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/report"
style="@style/MwmWidget.Button"
android:layout_width="0dp"
@@ -201,98 +201,98 @@
app:layout_constraintVertical_bias="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/faq"
style="@style/MwmWidget.TextView.Item"
android:textAlignment="viewStart"
android:text="@string/faq"
app:drawableStartCompat="@drawable/ic_question_mark" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/support_us"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/how_to_support_us"
app:drawableStartCompat="@drawable/ic_donate" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/news"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/news"
app:drawableStartCompat="@drawable/ic_news" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/rate"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/rate_the_app"
app:drawableStartCompat="@drawable/ic_rate" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/telegram"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/telegram"
app:drawableStartCompat="@drawable/ic_telegram" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/code_repo"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/codeberg"
app:drawableStartCompat="@drawable/ic_codeberg" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/web"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/website"
app:drawableStartCompat="@drawable/ic_website" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/email"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/email"
app:drawableStartCompat="@drawable/ic_email" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/matrix"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/matrix"
app:drawableStartCompat="@drawable/ic_matrix" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/mastodon"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/mastodon"
app:drawableStartCompat="@drawable/ic_mastodon" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/facebook"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/facebook"
app:drawableStartCompat="@drawable/ic_facebook" />
<!--
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/twitter"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/twitter"
app:drawableStartCompat="@drawable/ic_twitterx" />
-->
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/instagram"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/instagram"
app:drawableStartCompat="@drawable/ic_instagram" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/openstreetmap"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
@@ -306,19 +306,19 @@
android:layout_marginTop="@dimen/margin_quarter"
android:background="?dividerHorizontal" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/privacy_policy"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/privacy_policy" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/term_of_use_link"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"
android:text="@string/terms_of_use" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/copyright"
android:textAlignment="viewStart"
style="@style/MwmWidget.TextView.Item"

View File

@@ -17,7 +17,7 @@
android:orientation="vertical"
android:padding="@dimen/margin_base">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:layout_width="@dimen/about_logo"
android:layout_height="@dimen/about_logo"
android:layout_gravity="center_horizontal"
@@ -26,7 +26,7 @@
app:srcCompat="@drawable/ic_logo_monochrome"
app:tint="?attr/colorLogo"/>
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/version"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -37,7 +37,7 @@
android:textIsSelectable="true"
tools:text="2025.04.16-FDroid" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_base"
@@ -46,7 +46,7 @@
android:textAppearance="@style/MwmTextAppearance.Headline"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_half"
@@ -54,7 +54,7 @@
android:textAppearance="@style/MwmTextAppearance.Body1"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_half"
@@ -62,7 +62,7 @@
android:textAppearance="@style/MwmTextAppearance.Body1"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_half"
@@ -70,7 +70,7 @@
android:textAppearance="@style/MwmTextAppearance.Body1"
android:textColor="?android:textColorPrimary" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_half"
@@ -84,7 +84,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/osm_logo"
android:layout_width="@dimen/osm_logo"
android:layout_height="@dimen/osm_logo"
@@ -95,7 +95,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/osm_presentation"
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -112,7 +112,7 @@
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/donate"
style="@style/MwmWidget.Button.Accent"
android:layout_width="match_parent"
@@ -122,7 +122,7 @@
android:padding="@dimen/margin_quarter"
android:text="@string/donate" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/report"
style="@style/MwmWidget.Button"
android:layout_width="match_parent"
@@ -133,98 +133,98 @@
android:text="@string/report_a_bug"
android:textColor="@color/text_dark" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/faq"
style="@style/MwmWidget.TextView.Item"
android:text="@string/faq"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_question_mark" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/support_us"
style="@style/MwmWidget.TextView.Item"
android:text="@string/how_to_support_us"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_donate" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/news"
style="@style/MwmWidget.TextView.Item"
android:text="@string/news"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_news" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/rate"
style="@style/MwmWidget.TextView.Item"
android:text="@string/rate_the_app"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_rate" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/telegram"
style="@style/MwmWidget.TextView.Item"
android:text="@string/telegram"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_telegram" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/code_repo"
style="@style/MwmWidget.TextView.Item"
android:text="@string/codeberg"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_codeberg" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/web"
style="@style/MwmWidget.TextView.Item"
android:text="@string/website"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_website" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/email"
style="@style/MwmWidget.TextView.Item"
android:text="@string/email"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_email" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/matrix"
style="@style/MwmWidget.TextView.Item"
android:text="@string/matrix"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_matrix" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/mastodon"
style="@style/MwmWidget.TextView.Item"
android:text="@string/mastodon"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_mastodon" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/facebook"
style="@style/MwmWidget.TextView.Item"
android:text="@string/facebook"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_facebook" />
<!--
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/twitter"
style="@style/MwmWidget.TextView.Item"
android:text="@string/twitter"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_twitterx" />
-->
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/instagram"
style="@style/MwmWidget.TextView.Item"
android:text="@string/instagram"
android:textAlignment="viewStart"
app:drawableStartCompat="@drawable/ic_instagram" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/openstreetmap"
style="@style/MwmWidget.TextView.Item"
android:text="@string/openstreetmap"
@@ -238,19 +238,19 @@
android:layout_marginTop="@dimen/margin_quarter"
android:background="?dividerHorizontal" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/privacy_policy"
style="@style/MwmWidget.TextView.Item"
android:textAlignment="viewStart"
android:text="@string/privacy_policy" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/term_of_use_link"
style="@style/MwmWidget.TextView.Item"
android:textAlignment="viewStart"
android:text="@string/terms_of_use" />
<TextView
<com.google.android.material.textview.MaterialTextView
android:id="@+id/copyright"
style="@style/MwmWidget.TextView.Item"
android:textAlignment="viewStart"