Android开发笔记之图形渲染(Shader)

Android开发笔记之图形渲染(Shader)

为了满足Android平台上图形渲染的需求,Android提供了Shader类来处理图形渲染。

[Shader][6]这个类包含了5个子类,分别满足不同的需求:

1.BitmapShader (图像渲染)
2.LinearGradient(线性渲染)
3.ComposeShader(混合渲染)
4.RadialGradient(环形渲染)
5.SweepGradient(梯度渲染)

下面我们就具体解释一下这五种的用法与区别

BitmapShader

BitmapShader的作用是使用一张位图作为纹理来对某一区域进行填充。在这个你们可以将位图看作是一块块平铺的瓷砖。
BitmapShader函数原型为:
public BitmapShader (Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode tileY);
其中,参数bitmap表示用来作为纹理填充的位图;参数tileX表示在位图X方向上位图衔接形式;参数tileY表示在位图Y方向上位图衔接形式。
Shader.TileMode有3种参数可供选择,CLAMP、REPEAT和MIRROR
CLAMP:如果渲染器超出原始边界范围,就会使用边缘的颜色对超出的区域进行着色。
REPEAT:以平铺的形式在X轴与Y轴上重复渲染位图
MIRROR:以镜像的形式重复渲染位图

REPEAT
MIRROR

LinearGradient

实现在某一指定区域内的颜色渐变效果
LinearGradient的函数原型为:
public LinearGradient (float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile);
下面就具体介绍介绍对应的参数
x0,x1,分别代表选定区域的渐变效果开始的x坐标与结束的x坐标
同理y0,y1,分别代表选定区域开始y坐标与结束的y坐标
colors表示颜色渐变的数组
positions表示颜色数组的相对位置,即可以代表颜色的数值的分布方式,默认为空
tile表示平铺方式

ComposeShader

顾名思义就是渲染效果的叠加
ComposeShader的函数原型为:
public ComposeShader (Shader shaderA, Shader shaderB, PorterDuff.Mode mode);
shaderA代表代表某一种渲染方式,shaderB也代表某一种渲染方式,mode代表的是以上两种渲染效果的叠加模式
PorterDuff.Mode有16种参数可供选择,分别为:CLEAR、SRC、DST、SRC_OVER、DST_OVER、SRC_IN、DST_IN、SRC_OUT、DST_OUT、SRC_ATOP、DST_ATOP、XOR、DARKEN、LIGHTEN、MULTIPLY、SCREEN。
其效果图如下所示:
mode

RadialGradient

在制定的区域内实现环形渲染的效果
RadialGradient的作用是在某一区域内实现环形的渐变效果。
RadialGradient的函数原型为:
public RadialGradient (float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile);
x表示表示环形的中心的x坐标,y表示环形中心的y坐标,radius表示环形的半径,colors表示颜色渐变的数组,positions表示颜色渐变的相对位置,tile表示平铺方式

SweepGradient

指在某一中心以x轴正方向逆时针旋转一周而形成的扫描效果
SweepGradient的函数原型为:
public SweepGradient (float cx, float cy, int[] colors, float[] positions);
其中,参数cx表示扫描的中心x坐标;参数cy表示扫描的中心y坐标;参数colors表示梯度渐变的颜色数组;参数positions用来指定颜色数组的相对位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值