brightness(亮度)是window中的一個屬性
修改亮度需要取得window屬性
方法為:
[java] view plain copy
- WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
- layoutParams.screenBrightness = b;// b是亮度
- getWindow().setAttributes(layoutParams);
b是一個浮點數 從0~1 ,表示亮度
例子效果圖(在真機上有效運作)
例子代碼:
[java] view plain copy
- package young.ScreenBrightnessSolution;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.WindowManager;
- import android.widget.SeekBar;
- import android.widget.TextView;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- public class ScreenBrightnessSolution extends Activity {
- private SeekBar ScreenBrightnessSeekBar;
- private TextView tView ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
- //initView
- tView = (TextView)findViewById(R.id.text);
- ScreenBrightnessSeekBar = (SeekBar)findViewById(R.id.seekBrightness);
- //亮度是從0~1中的一個浮點數,由于getProess得到的是Int型,是以擴大10倍,指派時除以10
- ScreenBrightnessSeekBar.setMax(10);
- ScreenBrightnessSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
- public void onStopTrackingTouch(SeekBar seekBar) {
- // TODO Auto-generated method stub
- setScreenBrightness((float)seekBar.getProgress()/10);
- }
- public void onStartTrackingTouch(SeekBar seekBar) {
- // TODO Auto-generated method stub
- }
- public void onProgressChanged(SeekBar seekBar, int progress,
- boolean fromUser) {
- // TODO Auto-generated method stub
- }
- });
- }
- private void setScreenBrightness(float b){
- //取得window屬性儲存在layoutParams中
- WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
- layoutParams.screenBrightness = b;//b已經除以10
- getWindow().setAttributes(layoutParams);
- //顯示修改後的亮度
- layoutParams = getWindow().getAttributes();
- tView.setText(String.valueOf(layoutParams.screenBrightness));
- }
- }