標籤:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
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
- package com.tony.shader;
-
- import android.os.Bundle;
- import android.app.Activity;
-
- public class MainActivity extends Activity {
-
- private LinearGradientView linearGradientView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- linearGradientView = new LinearGradientView(this);
- setContentView(linearGradientView);
- }
-
- }
LinearGradientView;
[java] view plain copy
- package com.tony.shader;
-
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.LinearGradient;
- import android.graphics.Paint;
- import android.util.AttributeSet;
- import android.graphics.Shader;
- import android.view.View;
-
- public class LinearGradientView extends View {
-
- private LinearGradient linearGradient = null;
- private Paint paint = null;
-
- public LinearGradientView(Context context)
- {
- super(context);
- linearGradient = new LinearGradient(0, 0, 100, 100, new int[] {
- Color.YELLOW, Color.GREEN, Color.TRANSPARENT, Color.WHITE }, null,
- Shader.TileMode.REPEAT);
- paint = new Paint();
- }
-
- public LinearGradientView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- // TODO Auto-generated method stub
- super.onDraw(canvas);
- //設定渲染器
- paint.setShader(linearGradient);
- //繪製圓環
- canvas.drawCircle(240, 360, 200, paint);
- }
-
- }
Android 顏色渲染(五) LinearGradient線性渲染