当前位置:首页 » 安卓系统 » android圆形头像

android圆形头像

发布时间: 2023-03-29 21:26:11

㈠ android中 怎么显示一直图片为圆形图片

android中的imageview只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆形的图片,这个时候,我们就需要自定义imageview了,其原理就是首先获取到图片的bitmap,然后进行裁剪圆形的bitmap,然后在ondraw()进行绘制圆形图片输出。

㈡ android xml圆型头像怎么办

android生成圆形头像
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);

final Paint paint = new Paint();
//保证是方形,并且从中心画
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int w;
int deltaX = 0;
int deltaY = 0;
if (width <= height) {
w = width;
deltaY = height - w;
} else {
w = height;
deltaX = width - w;
}
final Rect rect = new Rect(deltaX, deltaY, w, w);
final RectF rectF = new RectF(rect);

paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
//圆形,所有只用一个

int radius = (int) (Math.sqrt(w * w * 2.0d) / 2);
canvas.drawRoundRect(rectF, radius, radius, paint);

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}

㈢ android 怎么把头像统一成圆形

//给你一个工具类,是把bitmap类型的图片转换成圆形图片:
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;

public class BmpToRound {
/**
* 转换图片成圆形
* @param bitmap 传入Bitmap对象
* @return
*/
public static Bitmap toRoundBitmap(Bitmap bitmap) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float roundPx;
float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;
if (width <= height) {
roundPx = width / 2;
top = 0;
bottom = width;
left = 0;
right = width;
height = width;
dst_left = 0;
dst_top = 0;
dst_right = width;
dst_bottom = width;
} else {
roundPx = height / 2;
float clip = (width - height) / 2;
left = clip;
right = width - clip;
top = 0;
bottom = height;
width = height;
dst_left = 0;
dst_top = 0;
dst_right = height;
dst_bottom = height;
}
Bitmap output = Bitmap.createBitmap(width,
height, Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom);
final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom);
final RectF rectF = new RectF(dst);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, src, dst, paint);
return output;
}

}

㈣ Android 圆角、圆形 ImageView 实现

我们要实现的图片控件继承自 AppCompatImageView ,它是 ImageView 的子类,但提供了更好的兼容性,我们在此基础上添加了若干自定义的属性和方法以实现最终的 NiceImageView :

要实圆角或者圆形的显示效果,就是对图片显示的内容区域进行“裁剪”,只显示指定的区域即可。如何做呢?

一种比较直接的办法是这样的,由于图片是被绘制在画布上的,所以用 canvas 的 clipPath() 方法先将画布裁剪成指定形状,这样就能让图片按指定形状显示了,重新 draw() 方法即可:

这样使用 src 、 background 属性给ImageView设置显示的图片都能达到预期的显示效果。但是由于 clipPath() 方法不支持抗锯齿,图片边缘会有明显的毛糙感,体验并不理想,所以需要寻找其它方法。

另一种方法是使用图像的 Alpha 合成模式 ,即
PorterDuff 来实现, 官方文档 。这里我们使用其中的 DST_IN 模式。整个过程就是先绘制目标图像,也就是图片;再绘制原图像,即一个圆角矩形或者圆形,这样最终目标图像只显示和原图像重合的区域。

到这里就实现了显示为圆角或者圆形了。但是需要通过 src 属性或者对应的方法来设置图片,否则不能达到预期效果。

绘制边框就相对容易理解了,只需要绘制一个指定样式的圆角矩形或者圆形即可:

当图片显示为圆形时,还可以绘制一个内边框,但圆角矩形的话由于圆角大小的问题,目前只能设置一个边框咯。

但是有个问题,绘制的边框会覆盖在图片上,如果边框太宽会导致图片的可见区域变小了,影像显示效果,像这样,左下角的花盆不见了:

那么如何让边框不覆盖在图片上呢?可以在 Alpha 合成绘制前先将画布缩小一定比例,最后再绘制边框,这样问题就解决了。

缩放后的ImageView显示区域的宽高就是原宽、高分别减去2倍的边框宽度,这样缩小的比例也就显而易见了。效果如下,左下角的花盆出来了:

遮罩可以理解为一层带透明度的颜色,遮罩默认不绘制,当制定了遮罩颜色时才会绘制,实现很简单:

例如加一个透明度30%的红色遮罩后的效果:

核心的实现逻辑就这些了,剩下的就是自定义属性和方法了,有兴趣的可以看源码,都很简单,希望对你有所帮助吧!

更多细节及用法见GitHub: https://github.com/SheHuan/NiceImageView

如果你需要实现类似钉钉的圆形组合头像,例如:

㈤ android圆形头像怎么实现

就是一个正方形的图片,通过自定义控件,将这张图片裁剪重绘,得到一张圆形的图片。我这里有代码。我给你找找去。

㈥ android 怎么利用shape实现圆形用户头像

<?xml version="1.0" encoding="UTF-8"?><shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false" >
<solid android:color="@color/common_red" />
<padding
android:left="2dp"
android:top="1dp"
android:right="2dp"
android:bottom="1dp" />
<solid
android:color="@color/common_red" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
<size android:width="15dp"
android:height="15dp" /></shape>

热点内容
广东金税盘的服务器地址是什么 发布:2025-07-05 09:10:29 浏览:703
挂式手机卡的服务密码是多少 发布:2025-07-05 08:57:40 浏览:943
电信卡密码八位数是多少 发布:2025-07-05 08:49:37 浏览:440
配置高用的久选什么电脑 发布:2025-07-05 08:22:40 浏览:741
迷你世界如何卡进设密码的房间 发布:2025-07-05 08:15:16 浏览:882
小米9se买哪个配置 发布:2025-07-05 07:57:32 浏览:364
金山快盘拒绝访问 发布:2025-07-05 07:42:29 浏览:251
新款奔驰c级买哪个配置好 发布:2025-07-05 07:41:46 浏览:290
android长宽比 发布:2025-07-05 07:34:11 浏览:687
买新车有哪些随车必须配置的东西 发布:2025-07-05 07:26:26 浏览:936