Android QuickContactBadge с буквами, такими как Android Lollipop

У меня есть список контактов, и я хочу показать в QuickContactBadge каждого контакта первую букву его имени. Могу ли я создавать изображения во время выполнения?

Это похоже на Android Lollipop, где контакты и дозвон использует QuickContactBadge с буквами:

Скриншот Android Lollipop

Я использую функцию для создания этих изображений.

public static Bitmap generateCircleBitmap(Context context, int circleColor, float diameterDP, String text){ final int textColor = 0xffffffff; DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); float diameterPixels = diameterDP * (metrics.densityDpi / 160f); float radiusPixels = diameterPixels/2; // Create the bitmap Bitmap output = Bitmap.createBitmap((int) diameterPixels, (int) diameterPixels, Bitmap.Config.ARGB_8888); // Create the canvas to draw on Canvas canvas = new Canvas(output); canvas.drawARGB(0, 0, 0, 0); // Draw the circle final Paint paintC = new Paint(); paintC.setAntiAlias(true); paintC.setColor(circleColor); canvas.drawCircle(radiusPixels, radiusPixels, radiusPixels, paintC); // Draw the text if (text != null && text.length() > 0) { final Paint paintT = new Paint(); paintT.setColor(textColor); paintT.setAntiAlias(true); paintT.setTextSize(radiusPixels * 2); Typeface typeFace = Typeface.createFromAsset(context.getAssets(),"fonts/Roboto-Thin.ttf"); paintT.setTypeface(typeFace); final Rect textBounds = new Rect(); paintT.getTextBounds(text, 0, text.length(), textBounds); canvas.drawText(text, radiusPixels - textBounds.exactCenterX(), radiusPixels - textBounds.exactCenterY(), paintT); } return output; } 

Я передаю имя контакта в следующую функцию getMaterialColor, чтобы выбрать цвет.

 private static List<Integer> materialColors = Arrays.asList( 0xffe57373, 0xfff06292, 0xffba68c8, 0xff9575cd, 0xff7986cb, 0xff64b5f6, 0xff4fc3f7, 0xff4dd0e1, 0xff4db6ac, 0xff81c784, 0xffaed581, 0xffff8a65, 0xffd4e157, 0xffffd54f, 0xffffb74d, 0xffa1887f, 0xff90a4ae ); public static int getMaterialColor(Object key) { return material.get(Math.abs(key.hashCode()) % materialColors.size()); }