From 9d8690734f8b5840d7573558ca2372e2c6c695f9 Mon Sep 17 00:00:00 2001 From: Andrew Shkrob Date: Fri, 9 Dec 2022 21:40:32 +0100 Subject: [PATCH] [android] Refactor `getLocalDate` and add `drawableToBitmap`. For Android Auto support Signed-off-by: Andrew Shkrob --- .../app/organicmaps/help/HelpFragment.java | 23 ++----------------- .../src/app/organicmaps/util/DateUtils.java | 23 ++++++++++++++++++- .../src/app/organicmaps/util/Graphics.java | 21 +++++++++++++++++ 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/android/src/app/organicmaps/help/HelpFragment.java b/android/src/app/organicmaps/help/HelpFragment.java index 0649d5a240..4426c2a88e 100644 --- a/android/src/app/organicmaps/help/HelpFragment.java +++ b/android/src/app/organicmaps/help/HelpFragment.java @@ -17,13 +17,10 @@ import app.organicmaps.R; import app.organicmaps.base.BaseMwmFragment; import app.organicmaps.util.Config; import app.organicmaps.util.Constants; +import app.organicmaps.util.DateUtils; import app.organicmaps.util.Graphics; import app.organicmaps.util.Utils; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - public class HelpFragment extends BaseMwmFragment implements View.OnClickListener { private String mDonateUrl; @@ -36,22 +33,6 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene Graphics.tint(view); } - // Converts 220131 to locale-dependent date (e.g. 31 January 2022), - private String localDate(long v) - { - final SimpleDateFormat format = new SimpleDateFormat("yyMMdd", Locale.getDefault()); - final String strVersion = String.valueOf(v); - try { - final Date date = format.parse(strVersion); - if (date == null) - return strVersion; - return java.text.DateFormat.getDateInstance().format(date); - } catch (java.text.ParseException e) { - e.printStackTrace(); - return strVersion; - } - } - @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -62,7 +43,7 @@ public class HelpFragment extends BaseMwmFragment implements View.OnClickListene .setText(BuildConfig.VERSION_NAME); ((TextView) root.findViewById(R.id.data_version)) - .setText(getString(R.string.data_version, localDate(Framework.nativeGetDataVersion()))); + .setText(getString(R.string.data_version, DateUtils.getLocalDate(Framework.nativeGetDataVersion()))); setupItem(R.id.news, true, root); setupItem(R.id.web, true, root); diff --git a/android/src/app/organicmaps/util/DateUtils.java b/android/src/app/organicmaps/util/DateUtils.java index 84ebf644d9..c6985d2ff7 100644 --- a/android/src/app/organicmaps/util/DateUtils.java +++ b/android/src/app/organicmaps/util/DateUtils.java @@ -5,9 +5,11 @@ import android.content.Context; import androidx.annotation.NonNull; import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.Locale; -public class DateUtils +public final class DateUtils { private DateUtils() { @@ -29,4 +31,23 @@ public class DateUtils { return android.text.format.DateFormat.is24HourFormat(context); } + + // Converts 220131 to locale-dependent date (e.g. 31 January 2022), + @NonNull + public static String getLocalDate(long v) + { + final SimpleDateFormat format = new SimpleDateFormat("yyMMdd", Locale.getDefault()); + final String strVersion = String.valueOf(v); + try + { + final Date date = format.parse(strVersion); + if (date == null) + return strVersion; + return java.text.DateFormat.getDateInstance().format(date); + } catch (java.text.ParseException e) + { + e.printStackTrace(); + return strVersion; + } + } } diff --git a/android/src/app/organicmaps/util/Graphics.java b/android/src/app/organicmaps/util/Graphics.java index d1709a02c0..e139aa29b0 100644 --- a/android/src/app/organicmaps/util/Graphics.java +++ b/android/src/app/organicmaps/util/Graphics.java @@ -141,5 +141,26 @@ public final class Graphics return res; } + @NonNull + public static Bitmap drawableToBitmap(@NonNull Drawable drawable) + { + if (drawable instanceof BitmapDrawable) + { + final BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; + if (bitmapDrawable.getBitmap() != null) + { + return bitmapDrawable.getBitmap(); + } + } + + final int drawableWidth = drawable.getIntrinsicWidth() <= 0 ? 1 : drawable.getIntrinsicWidth(); + final int drawableHeight = drawable.getIntrinsicHeight() <= 0 ? 1 : drawable.getIntrinsicHeight(); + final Bitmap bitmap = Bitmap.createBitmap(drawableWidth, drawableHeight, Bitmap.Config.ARGB_8888); + final Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + return bitmap; + } + private Graphics() {} } -- 2.45.3