因为通知栏亮度条与Settings上的亮度条是一致的,当改变一方时,另一方也会同步改变。
1.Settings上的亮度条同步是在display_settings.xml里通过android.intent.action.SHOW_BRIGHTNESS_DIALOG获取;
2.而通知栏上的亮度条状态及操作在SystemUI的settings目录下,有BrightnessController.java,BrightnessDialog.java,CurrentUserTracker.java,ToggleSeekBar.java,ToggleSlider.java五个文件里;
BrightnessController.java:控制显示亮度
BrightnessDialog.java:显示亮度的Activity,实例化以上类的对象显示亮度条及状态
CurrentUserTracker.java:广播处理器,被BrightnessController调用
ToggleSeekBar.java:SeekBar控件定义
ToggleSlider.java:布局ToggleSlider定义,包含ToggleSeekBar
3.如果要实现与通知栏一致的亮度条,要在自己的Activity里调用BrightnessController的构造方法,其他关联文件搞到自己的目录就OK了;
4.开发版本要注意:android5.0与其以下版本由于操作显示不一样(android5.0在自动调节时,亮度条值会停在上一次自动停留的值上;切换到自动调节时,亮度条值会与上一次手动值一致。5.0以下在自动模式下,亮度条值停在上一次手动值上。),因此他们的代码也不同(具体可对照以上5个文件的源码),强调如果在5.0上修改,记得在Activity的start方法里调用registerCallbacks()回收状态值方法。
设置成自动调节亮度后,我们还可以手动拉一下亮度条,然后系统会以我们设置的这个亮度为基准,根据环境来适当调节亮度。
1.Settings上的亮度条同步是在display_settings.xml里通过android.intent.action.SHOW_BRIGHTNESS_DIALOG获取;
2.而通知栏上的亮度条状态及操作在SystemUI的settings目录下,有BrightnessController.java,BrightnessDialog.java,CurrentUserTracker.java,ToggleSeekBar.java,ToggleSlider.java五个文件里;
BrightnessController.java:控制显示亮度
BrightnessDialog.java:显示亮度的Activity,实例化以上类的对象显示亮度条及状态
CurrentUserTracker.java:广播处理器,被BrightnessController调用
ToggleSeekBar.java:SeekBar控件定义
ToggleSlider.java:布局ToggleSlider定义,包含ToggleSeekBar
3.如果要实现与通知栏一致的亮度条,要在自己的Activity里调用BrightnessController的构造方法,其他关联文件搞到自己的目录就OK了;
4.开发版本要注意:android5.0与其以下版本由于操作显示不一样(android5.0在自动调节时,亮度条值会停在上一次自动停留的值上;切换到自动调节时,亮度条值会与上一次手动值一致。5.0以下在自动模式下,亮度条值停在上一次手动值上。),因此他们的代码也不同(具体可对照以上5个文件的源码),强调如果在5.0上修改,记得在Activity的start方法里调用registerCallbacks()回收状态值方法。
设置成自动调节亮度后,我们还可以手动拉一下亮度条,然后系统会以我们设置的这个亮度为基准,根据环境来适当调节亮度。