標籤:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
目錄(?)[+]
Android 顏色處理(八) SweepGradient 掃描/梯度渲染
為什麼什麼叫掃描渲染呢? 相信大家都看過雷達掃描的效果,尤其是在安全軟體中.
public SweepGradient(float cx, float cy, int[] colors, float[] positions)Parameters:
| cx |
渲染中心點x 座標 |
| cy |
渲染中心y 點座標 |
| colors |
圍繞中心渲染的顏色數組,至少要有兩種顏色值 |
| positions |
相對位置的顏色數組,可為null, 若為null,可為null,顏色沿漸層線均勻分布 |
public SweepGradient(float cx, float cy, int color0, int color1)Parameters:
| cx |
渲染中心點x 座標 |
| cy |
渲染中心點y 座標 |
| color0 |
起始渲染顏色 |
| color1 |
結束渲染顏色 |
:
代碼:
MainActivity:
[java] view plain copy
- package com.tony.testshader;
-
- import android.os.Bundle;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.view.Menu;
- import android.widget.SeekBar;
- import android.widget.SeekBar.OnSeekBarChangeListener;
-
- public class MainActivity extends Activity implements OnSeekBarChangeListener{
-
- private SweepGradientView sweepGradientView;
-
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- sweepGradientView = new SweepGradientView(MainActivity.this);
- setContentView(sweepGradientView);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
-
-
- }
SweepGradientView:
- package com.tony.testshader;
-
-
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Shader;
- import android.graphics.SweepGradient;
- import android.util.AttributeSet;
- import android.view.View;
-
-
- public class SweepGradientView extends View {
-
- Paint mPaint = null;
- // 梯度渲染
- Shader mSweepGradient = null;
-
- public SweepGradientView(Context context) {
- super(context);
-
- // 建立SweepGradient對象
- // 第一個,第二個參數中心座標
- // 後面的參數與線性渲染相同
- mSweepGradient = new SweepGradient(240, 360, new int[] {Color.CYAN,Color.DKGRAY,Color.GRAY,Color.LTGRAY,Color.MAGENTA,
- Color.GREEN,Color.TRANSPARENT, Color.BLUE }, null);
- mPaint = new Paint();
- }
-
-
-
- public SweepGradientView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
-
- // 繪製梯度漸層
- mPaint.setShader(mSweepGradient);
-
- canvas.drawCircle(240, 360, 200, mPaint);
- }
- }
Android 顏色渲染(八) SweepGradient掃描/梯度渲染