android中可以使用多种shader对图像进行渲染,常见有下:
BitmapShader位图
LinearGradient线性
RadialGradient光束
SweepGradient梯度
ComposeShader混合
基本步骤是:
1.首先创建好要设置的渲染对象shader
2.接着使用paint对象的setShader方法传入该shader对象(然后刷新页面,触发onDraw方法则可使用新的渲染对象画图了!!)
实例关键代码:
bm = BitmapFactory.decodeResource(getResources(), R.drawable.girl);
paint = new Paint();
colors = new int[]{Color.RED,Color.GREEN,Color.BLUE};
bitmapShader = new BitmapShader(bm, TileMode.REPEAT, TileMode.MIRROR);
——横向使用重复模式,纵向使用镜像模式绘制bm位图至整个屏幕
linearGradient = new LinearGradient(0, 0, 100, 100, colors, null, TileMode.REPEAT);
——从(0,0)至(100,100)的位置设置color数组中颜色的线性渐变,其他剩余空间为此空间的重复模式。
radialGradient = new RadialGradient(100, 100, 80, colors, null, TileMode.REPEAT);
——以(100,100)为圆心,80为半径,以color数组中颜色绘制重复模式的光束渲染
sweepGradient = new SweepGradient(100, 100, colors, null);
——以(100,100)的位置为中心,以color数组中颜色绘制梯度渲染
composeShader = new ComposeShader(linearGradient, radialGradient,PorterDuff.Mode.DARKEN);
——混合以上多种渲染而成
相应结果图片见附件。
paint.setShader(composeShader);
postInvalidate();
- 大小: 47.7 KB
- 大小: 10.1 KB
- 大小: 57.7 KB
- 大小: 17.1 KB
- 大小: 57.5 KB
分享到:
相关推荐
【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 ...
本文实例讲述了Android编程实现自定义渐变颜色效果。分享给大家供大家参考,具体如下: 你是否已经厌恶了纯色的背景呢?那好,Android提供给程序员自定义渐变颜色的接口,让我们的界面炫起来吧。 xml定义渐变颜色 ...
最近在学习Android的paint类的时候,学习了PathEffect路径效果和Shader渲染效果。所以就做了下面的一个效果,其中自定义的view组主要是用DashPathEffect、SweepGradient的API形成的效果。感兴趣的朋友们可以参考借鉴...
LinearGradient也称作线性渲染,LinearGradient的作用是实现某一区域内颜色的线性渐变效果,看源码你就知道他是shader的子类。 它有两个构造函数 public LinearGradient(float x0, float y0, float x1, float y1, ...
在4月份开发直播时,有一个需求,需要实现一个RecylerView顶部渐变的效果 实际效果 解决思路 图层重叠处理(本质是alpha叠加出来的效果) 实现流程 保存一个图层,然后画渐变,最后再和原来的图层进行合并,达到这...
对于这种效果来说,其实实现起来挺简单的,但我们将会用到在三维软件中的着色器Shader,它是用来给空白图形上色的。用过PS的人,相信大家都知道里面有一个印章工具,印章的样式可以是图像,颜色,渐变色等。在...
Android自定义控件shader的使用,BitmapShader,线性渐变,梯度渐变
先看进度条的效果: 具体实现: 新建类,继承自View,在onDraw中进行绘制: import android.content.Context;...import android.graphics.Shader; import android.util.AttributeSet; import android.util.Log;
本例子通过重新onDraw进行圆弧的绘制。效果:画圆弧并且圆弧的颜色随之渐变。 Paint:画笔 Canvas:画布;Shader:渲染
由于圆弧需要实现渐变,可以通过给画笔设置shader(SweepGradient)渲染,为了保证圆弧起始的颜色值始终一致,需要动态调整shader的参数。具体参见 SweepGradient(centerX.toFloat(), centerY.toFloat(), circleColors...
用属性动画或者渐变填充(Shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边渐隐),没在Android中找到现成的API可用。所以,自己做了一个。 基本的想法是这样的: •在View的onTouchEvent中记录...
用属性动画或者渐变填充(Shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边渐隐),没在Android中找到现成的API可用。所以,自己做了一个。 基本的想法是这样的: 在View的onTouchEvent中记录触摸...
android-slide-to-unlock imitate ios, slide to unlock text color gradient animation ...代码比较简单,就是用android自带的着色器shader去drawText,根据不同的参数,设置着色器不同的着色位置。 截图:
android中默认提供了几种Shader给我们使用。SweepGradient就是我们需要的,扫描渐变。然后选择了之后,就是调整参数了,看一下SweepGradient的用法: 构造函数SweepGradient(float cx, float cy, @NonNull @...
1,先画头像边缘的渐变 RadialGradient gradient = new RadialGradient(j/2,k/2,j/2,new int[]{0xff5d5d5d,0xff5d5d5d,0x00ffffff},new float[]{0.f,0.8f,1.0f}, Shader.TileMode.CLAMP); paint.setShader(gradient)...
setShader方法 LinearGradient线性渐变: ... import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;...import android.graphics.Shader; import android.support.annot
第一: 文字着色Android 为我们提供了着色器 (shader类),Shader下并为我们提供了5个子类分别是:BitmapShader ----Bitmap着色LinearGradient ----线性渐变着色RadialGradient ----梯度着色SweepGradient ----唤醒着色...