package suda.sudamodweather.widget.weather; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.view.SurfaceHolder; /** * Created by ghbha on 2016/5/16. */ public class SunnyDayView extends BaseAnimView { public SunnyDayView(Context context,int backColor) { super(context,backColor); } @Override protected void init() { super.init(); paint = new Paint(); paint.setStrokeWidth(3); paint.setAntiAlias(true); paint.setColor(Color.WHITE); } @Override protected void drawSub(Canvas canvas) { if (radius > MAX) { deltaRadius = -deltaRadius; } if (radius < MIN) { deltaRadius = -deltaRadius; } RectF rect1 = new RectF(-radius, -radius, radius, radius); RectF rect2 = new RectF(-(radius + addRadius), -(radius + addRadius), (radius + addRadius), (radius + addRadius)); RectF rect3 = new RectF(-(radius + 2 * addRadius), -(radius + 2 * addRadius), (radius + 2 * addRadius), (radius + 2 * addRadius)); paint.setAlpha(50); canvas.drawArc(rect3, 0, 360, false, paint); paint.setAlpha(30); canvas.drawArc(rect2, 0, 360, false, paint); paint.setAlpha(15); canvas.drawArc(rect1, 0, 360, false, paint); } @Override protected void animLogic() { radius += deltaRadius; } @Override protected int sleepTime() { return 50; } @Override public void surfaceCreated(SurfaceHolder holder) { startAnim(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } @Override public void run() { doLogic(); } @Override protected void reset() { radius = MIN; } //////////////////////////////////////////////////////////// Paint paint; //最内圆最小半径 private float MIN = getFitSize(200); //最内圆最大半径 private float MAX = getFitSize(260); private float addRadius = getFitSize(200); //最内圆半径 private float radius = MIN; private int deltaRadius = 1; }