Android Shader

本文介绍如何使用Android的Shader类创建圆形图片效果。通过BitmapShader的构造方法和TileMode的不同选项,可以实现图像的重复、镜像或拉伸等效果。示例代码展示了如何将BitmapShader应用于Paint对象并绘制出圆形图片。

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

有时候我们需要实现图像的渐变效果,这时候Shader就派上用场啦。
Android提供的Shader类主要用于渲染图像以及几何图形。
Shader的主要子类如下:

BitmapShader———图像渲染
LinearGradient——–线性渲染
RadialGradient——–环形渲染
SweepGradient——–扫描渲染
ComposeShader——组合渲染
在开发中调用paint.setShader(Shader shader)就可以实现渲染效果,在此以常用的BitmapShader为示例实现圆形图片。

protected void onDraw(Canvas canvas) {
     super.onDraw(canvas);
     Paint paint = new Paint();
     paint.setAntiAlias(true);
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.mm);
     int radius = bitmap.getWidth()/2;
     BitmapShader bitmapShader = new BitmapShader(bitmap,Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
     paint.setShader(bitmapShader);
     canvas.translate(250,430);
     canvas.drawCircle(radius, radius, radius, paint);
}

效果如下图所示:

1 生成BitmapShader,请参见代码第7行
2 为Paint设置Shader,请参见代码第8行
3 画出圆形图片,请参见代码第10行

在这段代码中,可能稍感陌生的就是BitmapShader构造方法。

BitmapShader(Bitmap bitmap, TileMode tileX, TileMode tileY)
第一个参数:
bitmap表示在渲染的对象
第二个参数:
tileX 表示在位图上X方向渲染器平铺模式(TileMode)
TileMode一共有三种:

REPEAT :重复
MIRROR :镜像
CLAMP:拉伸
这三种效果类似于给电脑屏幕设置屏保时,若图片太小可选择重复,拉伸,镜像。
若选择REPEAT(重复 ):横向或纵向不断重复显示bitmap
若选择MIRROR(镜像):横向或纵向不断翻转重复
若选择CLAMP(拉伸) :横向或纵向拉伸图片在该方向的最后一个像素。这点和设置电脑屏保有些不同
第三个参数:
tileY表示在位图上Y方向渲染器平铺模式(TileMode)。与tileX同理,不再赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值