您的位置:首页 > 移动开发 > Android开发

Android Api Demos登顶之路(八十九)Graphics-->Sweep

2015-10-07 16:17 477 查看
/*
* LineerGradient, RadialGradient, SweepGradient 等类是Shader的 子类,Shader类定义了一个与
* 之对应的LocalMatrix,通过这个矩阵可以实现对Shader的坐标变换。通过将shader设置到Paint中我们就可以
* 用这个画笔绘制出特殊效果的图形。本例实现了动画效果。
*/
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}

private class SampleView extends View {
private Paint mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
private float mRotate;
private Matrix mMatrix = new Matrix();
private Shader mShader;
float x = 160;
float y = 160;

public SampleView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);

// 定义一个扫描类型的渐变
mShader = new SweepGradient(x, y, new int[] { Color.GREEN,
Color.RED, Color.BLUE, Color.GREEN }, null);
mPaint.setShader(mShader);
}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
//设置旋转矩阵
mMatrix.setRotate(mRotate, x, y);
//将旋转矩阵应用于shader
mShader.setLocalMatrix(mMatrix);
mRotate+=3;
if(mRotate>360){
mRotate=0;
}

canvas.drawCircle(x, y, 80, mPaint);
invalidate();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: