Remove BitmapUtils (fixed #2638) (#2665)

Use a TextView on top of badge image to show user's level.
This commit is contained in:
Zhao Gang 2019-03-19 23:16:13 +08:00 committed by neslihanturan
parent fd6c4821aa
commit f4807a5e4b
4 changed files with 23 additions and 63 deletions

View file

@ -5,7 +5,6 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@ -61,8 +60,10 @@ public class AchievementsActivity extends NavigationBaseActivity {
private LevelController.LevelInfo levelInfo;
@BindView(R.id.achievement_badge)
@BindView(R.id.achievement_badge_image)
ImageView imageView;
@BindView(R.id.achievement_badge_text)
TextView badgeText;
@BindView(R.id.achievement_level)
TextView levelNumber;
@BindView(R.id.toolbar)
@ -352,9 +353,8 @@ public class AchievementsActivity extends NavigationBaseActivity {
levelNumber.setText(levelUpInfoString);
final ContextThemeWrapper wrapper = new ContextThemeWrapper(this, levelInfo.getLevelStyle());
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.badge, wrapper.getTheme());
Bitmap bitmap = BitmapUtils.drawableToBitmap(drawable);
BitmapDrawable bitmapImage = BitmapUtils.writeOnDrawable(bitmap, Integer.toString(levelInfo.getLevelNumber()),this);
imageView.setImageDrawable(bitmapImage);
imageView.setImageDrawable(drawable);
badgeText.setText(Integer.toString(levelInfo.getLevelNumber()));
}
/**

View file

@ -1,54 +0,0 @@
package fr.free.nrw.commons.achievements;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
public class BitmapUtils {
/**
* write level Number on the badge
* @param bm
* @param text
* @return
*/
public static BitmapDrawable writeOnDrawable(Bitmap bm, String text, Context context){
Bitmap.Config config = bm.getConfig();
if (config == null){
config = Bitmap.Config.ARGB_8888;
}
Bitmap bitmap = Bitmap.createBitmap(bm.getWidth(),bm.getHeight(),config);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bm, 0, 0, null);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(Math.round(canvas.getHeight()/2));
paint.setTextAlign(Paint.Align.CENTER);
Rect rectText = new Rect();
paint.getTextBounds(text,0, text.length(),rectText);
canvas.drawText(text, Math.round(canvas.getWidth()/2),Math.round(canvas.getHeight()/1.35), paint);
return new BitmapDrawable(context.getResources(), bitmap);
}
/**
* Convert Drawable to bitmap
* @param drawable
* @return
*/
public static Bitmap drawableToBitmap (Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable)drawable).getBitmap();
}
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
}