package com.asha.nightowl; import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Build; import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.View; import com.asha.nightowllib.observer.IOwlObserver; /** * Created by hzqiujiadi on 15/11/9. * hzqiujiadi ashqalcn@gmail.com */ public class CustomView extends View implements IOwlObserver { private Paint mPaint; private int mColor; private int mColorNight; public CustomView(Context context) { super(context); init(); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CustomView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); } private void init() { mColor = ContextCompat.getColor(getContext(),R.color.background_color_pressed); mColorNight = ContextCompat.getColor(getContext(),R.color.background_color_n_pressed); mPaint = new Paint(); mPaint.setColor(mColor); mPaint.setAntiAlias(true); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { float radius = getMeasuredHeight()>>1; float centerX = getMeasuredWidth()>>1; float centerY = getMeasuredHeight()>>1; canvas.drawCircle(centerX,centerY,radius,mPaint); canvas.drawCircle(centerX-radius*4,centerY,radius,mPaint); canvas.drawCircle(centerX-radius*8,centerY,radius,mPaint); canvas.drawCircle(centerX-radius*12,centerY,radius,mPaint); canvas.drawCircle(centerX+radius*4,centerY,radius,mPaint); canvas.drawCircle(centerX+radius*8,centerY,radius,mPaint); canvas.drawCircle(centerX+radius*12,centerY,radius,mPaint); } @Override public void onSkinChange(int mode, Activity activity) { int color = mode == 0 ? mColor : mColorNight; mPaint.setColor(color); this.invalidate(); } }