ArcsDemo
2015-11-20 14:59
323 查看
package com.example.xfermodesdemo; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.os.Bundle; import android.view.View; public class ArcsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new SampleView(this)); } private static class SampleView extends View { private Paint[] mPaints; private Paint mFramePaint;// 大图形画笔 private boolean[] mUseCenters; private RectF[] mOvals; private RectF mBigOval; private float mStart; private float mSweep; private int mBigIndex; private static final float SWEEP_INC = 2; private static final float START_INC = 15; public SampleView(Context context) { super(context); mPaints = new Paint[4]; mUseCenters = new boolean[4]; mOvals = new RectF[4]; //圆1 Paint.Style.FILL //center false mPaints[0] = new Paint(); mPaints[0].setAntiAlias(true);// 抗锯齿 mPaints[0].setStyle(Paint.Style.FILL); mPaints[0].setColor(0x88FF0000); mUseCenters[0] = false; //圆2 Paint.Style.FILL //center true mPaints[1] = new Paint(mPaints[0]); mPaints[1].setColor(0x8800FF00); mUseCenters[1] = true; //圆3 Paint.Style.STROKE //center false mPaints[2] = new Paint(mPaints[0]); mPaints[2].setStyle(Paint.Style.STROKE); mPaints[2].setStrokeWidth(4); mPaints[2].setColor(0x880000FF); mUseCenters[2] = false; //圆4 Paint.Style.STROKE //center true mPaints[3] = new Paint(mPaints[2]); mPaints[3].setColor(0x88888888); mUseCenters[3] = true; mBigOval = new RectF(40, 10, 280, 250); mOvals[0] = new RectF(10, 270, 70, 330); mOvals[1] = new RectF(90, 270, 150, 330); mOvals[2] = new RectF(170, 270, 230, 330); mOvals[3] = new RectF(250, 270, 310, 330); mFramePaint = new Paint(); mFramePaint.setAntiAlias(true); mFramePaint.setStyle(Paint.Style.STROKE); mFramePaint.setStrokeWidth(0); } private void drawArcs(Canvas canvas, RectF oval, boolean useCenter, Paint paint) { canvas.drawRect(oval, mFramePaint); canvas.drawArc(oval, mStart, mSweep, useCenter, paint);//绘制椭圆的函数 } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.WHITE); drawArcs(canvas, mBigOval, mUseCenters[mBigIndex], mPaints[mBigIndex]); for (int i = 0; i < 4; i++) { drawArcs(canvas, mOvals[i], mUseCenters[i], mPaints[i]); } mSweep += SWEEP_INC; if (mSweep > 360) { mSweep -= 360; mStart += START_INC; if (mStart >= 360) { mStart -= 360; } mBigIndex = (mBigIndex + 1) % mOvals.length; } invalidate(); } } }
粉色 Style: Paint.Style.FILL useCenters:false
绿色:Style: Paint.Style.FILL useCenters:true
紫色:Style: Paint.Style.STROKE useCenters:false
灰色:Style: Paint.Style.STROKE useCenters:true
相关文章推荐
- 单例模式
- 单口RAM、伪双口RAM、双口RAM与FIFO的区别
- E-Form++图形可视化源码库新增同BCGSoft的Ribbon结合示例
- 【转】Jmeter做web压力测试时设置持续时间注意点
- TCP连接探测中的Keepalive和心跳包
- [LeetCode]Range Sum Query - Mutable
- [LeetCode]Range Sum Query - Mutable
- C语言问题 赋值表达式返回值是什么 http://zhidao.baidu.com/link?url=FrmzIbFTHGAGizJ4aBU7r93lWwOTOuVh4WLMAJ3DA0wRRnqS
- 运用GDB进行UT/ST的小经验
- Android屏幕适配经验谈
- iOS NSString的常用用法
- 1007. 素数对猜想 (20)
- 传法授业讲缘分
- HiHo 1032 最长回文子串 (Manacher算法求解)
- 使用def文件简化dll导出
- UITabBarController
- ab和jmeter进行GET/POST压力测试的使用心得和比较
- App图标(App Icons)
- Android 4K高清图片解码显示(2)BitmapFactory常用Bitmap的解码方法
- Android内存管理