Android绘制圆形图片的3个方法

本文总结了在Android开发中创建圆形图片的三种方法:使用BitmapShader通过画笔着色器绘制,利用PorterDuffXfermode的图像混合模式,以及通过Canvas的clipPath进行画布裁剪。每种方法都有其独特的效果和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常开发中,我们经常需要用到圆形图片,最近总结了3个绘制圆形图片的方法,在这里总结一下

BitmapShader

BitmapShaderShader 的子类,Shader 是 画笔的着色器,是用于给画布着色,利用 BitmapShader ,我们可以给画布绘制一个圆形图片:

public class CircleHeadView extends View {
   
    private Paint mPaint;
    ....
    {
   
        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        //Shader.TileMode.CLAMP为拉伸图片铺满
        BitmapShader bitmapShader = new BitmapShader(getBitmap(dp2px(100))
                , Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        mPaint.setShader(bitmapShader);
    }  
    
    @Override
    protected void onDraw(Canvas canvas) {
   
        super.onDraw(canvas);
        //绘制一个圆形,圆形的颜色就是我们指定的图片
        canvas.drawCircle(dp2px(50), dp2px(50), dp2px(50), mPaint);
    }
    
    private Bitmap getBitmap(int width) {
   
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(), R.drawable.bg_header, options);
        options.inJustDecodeBounds = false;
        //设置位图的屏幕密度,即每英寸有多少个像素
        options.inDensity = options.outWidth;
        //设置位图被画出来时的目标像素密度
        //与options.inDensity配合使用,可对图片进行缩放
        options.inTargetDensity = width;
        return BitmapFactory.decodeResource(getResources(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值