天天看點

Android調整手機螢幕亮度Brightness seekbar實作

brightness(亮度)是window中的一個屬性

修改亮度需要取得window屬性

方法為:

[java]  view plain copy

  1. WindowManager.LayoutParams layoutParams = getWindow().getAttributes();  
  2.         layoutParams.screenBrightness = b;// b是亮度         
  3. getWindow().setAttributes(layoutParams);  

b是一個浮點數 從0~1 ,表示亮度

例子效果圖(在真機上有效運作)

Android調整手機螢幕亮度Brightness seekbar實作

例子代碼:

[java]  view plain copy

  1. package young.ScreenBrightnessSolution;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.view.WindowManager;  
  5. import android.widget.SeekBar;  
  6. import android.widget.TextView;  
  7. import android.widget.SeekBar.OnSeekBarChangeListener;  
  8. public class ScreenBrightnessSolution extends Activity {  
  9.     private SeekBar ScreenBrightnessSeekBar;  
  10.     private TextView tView ;  
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.         //WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);  
  16.         //initView  
  17.         tView = (TextView)findViewById(R.id.text);  
  18.         ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);  
  19.         //亮度是從0~1中的一個浮點數,由于getProess得到的是Int型,是以擴大10倍,指派時除以10  
  20.         ScreenBrightnessSeekBar.setMax(10);  
  21.         ScreenBrightnessSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {  
  22.             public void onStopTrackingTouch(SeekBar seekBar) {  
  23.                 // TODO Auto-generated method stub  
  24.                 setScreenBrightness((float)seekBar.getProgress()/10);  
  25.             }  
  26.             public void onStartTrackingTouch(SeekBar seekBar) {  
  27.                 // TODO Auto-generated method stub  
  28.             }  
  29.             public void onProgressChanged(SeekBar seekBar, int progress,  
  30.                     boolean fromUser) {  
  31.                 // TODO Auto-generated method stub  
  32.             }  
  33.         });  
  34.     }  
  35.     private void setScreenBrightness(float b){  
  36.         //取得window屬性儲存在layoutParams中  
  37.         WindowManager.LayoutParams layoutParams = getWindow().getAttributes();  
  38.         layoutParams.screenBrightness = b;//b已經除以10  
  39.         getWindow().setAttributes(layoutParams);  
  40.         //顯示修改後的亮度  
  41.         layoutParams = getWindow().getAttributes();  
  42.         tView.setText(String.valueOf(layoutParams.screenBrightness));  
  43.     }  
  44. }  

繼續閱讀