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

转自:http://blog.csdn.net/t12x3456/article/details/10566219


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:

[java]  view plain  copy
  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;
[java]  view plain  copy
  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(00100100new 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(240360200, paint);   
  38.     }  
  39.   
  40. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值