Android:用Seekbar来调节屏幕亮度

 
 3 
 4 
 5 import com.dh.shoudiantong.screendatils.VerticalSeekBar;
 6 
 7 import android.app.Activity;
 8 import android.content.Context;
 9 import android.os.Bundle;
10 import android.view.MotionEvent;
11 import android.view.Window;
12 import android.view.WindowManager;
13 import android.widget.RelativeLayout;
14 import android.widget.SeekBar;
15 import android.widget.SeekBar.OnSeekBarChangeListener;
16 
17 
18 
19 public class ScreenActivity extends Activity{
20 
21     private RelativeLayout mylayout;//布局
22     Context context;
23     private int Max_Brightness = 255;//进度条的最大值
24     private VerticalSeekBar vSeekBar = null;//调节亮度的进度条
25     private float fBrightness = 0.0f;//亮度值
26     private WindowManager.LayoutParams lp = null;//窗口处理器的参数类
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         // TODO Auto-generated method stub
30         super.onCreate(savedInstanceState);
31         HideStatusBase();
32         setContentView(R.layout.screen_activity);
33         mylayout=(RelativeLayout)findViewById(R.id.mylayout);        
34         
35         vSeekBar = (VerticalSeekBar) findViewById(R.id.verticalSeekBar);
36         vSeekBar.setMax(Max_Brightness);
37         vSeekBar.setProgress(Max_Brightness);//默认进度值为最大
38         
39         vSeekBar.setOnSeekBarChangeListener(new SeekBarChangedListener());
40        //默认屏幕为最大亮度
41         lp = getWindow().getAttributes();
42         fBrightness = (float) vSeekBar.getProgress() / (float)Max_Brightness;
43         lp.screenBrightness =fBrightness;
44         getWindow().setAttributes(lp);
45 lp.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 46 47 } 48 class SeekBarChangedListener implements OnSeekBarChangeListener{ 49 @Override 50 public void onProgressChanged(SeekBar seekBar, int progress, 51 boolean fromUser) { 52 // TODO Auto-generated method stub 53 if(progress<1) progress=1;//此处是为了避免screenbrightness=0,从而导致屏幕自动休眠锁屏 54 fBrightness = (float) progress/ (float)Max_Brightness; 55 lp.screenBrightness =fBrightness; 56 getWindow().setAttributes(lp); 57 } 58 59 @Override 60 public void onStartTrackingTouch(SeekBar seekBar) { 61 // TODO Auto-generated method stub 62 63 } 64 65 @Override 66 public void onStopTrackingTouch(SeekBar seekBar) { 67 // TODO Auto-generated method stub 68 69 } 70 71 } 72 /** 73 * 屏幕点击事件显示菜单 74 */ 75 @Override 76 public boolean onTouchEvent(MotionEvent event){ 77 78 return false; 79 } 80 /** 81 * 全屏设置 82 */ 83 private void HideStatusBase() 84 { 85 requestWindowFeature(Window.FEATURE_NO_TITLE); 86 int flag=WindowManager.LayoutParams.FLAG_FULLSCREEN; 87 Window myWindow=this.getWindow(); 88 myWindow.setFlags(flag,flag); 89 } 90 91 } 92 93

效果图:

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

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

以上仅为本人为了记录,方便以后查略;若有错误,请不吝指正。

原文地址:https://www.cnblogs.com/android-for-dh/p/3319431.html