在例Android ApiDemos示例解析(77):Graphics->RoundRects 曾经涉及到SweepGradient ,和RadialGradient 渐变方向不同是: SweepGradient 颜色渐变方向非环形,而是以某点为圆心呈扇形扫过。

SweepGradient的构造函数:

public SweepGradient(float cx, float cy, int[] colors, float[] positions)
public SweepGradient(float cx, float cy, int color0, int color1)

其中cx,cy 指定圆心, color1,color0 或 colors 指定渐变的颜色 ,对于使用多于两种颜色时,还可以通过positions 指定每种颜色的相对位置,positions 设为NULL时表示颜色均匀分布。

LineerGradient, RadialGradient, SweepGradient 等类的基类为Shader (类似于GDI中的Brush类) ,Shader 定义了一个与之对应的Local Matrix ,可以最Shader 做坐标变换。本例使用Shader的LocalMatrix 旋转不同的角度,形成了动画效果:

float x = 160;float y = 100;mShader = new SweepGradient(x, y, new int[] { Color.GREEN, Color.RED, Color.BLUE, Color.GREEN }, null);mPaint.setShader(mShader); ...protected void onDraw(Canvas canvas) {... mMatrix.setRotate(mRotate, x, y); mShader.setLocalMatrix(mMatrix); mRotate += 3; if (mRotate >= 360) { mRotate = 0; } invalidate();...}

本例还可以按”D” ,”T”键来显示Paint 使用Dither (Dither定义可参见Android ApiDemos示例解析(59):Graphics->ColorFilters ) 以及不同的“扫过速度”时的显示效果:

Sweep_第1张图片" src="https://img.it610.com/image/info5/efb4fd0754f34bcb9c65c4115581f19e.jpg" width="650" height="471" style="border:1px solid black;">

更多相关文章

  1. Android(安卓)自定义底部导航栏
  2. Android一个TextView设置多种颜色的2种高效方法
  3. android登录界面
  4. Android(安卓)中部分文字高亮显示方法
  5. android 画环形的资料
  6. CircularTools view渐变呈现效果
  7. TabLayout+ViewPager+Fragment实现底部导航
  8. Android(安卓)Lollipop 设置状态栏颜色
  9. android_5 修改一个textview中的字符串的颜色

随机推荐

  1. android缩放动画的两种实现方法
  2. AIDL的实例,看一看结构
  3. 如何选好Android开发书籍和教程[总结]
  4. Delphi XE5 Android 运行黑屏卡死的解决
  5. Android客户端与java服务端AES加解密
  6. Android地图应用新视界--mapbox的应用开
  7. EventBus 《三》 事件的具体用法及其讲解
  8. Android(安卓)Studio JNI开发
  9. android 逆向 去广告
  10. android mp3播放器学习之预备知识1:activi