Java 带指针的Android圆形图像

Java 带指针的Android圆形图像,java,android,Java,Android,我正在开发Android应用程序,在我的应用程序中,我必须显示用户配置文件图像,如图所示。我曾经使用过CircularImage,但我需要将指针放在底部,有人能帮我创建底部带有指针的圆形图像吗 您还需要将位图四舍五入,通过此方法,您可以获得圆形位图: public static Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight();

我正在开发Android应用程序,在我的应用程序中,我必须显示用户配置文件图像,如图所示。我曾经使用过CircularImage,但我需要将指针放在底部,有人能帮我创建底部带有指针的圆形图像吗 您还需要将
位图
四舍五入,通过此方法,您可以获得圆形位图:

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.0f;
        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.0f;
        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;
}
要获得更好的视图,请在xml中的
ImageView
标记中设置
android:scaleType=“fitStart”
,您可以将指针(蓝色背景)设置为
ImageView
的背景,并在
位图中将用户图像设置为
src

您还需要将
位图
四舍五入,通过此方法,您可以获得圆形位图:

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.0f;
        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.0f;
        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;
}

要获得更好的视图,请在xml的
ImageView
标记中设置
android:scaleType=“fitStart”
,非常感谢,我现在就检查一下。这是我工作的一个小预览。此方法使您的图像成为圆形,然后您可以在图像视图中使用自定义bg。类似上面的图像。非常感谢,我现在将检查此方法。这是我工作的一个小预览。此方法使您的图像成为圆形,然后您可以在上面的自定义bg.like图像的imageview中使用它。