Android:从姓名首字母创建联系人缩略图

Android:从姓名首字母创建联系人缩略图,android,android-layout,android-imageview,thumbnails,bitmapimage,Android,Android Layout,Android Imageview,Thumbnails,Bitmapimage,我有一个安卓列表视图包含一些电子邮件。其中一些有联系人缩略图,而一些没有。对于未知联系人缩略图,我想创建一个位图,其中包含相应电子邮件id的首字母缩写。我如何实现这一点?我见过一些Android应用程序使用这种技术显示联系人缩略图,如下所示: 首先,我使用以下代码: ImageView iv=(ImageView)findViewById(R.id.imageView1); TextView view = (TextView)findViewById(R.id.textView1);

我有一个安卓
列表视图
包含一些电子邮件。其中一些有联系人缩略图,而一些没有。对于未知联系人缩略图,我想创建一个位图,其中包含相应电子邮件id的首字母缩写。我如何实现这一点?我见过一些Android应用程序使用这种技术显示联系人缩略图,如下所示:

首先,我使用以下代码:

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包含一个简单字符串。不幸的是,它不起作用。谁能给我一些指点吗?非常感谢你的帮助

嗯,你走对了方向。 试试这样吧

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

您应该创建自己的逻辑以将文本居中。您可以使用以下一些帮助器方法来确定文本需要多少空间。

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

这段代码将保存在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"/>

阅读答案。他使用了使用按钮而不是创建位图的优秀策略。再加上这一点,您可以尝试从一组颜色(背景和文本)中进行选择,尝试使用材质设计准则。答案已经解释了怎么做。

这一行的
paint
是什么
c.drawText(缩写,x,y,paint)
AvatarView avatarView5 = (AvatarView) findViewById(R.id.avatar_user5);
avatarView5.bind("Fahmi Sidik", "https://avatars2.githubusercontent.com/u/10940190?v=3&s=460");