zoukankan      html  css  js  c++  java
  • Android 颜色渲染(五) LinearGradient线性渲染

    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.   
    3. import android.os.Bundle;  
    4. import android.app.Activity;  
    5.   
    6. public class MainActivity extends Activity {  
    7.   
    8.     private LinearGradientView linearGradientView;  
    9.       
    10.     @Override  
    11.     protected void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.   
    14.         linearGradientView = new LinearGradientView(this);  
    15.         setContentView(linearGradientView);  
    16.     }  
    17.   
    18. }  


    LinearGradientView;

      1. package com.tony.shader;  
      2.   
      3. import android.content.Context;  
      4. import android.graphics.Canvas;  
      5. import android.graphics.Color;  
      6. import android.graphics.LinearGradient;  
      7. import android.graphics.Paint;  
      8. import android.util.AttributeSet;  
      9. import android.graphics.Shader;  
      10. import android.view.View;  
      11.   
      12. public class LinearGradientView extends View {  
      13.   
      14.     private LinearGradient linearGradient = null;    
      15.     private Paint paint = null;    
      16.       
      17.     public LinearGradientView(Context context)    
      18.     {    
      19.         super(context);    
      20.         linearGradient = new LinearGradient(0, 0, 100, 100, new int[] {    
      21.                 Color.YELLOW, Color.GREEN, Color.TRANSPARENT, Color.WHITE }, null,    
      22.                 Shader.TileMode.REPEAT);    
      23.         paint = new Paint();    
      24.     }    
      25.       
      26.     public LinearGradientView(Context context, AttributeSet attrs) {  
      27.         super(context, attrs);  
      28.     }  
      29.       
      30.     @Override  
      31.     protected void onDraw(Canvas canvas) {  
      32.         // TODO Auto-generated method stub  
      33.         super.onDraw(canvas);  
      34.         //设置渲染器  
      35.         paint.setShader(linearGradient);    
      36.                 //绘制圆环  
      37.         canvas.drawCircle(240, 360, 200, paint);   
      38.     }  
      39.   
  • 相关阅读:
    200行代码实现Mini ASP.NET Core
    使用Elastic APM监控你的.NET Core应用
    .NET西安社区「拥抱开源,又见 .NET:壹周年Party」活动简报
    西安7月21日「拥抱开源,又见.NET:壹周年Party」线下交流活动
    领域驱动设计(DDD)编码实践
    再谈领域驱动设计
    「拥抱开源, 又见 .NET」系列第三次线下活动简报
    西安活动 | 4月20日「拥抱开源,又见.NET :云时代 • 新契机」
    在Xunit中使用FsCheck
    rocketMq特性(features)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5571856.html
Copyright © 2011-2022 走看看