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

View file

@ -60,18 +60,31 @@
android:layout_marginVertical="@dimen/activity_margin_vertical" />
<ImageView
android:id="@+id/achievement_badge"
android:id="@+id/achievement_badge_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/achievement_level"
android:layout_centerHorizontal="true"
android:layout_below="@id/achievement_info"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginVertical="@dimen/activity_margin_vertical" />
<TextView
android:id="@+id/achievement_badge_text"
android:textColor="@color/achievement_badge_text"
android:textSize="90dp"
android:textAlignment="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_alignTop="@+id/achievement_badge_image"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true" />
<RelativeLayout
android:id="@+id/layout_image_uploaded"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/achievement_badge"
android:layout_below="@+id/achievement_badge_image"
android:layout_marginEnd="@dimen/activity_margin_horizontal"
android:layout_marginLeft="@dimen/activity_margin_horizontal"
android:layout_marginRight="@dimen/activity_margin_horizontal"

View file

@ -5,6 +5,7 @@
<color name="main_background_light">#fafafa</color>
<color name="achievement_background_dark">#494949</color>
<color name="achievement_background_light">#D6DCE0</color>
<color name="achievement_badge_text">#ffffff</color>
<color name="drawerHeader_background_dark">#494949</color>
<color name="drawerHeader_background_light">#aaaaaa</color>
<color name="tutorial_background_dark">#303030</color>