Android调节屏幕亮度分析源码

大家知道在android中是怎么调节亮度了吗,接下来刘让我们去看看使用android中调亮点的代码解析吧

  brightness(亮度)是window中的一个属性

  修改亮度需要取得window属性

  方法为:
?
代码片段,双击复制
01
02
03
       WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
  layoutParams.screenBrightness = b; // b是亮度
  getWindow().setAttributes(layoutParams);

  b是一个浮点数 从0~1 ,表示亮度

  因此可以通过设置b的值预览屏幕的亮度,然后通过

  Settings.System.putInt(mContext.getContentResolver(),  Settings.System.SCREEN_BRIGHTNESS,brightness);s设置屏幕亮度,brightness值为30-255

  实现如图所示效果代码:
  1.自定义一个SeekbarPreference继承dialogPreference实现亮度预览
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class SeekBarPreference extends DialogPreference implements OnSeekBarChangeListener{
private static final String TAG = "SeekBarPreference" ;
private static final int MINIMUM_BACKLIGHT = 30 ; //最低亮度
private static final int MAXIMUM_BACKLIGHT = 255 ;
private SeekBar bar;
private int oldBrightness;
private    SharedPreferences sp;
private static String KEY= "brightness" ;
public SeekBarPreference(Context context, AttributeSet attrs) {
super (context, attrs);
setDialogLayoutResource(R.layout.seekbar_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
setDialogIcon(R.drawable.ic_settings_display);
}
@Override
protected void onBindDialogView(View view) {
super .onBindDialogView(view);
sp=getSharedPreferences();
bar= (SeekBar) view.findViewById(R.id.seekbar);
bar.setMax(MAXIMUM_BACKLIGHT-MINIMUM_BACKLIGHT);
oldBrightness=sp.getInt(KEY, 125 );
bar.setOnSeekBarChangeListener( this ); //进度条改变 <a href="\"http://www.2cto.com\"" target="\"_blank\"">www.2cto.com</a>
bar.setProgress(oldBrightness-MINIMUM_BACKLIGHT); //初始化进度条
}
@Override
protected void onDialogClosed( boolean positiveResult) {
// TODO Auto-generated method stub
super .onDialogClosed(positiveResult);
if (positiveResult){
/*do nothing*/
} else {
sp.edit().putInt(KEY, oldBrightness).commit();
}
}
@Override
public void onProgressChanged(SeekBar seekbar, int progress, boolean arg2) {
// TODO Auto-generated method stub
sp.edit().putInt(KEY, progress+MINIMUM_BACKLIGHT).commit();    //进度条改变时改变存储数据,
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}

  2.调节亮度
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class ControlBrightness   extends PreferenceActivity implements OnSharedPreferenceChangeListener {
private   SeekBarPreference seekBarPreference;
private Button enBtn;
private Button disBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super .onCreate(savedInstanceState);
setContentView(R.layout.buttonbar);
addPreferencesFromResource(R.xml.custom_setting);
SharedPreferences sp=  getSharedPreferences(BatteryUtils.FILE_NAME, MODE_WORLD_WRITEABLE);
sp.registerOnSharedPreferenceChangeListener( this ); //监听数据变化,调节屏幕亮度
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
// TODO Auto-generated method stub
if (TextUtils.equals(key, "brightness" )){
int brightness=sp.getInt( "brightness" , 125 );
LayoutParams lp=   getWindow().getAttributes();
lp.screenBrightness=brightness/ 255 .0f;
getWindow().setAttributes(lp);
}
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值