package com.youplayer.player.fullplayer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import com.youplayer.player.YouExplorer;
import com.youplayer.player.R;
import com.youplayer.util.YouUtility;
public class YouPlayerBrightControl extends View {
Bitmap back;
Paint paint;
Bitmap p_back,p_focus;
public YouPlayerBrightControl(Context context, AttributeSet attrs) {
super(context, attrs);
back = BitmapFactory.decodeResource(context.getResources(),R.drawable.youplayer_fullplayer_light_bg);
p_back = BitmapFactory.decodeResource(context.getResources(),R.drawable.youplayer_fullplayer_adjustment_bg);
p_focus = BitmapFactory.decodeResource(context.getResources(),R.drawable.youplayer_fullplayer_adjustment_active);
paint = new Paint();
paint.setStyle(Style.FILL);
// AudioManager volumeManager = (AudioManager)context.getSystemService(Service.AUDIO_SERVICE);
max = 9;
if( init_value == -1 ){
init_value = YouUtility.BrightnessGetValue(YouExplorer.instance.getWindow());
vol = init_value;
//Log.i("lrl","bright value"+vol);
}
}
int lines = 10;
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(back,0,0, paint);
int l = (getWidth()-p_back.getWidth())/2;
int t = (getHeight()-p_back.getHeight())/2;
canvas.drawBitmap(p_back, l , t , paint);
if( vol >1 ){//最小值不能小于1
int off = (int) (p_focus.getHeight()*(1f-vol*1f/max));
Rect src = new Rect(0,off,p_focus.getWidth(),p_focus.getHeight());
Rect dst = new Rect(l,t+off,l+p_focus.getWidth(),t+p_focus.getHeight());
canvas.drawBitmap(p_focus,src, dst, paint);
}
}
int vol = 6;
public void setBright(Window window,int vol){
if( vol<1 ) vol = 1;
if( vol <= max)
{
this.vol = vol;
invalidate();
YouUtility.BrightnessSetValue(window,this.vol);
}
}
static int init_value=-1;
public void reset(){
if( init_value > -1 && init_value != vol){
if( init_value == 0 )
YouUtility.BrightnessSetValue(YouExplorer.instance.getWindow(),1);
else
YouUtility.BrightnessSetValue(YouExplorer.instance.getWindow(),init_value);
}
}
public void init(){
setBright(YouExplorer.instance.getWindow(),vol);
}
public int getBright(){
return vol;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(back.getWidth(),back.getHeight());
}
@Override
protected void onDetachedFromWindow() {
// back.recycle();
// back = null;
// p_back.recycle();
// p_back = null;
// p_focus.recycle();
// p_focus = null;
super.onDetachedFromWindow();
}
int max=10;
public void setBright(int p){
vol = p;
}
public void adjust(Window window,float per) {
int v = Math.round((vol + per*max));
if( v< 0 ) v = 0;
else if( v > max ) v = max;
setBright(window,v);
}
float last_y;
@Override
public boolean onTouchEvent(MotionEvent event) {
if( event.getAction() == MotionEvent.ACTION_DOWN ){
last_y = event.getY();
}else if( event.getAction() == MotionEvent.ACTION_MOVE ){
if( Math.abs(event.getY() - last_y )>5 ){
if( event.getY() - last_y > 0 )
setBright(YouExplorer.instance.getWindow(),vol-1);
else
setBright(YouExplorer.instance.getWindow(),vol+1);
}
last_y = event.getY();
}
return true;
}
public void setBrightInit() {
init_value = YouUtility.BrightnessGetValue(YouExplorer.instance.getWindow());
}
}