Search code examples
androidandroid-layoutandroid-imageviewthumbnailsbitmapimage

Android: Creating contact thumbnail from name initials


I've an Android ListView containing some emails. Some of them have contact thumbnails while some of them don't. For unknown contact thumbnails, I want to create a Bitmap, containing the initials of the corresponding email id. How can I achieve that? I've seen some Android apps using this technique to display contact thumbnail like this:

enter image description here

To start with, I'm using the following code:

ImageView iv=(ImageView)findViewById(R.id.imageView1);
    TextView view = (TextView)findViewById(R.id.textView1);

    Bitmap b=Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    view.draw(c);
    iv.setImageBitmap(b);

Where the TextView holds a simple string. Unfortunately, it doesn't work. Can anyone please give me some pointers? Thanks a lot for your help!


Solution

  • Well you're on the right track. Try it something like this.

    ImageView iv=(ImageView)findViewById(R.id.imageView1);
    
    Bitmap b=Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    c.drawText(initials,x,y,paint);
    iv.setImageBitmap(b);
    

    You should create your own logic to center the text. You could use some of the following helper method Paint.getTextSize() to find out how much space the text needs.