Android學習筆記(六) 調整手機螢幕亮度Brightness seekbar實現
阿新 • • 發佈:2019-02-19
brightness(亮度)是window中的一個屬性
修改亮度需要取得window屬性
方法為:
- WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
- layoutParams.screenBrightness = b;// b是亮度
- getWindow().setAttributes(layoutParams);
b是一個浮點數 從0~1 ,表示亮度
例子效果圖(在真機上有效執行)
例子程式碼:
-
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;
- publicclass ScreenBrightnessSolution extends Activity {
-
private SeekBar ScreenBrightnessSeekBar;
- private TextView tView ;
- /** Called when the activity is first created. */
- @Override
- publicvoid 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() {
- publicvoid onStopTrackingTouch(SeekBar seekBar) {
- // TODO Auto-generated method stub
- setScreenBrightness((float)seekBar.getProgress()/10);
- }
- publicvoid onStartTrackingTouch(SeekBar seekBar) {
- // TODO Auto-generated method stub
- }
- publicvoid onProgressChanged(SeekBar seekBar, int progress,
- boolean fromUser) {
- // TODO Auto-generated method stub
- }
- });
- }
- privatevoid 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));
- }
- }