package com.elmz.drift;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Outline;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.widget.TextView;
public class DrowsinessView extends TextView{
private int minimum;
private int maximum;
private int value;
public DrowsinessView(Context context){
super(context);
init();
}
public DrowsinessView(Context context, AttributeSet attrs){
super(context, attrs);
init();
}
public DrowsinessView(Context context, AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr);
init();
}
public DrowsinessView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init(){
ViewOutlineProvider vop = new ViewOutlineProvider(){
@Override
public void getOutline(View view, Outline outline){
int size = getResources().getDimensionPixelSize(R.dimen.drowsiness_view_size);
outline.setOval(0, 0, size, size);
}
};
setOutlineProvider(vop);
setClipToOutline(true);
minimum = 0;
maximum = 100;
value = 0;
}
public int getMinimum(){
return minimum;
}
public void setMinimum(int minimum){
this.minimum = minimum;
setValue(value);
}
public int getMaximum(){
return maximum;
}
public void setMaximum(int maximum){
this.maximum = maximum;
setValue(value);
}
public int getValue(){
return value;
}
public void setValue(int value){
this.value = Math.min(Math.max(value, minimum), maximum);
setText(Integer.toString(value));
invalidate();
}
@Override
protected void onDraw(Canvas canvas){
int size = getResources().getDimensionPixelSize(R.dimen.drowsiness_view_size);
int r = getResources().getDimensionPixelSize(R.dimen.drowsiness_ring_inner_radius);
float theta = (float)(360f/(maximum-minimum)*(value-minimum));
Paint pnt = new Paint();
pnt.setColor(getResources().getColor(R.color.ok));
canvas.drawOval(0, 0, size, size, pnt);
pnt.setColor(getResources().getColor(R.color.warning));
canvas.drawArc(0, 0, size, size, 0, theta, true, pnt);
pnt.setColor(getResources().getColor(R.color.white));
canvas.drawOval(size/2-r, size/2-r, size/2+r, size/2+r, pnt);
super.onDraw(canvas);
}
}