你可以通过拖放操作或编写xml来创建SeekBar。
SeekBar
android:id="@+id/brightnesSseeker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:max="255"
android:progress="255" />
在MainActivity类中执行以下操作:
brightnesSseeker = (SeekBar) findViewById(R.id.brightnesSseeker);
brightnesSseeker
.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
if (progress <= 20) {
screenBrightness(20);
} else {
screenBrightness(progress);
}
stobeVariable=progress*10;
}
});
然后编写一个简单的函数:
private void screenBrightness(double newBrightnessValue) {
WindowManager.LayoutParams lp = getWindow().getAttributes();
float newBrightness = (float) newBrightnessValue;
lp.screenBrightness = newBrightness / (float) 255;
getWindow().setAttributes(lp);
}
在调用screenBrightness函数之前,请检查亮度模式,因为有时候选择了自动亮度模式,在这种情况下亮度不会改变。你还需要在清单文件中授予权限。
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
在设置 setOnSeekBarChangeListener 前,在 onCreate 中调用下面的函数。
void changeBrightnessMode(){
try {
int brightnessMode = Settings.System.getInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE);
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
}
} catch (Exception e) {
// do something useful
}
}