Android:从姓名缩写创建联系人缩略图

时间:2015-05-15 19:15:44

标签: android android-layout android-imageview thumbnails bitmapimage

我有一个包含一些电子邮件的Android ListView。其中一些有联系人缩略图,而有些则没有。对于未知的联系人缩略图,我想创建一个位图,其中包含相应电子邮件ID的首字母。我怎样才能做到这一点?我见过一些使用这种技术的Android应用程序来显示这样的联系人缩略图:

enter image description here

首先,我使用以下代码:

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

TextView包含一个简单的字符串。不幸的是,它不起作用。有人可以给我一些指示吗?非常感谢你的帮助!

3 个答案:

答案 0 :(得分:9)

嗯,你走在正确的轨道上。 尝试这样的事情。

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

您应该创建自己的逻辑来居中文本。您可以使用以下某些辅助方法Paint.getTextSize()来查找文本需要多少空间。

答案 1 :(得分:1)

使用此库很简单,您可以尝试:D

https://github.com/fahmisdk6/AvatarView

您的XML文件中的此代码

<me.fahmisdk6.avatarview.AvatarView
            android:id="@+id/avatar_user5"
            android:layout_width="48dp"
            android:layout_height="48dp"
            app:avCornerRadius="8dp"
            app:avBgTextColor="@color/colorAccent"
            app:avTextColor="@color/colorPrimary"
            app:avTextSize="10sp"
            app:avFont="font/avenir_black.ttf"/>

这在Java文件中

AvatarView avatarView5 = (AvatarView) findViewById(R.id.avatar_user5);
avatarView5.bind("Fahmi Sidik", "https://avatars2.githubusercontent.com/u/10940190?v=3&s=460");

答案 2 :(得分:0)

阅读this的答案。他采用了出色的策略,即使用按钮而不是创建位图。与此相伴的是,您可以尝试从一组颜色(用于背景和文本)中进行选择,并尝试使用材料设计准则。This答案已说明了操作方法。