[android] Refactor getLocalDate and add drawableToBitmap. For Android Auto support

Signed-off-by: Andrew Shkrob <andrew.shkrob.social@yandex.by>
This commit is contained in:
Andrew Shkrob 2022-12-09 21:40:32 +01:00 committed by Roman Tsisyk
parent 3a1700ab1f
commit 174c291cf8
3 changed files with 45 additions and 22 deletions

View file

@ -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);

View file

@ -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;
}
}
}

View file

@ -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() {}
}