版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 颜色处理(五) LinearGradient线性渲染

相信很多人都看过歌词同步的效果, 一是竖直方向的滚动,另一方面是水平方面的歌词颜色渐变点亮效果,这种效果怎么做呢? 这就需要用到LinearGradient线性渲染,下面还是先看具体的使用:

LinearGradient有两个构造函数;

public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions,Shader.TileMode tile)

参数:

float x0: 渐变起始点x坐标

float y0:渐变起始点y坐标

float x1:渐变结束点x坐标

float y1:渐变结束点y坐标

int[] colors:颜色 的int 数组

float[] positions: 相对位置的颜色数组,可为null,  若为null,可为null,颜色沿渐变线均匀分布

Shader.TileMode tile: 渲染器平铺模式

public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1,Shader.TileMode tile)

float x0: 渐变起始点x坐标

float y0:渐变起始点y坐标

float x1:渐变结束点x坐标

float y1:渐变结束点y坐标

int color0: 起始渐变色

int color1: 结束渐变色

Shader.TileMode tile: 渲染器平铺模式

效果图:

然后看一下具体怎么实现这种效果;

MainActivity:

  1. package com.tony.shader;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. public class MainActivity extends Activity {
  5. private LinearGradientView linearGradientView;
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. linearGradientView = new LinearGradientView(this);
  10. setContentView(linearGradientView);
  11. }
  12. }

LinearGradientView;

    1. package com.tony.shader;
    2. import android.content.Context;
    3. import android.graphics.Canvas;
    4. import android.graphics.Color;
    5. import android.graphics.LinearGradient;
    6. import android.graphics.Paint;
    7. import android.util.AttributeSet;
    8. import android.graphics.Shader;
    9. import android.view.View;
    10. public class LinearGradientView extends View {
    11. private LinearGradient linearGradient = null;
    12. private Paint paint = null;
    13. public LinearGradientView(Context context)
    14. {
    15. super(context);
    16. linearGradient = new LinearGradient(0, 0, 100, 100, new int[] {
    17. Color.YELLOW, Color.GREEN, Color.TRANSPARENT, Color.WHITE }, null,
    18. Shader.TileMode.REPEAT);
    19. paint = new Paint();
    20. }
    21. public LinearGradientView(Context context, AttributeSet attrs) {
    22. super(context, attrs);
    23. }
    24. @Override
    25. protected void onDraw(Canvas canvas) {
    26. // TODO Auto-generated method stub
    27. super.onDraw(canvas);
    28. //设置渲染器
    29. paint.setShader(linearGradient);
    30. //绘制圆环
    31. canvas.drawCircle(240, 360, 200, paint);
    32. }
    33. }

Android 颜色渲染(五) LinearGradient线性渲染的更多相关文章

  1. LinearGradient线性渲染

    import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; impor ...

  2. Android 颜色渲染(十) ComposeShader组合渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(十) ComposeShader组合渲染 public ComposeShader(Shader sh ...

  3. Android 颜色渲染(三) Shader颜色渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 相信看过在上一篇中提到的三篇文章后,大家已经对颜色处理方面有更深的体会. 之前讲到颜色渐变的效果, 具体怎么做呢,这就需要应用颜色渲染. 首先要介 ...

  4. Android 颜色渲染(六) RadialGradient 环形渲染

    Android 颜色处理(六) RadialGradient 环形渲染 public RadialGradient(float x, float y, float radius, int[] colo ...

  5. Android 颜色渲染(四) BitmapShader位图渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色处理(四) BitmapShader位图渲染 public   BitmapShader(Bitmap bitmap,Shad ...

  6. Android 颜色渲染(八) SweepGradient扫描/梯度渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(八) SweepGradient 扫描/梯度渲染 为什么什么叫扫描渲染呢?  相信大家都看过雷达扫描的 ...

  7. Android 颜色渲染(九) PorterDuff及Xfermode详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类 ...

  8. Android 颜色渲染(一) 颜色选择器 ColorPickerDialog剖析

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android 颜色选择器之ColorPickerDialog剖析 有这样一个需求,可以让用户自定义背景颜色,这就需要提供一个颜色选择器给用户. ...

  9. Android学习笔记12:图像渲染(Shader)

    在Android中,提供了Shader类专门用来渲染图像以及一些几何图形. Shader类包括了5个直接子类,分别为:BitmapShader.ComposeShader.LinearGradient ...

随机推荐

  1. centos 7.0防火墙导致vagrant端口映射失败

    在vagrant上部署了centos7.0后,Vagrantfile端口转发设置后,宿主机访问客户机站点还是无法访问,问题出在:centos7.0以上版本默认会安装firewalld防火墙, fire ...

  2. flash player over linux

    flashplayer官方网址:https://get.adobe.com/cn/flashplayer/ flash插件安装方法一(适用于ubuntu等linux系统):               ...

  3. 2016021901 - ubuntu截图技巧

    ubuntu系统自带截图功能使用介绍 ubuntu自定义截图快捷键:Shift+PrtSc 截取当前窗口快捷键:Alt+PrtSc 保存全屏截图:PrtSc

  4. BZOJ 3595: [Scoi2014]方伯伯的Oj SBT+可持久化Treap

    3595: [Scoi2014]方伯伯的Oj Time Limit: 6 Sec  Memory Limit: 256 MBSubmit: 102  Solved: 54[Submit][Status ...

  5. Strongly connected

    hdu4635:http://acm.hdu.edu.cn/showproblem.php?pid=4635 题意:给你一个有向图,然后问你最多可以加多少条边,是的原图不是一个强连通图. 题解:这一题 ...

  6. KK的新书《必然》对未来科技趋势的预言

    是他第一次在<失控>中提示我们--  要用生物学而不是机械学的角度看待这个世界.  是他第一次在<科技想要什么>提示我们--  科技本身就是一个生命体.  而在新书<必然 ...

  7. MTD应用学习:mtd和mtdblock的区别

    http://my.oschina.net/shelllife/blog/123482 http://www.cnblogs.com/hnrainll/archive/2011/06/09/20760 ...

  8. Linux学习笔记26——信号量

    一 信号量的基本概念 信号量:它是一个特殊变量,只允许对它进行等待和发送信号这两种操作. 假设有一个信号量变量sv P(sv):用于等待,如果sv的值大于零,就给它减去1,如果它的值等于零,就挂起该进 ...

  9. TortoiseSVN优化设置

    设置log messages的字体 TortoiseSVN默认的字体太小了,看着难受: 可以在Settings > 左侧目录树General > Dialogs 1中进行设置: 使用Bey ...

  10. HDU 3555 Bomb(数位DP)

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Subm ...