Android: 从姓名首字母创建联系人缩略图
Android: Creating contact thumbnail from name initials
我有一个 Android ListView
包含一些电子邮件。其中一些有联系人缩略图,而另一些则没有。对于未知的联系人缩略图,我想创建一个位图,其中包含相应电子邮件 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);
您应该创建自己的逻辑来使文本居中。您可以使用以下一些辅助方法 Paint.getTextSize() 来找出文本需要多少 space。
这个库使用简单,你可以试试: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");
阅读 answer.He has used excellent strategy of using button instead of creating bitmap. Coupled with this you can try to select from a set of colors(for background and text), try to use material design guidelines.This 答案已解释如何操作。
我有一个 Android ListView
包含一些电子邮件。其中一些有联系人缩略图,而另一些则没有。对于未知的联系人缩略图,我想创建一个位图,其中包含相应电子邮件 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);
您应该创建自己的逻辑来使文本居中。您可以使用以下一些辅助方法 Paint.getTextSize() 来找出文本需要多少 space。
这个库使用简单,你可以试试: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");
阅读