java - Android 带指针的圆形图像

标签 java android

Google Map Marker

我正在开发 Android 应用程序,在我的应用程序中我必须显示用户个人资料图像,如此图所示。我使用了 CircularImage,但我需要将指针放在底部,任何人都可以帮助我如何创建指针位于底部的圆形图像

最佳答案

您可以将指针(蓝色背景)设置为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;
}

并将圆形位图设置为 ImageView 的 src:

    imageView.setImageBitmap(toRoundBitmap(mBitMap));  

为了获得更好的 View ,请在 xml 中的 ImageView 标记中设置 android:scaleType="fitStart"

关于java - Android 带指针的圆形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967941/

相关文章:

java - JavaFX 中属性的延迟初始化

java - 为什么我在尝试删除 Realm 中的对象时收到 ArrayIndexOutOfBoundsException?

java - iPhone和Android的加密方式

java - jsp:forward 删除jsp页面中的所有html

java - (Java 7 NIO.2) 监视服务线程的自定义名称

java - 执行命令liquibase,相对路径和用户反馈

java - Android Drawable getTransparentRegion() 不工作

Android:如何使用 Graph API 从 Facebook 日历获取 friend 的出生日期

android - 桌面文件到安卓手机的自定义通知

android - 白名单不适用于人行横道