I'm writing a module for react-native that should run on android, I have to do so to take a react-native-vector-icons and switch it to the module to be able to use them as a Drawable image.
To use the type of icons: FontAwesome, Entypo, Ionicons, MaterialIcons and etc.
I found something like that, but I did not understand how it works or how to make it work in my case.
Link: here
@TargetApi(21)
private Drawable generateVectorIcon(ReadableMap icon) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
String family = icon.getString("family");
String name = icon.getString("name");
String glyph = icon.getString("glyph");
String color = icon.getString("color");
int size = icon.getInt("size");
if (name != null && name.length() > 0 && name.contains(".")) {
Resources resources = getReactApplicationContext().getResources();
name = name.substring(0, name.lastIndexOf("."));
final int resourceId = resources.getIdentifier(name, "drawable", getReactApplicationContext().getPackageName());
return getReactApplicationContext().getDrawable(resourceId);
}
float scale = getReactApplicationContext().getResources().getDisplayMetrics().density;
String scaleSuffix = "@" + (scale == (int) scale ? Integer.toString((int) scale) : Float.toString(scale)) + "x";
int fontSize = Math.round(size * scale);
Typeface typeface = ReactFontManager.getInstance().getTypeface(family, 0, getReactApplicationContext().getAssets());
Paint paint = new Paint();
paint.setTypeface(typeface);
paint.setColor(Color.parseColor(color));
paint.setTextSize(fontSize);
paint.setAntiAlias(true);
Rect textBounds = new Rect();
paint.getTextBounds(glyph, 0, glyph.length(), textBounds);
Bitmap bitmap = Bitmap.createBitmap(textBounds.width(), textBounds.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawText(glyph, -textBounds.left, -textBounds.top, paint);
return new BitmapDrawable(getReactApplicationContext().getResources(), bitmap);
}
Some advice?