【问题标题】:How to apply half circle mask to an ImageView如何将半圆形蒙版应用于 ImageView
【发布时间】:2015-09-07 16:30:46
【问题描述】:

我有一个图像,一个半圆形框架图像,我需要将该图像放在这个框架内。但我需要对我的图像应用蒙版,以便它只显示在框架内。

例如这是我的图片:

而我想要的结果应该是这样的:

红框也是一个内部透明的图像视图。

如何在 Android 中实现这一点?

【问题讨论】:

    标签: android imageview mask


    【解决方案1】:

    Styling Android blog 上有一个很棒的教程,分为四个部分,解释了如何实现这一目标。

    编辑:

    我已经在教程的第二部分编辑了代码并创建了效果:

    private Bitmap processImage(Bitmap bitmap) {
        Bitmap bmp;
    
        bmp = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        BitmapShader shader = new BitmapShader(bitmap,
                BitmapShader.TileMode.CLAMP,
                BitmapShader.TileMode.CLAMP);
    
        float radius = bitmap.getWidth() / 2f;
        Canvas canvas = new Canvas(bmp);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setShader(shader);
    
        RectF rect = new RectF(-bitmap.getWidth() / 2f, 0,
                bitmap.getWidth() / 2f, bitmap.getHeight());
        canvas.drawOval(rect, paint);
    
        return bmp;
    }
    

    我刚刚将代码末尾的drawRoundRect 替换为drawOval,它实际上画了一个圆圈,其中一半在画布之外。

    【讨论】:

    • 谢谢,但是我怎样才能把框架图像放在上面呢?我可以给这个位图提供宽度和高度,然后为框架提供更大的宽度和高度吗?
    • 把你的位图放大一点点红框,然后在绘制最终图像之前,画红框:canvas.drawOval(rectRedFrame, paintRedFrame);canvas.drawOval(rect, paint);
    • 再次感谢,但我还有一个问题。为什么 fitXY 不适用于内部位图图像?
    • 好吧,我通过改变这一行解决了我的问题: RectF rect = new RectF(-bitmap.getWidth() , 0, bitmap.getWidth() , bitmap.getHeight());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2010-11-03
    • 2020-02-21
    • 2020-04-07
    • 2023-04-02
    相关资源
    最近更新 更多