您的位置:首页 > 移动开发 > Android开发

Android:用Seekbar来调节屏幕亮度

2013-09-13 15:56 302 查看
import com.dh.shoudiantong.screendatils.VerticalSeekBar;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class ScreenActivity extends Activity{

private RelativeLayout mylayout;//布局
Context context;
private int Max_Brightness = 255;//进度条的最大值
private VerticalSeekBar vSeekBar = null;//调节亮度的进度条
private float fBrightness = 0.0f;//亮度值
private WindowManager.LayoutParams lp = null;//窗口处理器的参数类
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
HideStatusBase();
setContentView(R.layout.screen_activity);
mylayout=(RelativeLayout)findViewById(R.id.mylayout);

vSeekBar = (VerticalSeekBar) findViewById(R.id.verticalSeekBar);
vSeekBar.setMax(Max_Brightness);
vSeekBar.setProgress(Max_Brightness);//默认进度值为最大

vSeekBar.setOnSeekBarChangeListener(new SeekBarChangedListener());
//默认屏幕为最大亮度
lp = getWindow().getAttributes();
fBrightness = (float) vSeekBar.getProgress() / (float)Max_Brightness;
lp.screenBrightness =fBrightness;
getWindow().setAttributes(lp);
lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;

}
class SeekBarChangedListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
if(progress<1) progress=1;//此处是为了避免screenbrightness=0,从而导致屏幕自动休眠锁屏
fBrightness = (float) progress/ (float)Max_Brightness;
lp.screenBrightness =fBrightness;
getWindow().setAttributes(lp);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub

}

}
/**
* 屏幕点击事件显示菜单
*/
@Override
public boolean onTouchEvent(MotionEvent event){

return false;
}
/**
* 全屏设置
*/
private void HideStatusBase()
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
int flag=WindowManager.LayoutParams.FLAG_FULLSCREEN;
Window myWindow=this.getWindow();
myWindow.setFlags(flag,flag);
}

}


效果图:



lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
是为了避免屏幕进入休眠状态

注意:当SeekBrightness=0时,屏幕会自动休眠锁屏;为了解决这个问题,我将progress小于1时设为1;

以上仅为本人为了记录,方便以后查略;若有错误,请不吝指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: