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


    目录(?)[+]

    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:

    1. package com.tony.testshader;  
    2.   
    3. import android.os.Bundle;  
    4. import android.app.Activity;  
    5. import android.graphics.Bitmap;  
    6. import android.graphics.BitmapFactory;  
    7. import android.view.Menu;  
    8. import android.widget.SeekBar;  
    9. import android.widget.SeekBar.OnSeekBarChangeListener;  
    10.   
    11. public class MainActivity extends Activity  implements OnSeekBarChangeListener{  
    12.   
    13.     private SweepGradientView sweepGradientView;  
    14.        
    15.        
    16.       
    17.     @Override  
    18.     protected void onCreate(Bundle savedInstanceState) {  
    19.         super.onCreate(savedInstanceState);  
    20.   
    21.           
    22.         sweepGradientView = new SweepGradientView(MainActivity.this);  
    23.         setContentView(sweepGradientView);  
    24.     }  
    25.   
    26.     @Override  
    27.     public boolean onCreateOptionsMenu(Menu menu) {  
    28.         getMenuInflater().inflate(R.menu.main, menu);  
    29.         return true;  
    30.     }  
    31.   
    32.     
    33.   

    SweepGradientView:

    1. package com.tony.testshader;  
    2.   
    3.   
    4. import android.content.Context;  
    5. import android.graphics.Canvas;  
    6. import android.graphics.Color;  
    7. import android.graphics.Paint;  
    8. import android.graphics.Shader;  
    9. import android.graphics.SweepGradient;  
    10. import android.util.AttributeSet;  
    11. import android.view.View;  
    12.   
    13.   
    14. public class SweepGradientView extends View {  
    15.       
    16.     Paint mPaint = null;    
    17.     // 梯度渲染    
    18.     Shader mSweepGradient = null;    
    19.       
    20.     public SweepGradientView(Context context) {  
    21.         super(context);  
    22.           
    23.          // 创建SweepGradient对象    
    24.         // 第一个,第二个参数中心坐标    
    25.         // 后面的参数与线性渲染相同    
    26.         mSweepGradient = new SweepGradient(240, 360, new int[] {Color.CYAN,Color.DKGRAY,Color.GRAY,Color.LTGRAY,Color.MAGENTA,    
    27.                 Color.GREEN,Color.TRANSPARENT, Color.BLUE }, null);    
    28.         mPaint = new Paint();    
    29.     }  
    30.       
    31.   
    32.   
    33.     public SweepGradientView(Context context, AttributeSet attrs) {  
    34.         super(context, attrs);  
    35.     }  
    36.       
    37.       
    38.     @Override  
    39.     protected void onDraw(Canvas canvas) {  
    40.         super.onDraw(canvas);  
    41.           
    42.          // 绘制梯度渐变    
    43.         mPaint.setShader(mSweepGradient);    
    44.           
    45.         canvas.drawCircle(240, 360, 200, mPaint);  
    46.     }  
    47. }
  • 相关阅读:
    CLR
    Cocos2dx 3.12 在AndroidStudio上编译配置
    MFC 调试方法
    列表初始化
    类型转换
    Cocos2d-x 3.4在AndroidStudio上编译配置
    出发 Let's Go
    LumiSoft.Net邮件接收乱码问题解决
    百度地图经纬度转换JS版
    百度经纬度和google经纬度互转
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5571862.html
Copyright © 2020-2023  润新知