`
yaochaosheng
  • 浏览: 52700 次
  • 性别: Icon_minigender_1
  • 来自: guangzhou
文章分类
社区版块
存档分类
最新评论

android中使用shader实现渐变效果

阅读更多

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 LinearGradient 线性渐变渲染

    【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 ...

    Android编程实现自定义渐变颜色效果详解

    本文实例讲述了Android编程实现自定义渐变颜色效果。分享给大家供大家参考,具体如下: 你是否已经厌恶了纯色的背景呢?那好,Android提供给程序员自定义渐变颜色的接口,让我们的界面炫起来吧。 xml定义渐变颜色 ...

    Android实现渐变色的圆弧虚线效果

    最近在学习Android的paint类的时候,学习了PathEffect路径效果和Shader渲染效果。所以就做了下面的一个效果,其中自定义的view组主要是用DashPathEffect、SweepGradient的API形成的效果。感兴趣的朋友们可以参考借鉴...

    Android实现歌词渐变色和进度的效果

    LinearGradient也称作线性渲染,LinearGradient的作用是实现某一区域内颜色的线性渐变效果,看源码你就知道他是shader的子类。 它有两个构造函数 public LinearGradient(float x0, float y0, float x1, float y1, ...

    Android实现直播聊天区域中顶部的渐变效果

    在4月份开发直播时,有一个需求,需要实现一个RecylerView顶部渐变的效果 实际效果 解决思路 图层重叠处理(本质是alpha叠加出来的效果) 实现流程 保存一个图层,然后画渐变,最后再和原来的图层进行合并,达到这...

    Android自定义控件实现望远镜效果

    对于这种效果来说,其实实现起来挺简单的,但我们将会用到在三维软件中的着色器Shader,它是用来给空白图形上色的。用过PS的人,相信大家都知道里面有一个印章工具,印章的样式可以是图像,颜色,渐变色等。在...

    Shader渲染

    Android自定义控件shader的使用,BitmapShader,线性渐变,梯度渐变

    Android自定义水平渐变进度条

    先看进度条的效果: 具体实现: 新建类,继承自View,在onDraw中进行绘制: import android.content.Context;...import android.graphics.Shader; import android.util.AttributeSet; import android.util.Log;

    andorid圆弧绘制,并随之贪色渐变Canvas

    本例子通过重新onDraw进行圆弧的绘制。效果:画圆弧并且圆弧的颜色随之渐变。 Paint:画笔 Canvas:画布;Shader:渲染

    Android 自定义球型水波纹带圆弧进度效果(实例代码)

    由于圆弧需要实现渐变,可以通过给画笔设置shader(SweepGradient)渲染,为了保证圆弧起始的颜色值始终一致,需要动态调整shader的参数。具体参见 SweepGradient(centerX.toFloat(), centerY.toFloat(), circleColors...

    Android自定义View绘图实现渐隐动画

    用属性动画或者渐变填充(Shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边渐隐),没在Android中找到现成的API可用。所以,自己做了一个。 基本的想法是这样的: •在View的onTouchEvent中记录...

    Android使用自定义View绘制渐隐渐现动画

    用属性动画或者渐变填充(Shader)可以做到一笔一笔的变化,但要想一笔渐变(手指不抬起边画边渐隐),没在Android中找到现成的API可用。所以,自己做了一个。 基本的想法是这样的: 在View的onTouchEvent中记录触摸...

    android-slide-to-unlock:模仿ios,滑动解锁,文本颜色渐变动画

    android-slide-to-unlock imitate ios, slide to unlock text color gradient animation ...代码比较简单,就是用android自带的着色器shader去drawText,根据不同的参数,设置着色器不同的着色位置。 截图:

    TanTanRippleView-仿探探进入 扫描view.zip

    android中默认提供了几种Shader给我们使用。SweepGradient就是我们需要的,扫描渐变。然后选择了之后,就是调整参数了,看一下SweepGradient的用法: 构造函数SweepGradient(float cx, float cy,  @NonNull @...

    Android应用中绘制圆形头像的方法解析

    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)...

    Paint详解

    setShader方法 LinearGradient线性渐变: ... import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;...import android.graphics.Shader; import android.support.annot

    GlowTextView

    第一: 文字着色Android 为我们提供了着色器 (shader类),Shader下并为我们提供了5个子类分别是:BitmapShader ----Bitmap着色LinearGradient ----线性渐变着色RadialGradient ----梯度着色SweepGradient ----唤醒着色...

Global site tag (gtag.js) - Google Analytics