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; import java.util.ArrayList; /** * Created by ghbha on 2016/5/16. */ public class SunnyNightView extends BaseAnimView { public SunnyNightView(Context context, int backColor) { super(context,backColor); } @Override protected void init() { super.init(); paint = new Paint(); paint.setStrokeWidth(getFitSize(3)); paint.setColor(Color.WHITE); paint.setShadowLayer(getFitSize(10),0,0,Color.WHITE); stars = new ArrayList<>(); for (int i = 0; i < STAR_COUNT; i++) { stars.add(new Star(windowWidth, windowHeight)); } } @Override protected void drawSub(Canvas canvas) { for (Star star : stars) { //虚化边缘 paint.setAlpha(star.getCurrentAlpha()); Float fitRadius = getFitSize(star.getRadius()); RectF rect = new RectF(star.getX() - fitRadius, star.getY() - fitRadius, star.getX() + fitRadius, star.getY() + fitRadius); canvas.drawArc(rect, 0, 360, false, paint); } } @Override protected void animLogic() { for (Star star : stars) { star.shine(); } } @Override protected int sleepTime() { return 20; } @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() { } /////////////////////////////////////////////////////// private Paint paint; private static final int STAR_COUNT = 150; //星星数 private ArrayList<Star> stars; }