Android 代码调节屏幕亮度

作者: 6ad3c4d9ae59 | 来源:发表于2019-07-25 16:29 被阅读5次

实现Android 使用代码调节屏幕亮度,

实现自动跟随系统亮度。

1,实现效果:

image

2,实现代码

【1】XML文件
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

<TextView

    android:id="@+id/tv"

    android:layout_below="@+id/seek"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="自动调节亮度"/>

<SeekBar

    android:id="@+id/seek"

    android:layout_width="match_parent"

    android:layout_height="wrap_content" />

<CheckBox

    android:id="@+id/cb"

    android:layout_below="@+id/tv"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="跟随系统亮度"/>

</RelativeLayout>
【2】代码实现:

package com.xiaoshuai.www.luminancedemo;

import android.os.Bundle;

import android.provider.Settings;

import android.support.v7.app.AppCompatActivity;

import android.view.Window;

import android.view.WindowManager;

import android.widget.CheckBox;

import android.widget.CompoundButton;

import android.widget.SeekBar;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

private SeekBar seekBar;

private CheckBox cb;





@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    initView();

    initEvent();

}





/**
 * 初始化监听
 */

private void initEvent() {

    //设置seekBar进度被改变的时候的时间监听

    seekBar.setOnSeekBarChangeListener(new MyOnSeekBarChangeListener());

    //设置CheckBox的点选监听事件

    cb.setOnCheckedChangeListener(this);

}





/**
 * 初始化控件的一些操作
 */

private void initView() {

    seekBar = (SeekBar) findViewById(R.id.seek);

    cb = (CheckBox) findViewById(R.id.cb);

    //设置最大刻度

    seekBar.setMax(255);

    //设置初始的Progress

    seekBar.setProgress(getSystemBrightness());

    //出世设置checkBox为选中状态

    cb.setChecked(true);

    //设置初始的屏幕亮度与系统一致

    changeAppBrightness(getSystemBrightness());

}





/**
 * 获得系统亮度
 *
 * @return
 */

private int getSystemBrightness() {

    int systemBrightness = 0;

    try {

        //获取系统当前的屏幕的亮度

        systemBrightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);

    } catch (Settings.SettingNotFoundException e) {

        e.printStackTrace();

    }

    return systemBrightness;

}





/**
 * 改变App当前Window亮度
 *
 * @param brightness
 */

public void changeAppBrightness(int brightness) {

    Window window = this.getWindow();

    WindowManager.LayoutParams lp = window.getAttributes();

    if (brightness == -1) {

        lp.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE;

    } else {

        //需要注意的是,返回的亮度是介于0~255之间的int类型值(也是为什么我们将seekBar的MaxValue设置为255的原因)

        lp.screenBrightness = (brightness <= 0 ? 1 : brightness) / 255f;

    }

    window.setAttributes(lp);

}





@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

    if (isChecked) {

        Toast.makeText(this, getSystemBrightness() + "", Toast.LENGTH_SHORT).show();

        changeAppBrightness(getSystemBrightness());

    } else {

        int seekBarProgress = seekBar.getProgress();

        changeAppBrightness(seekBarProgress);

    }

}

class MyOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeListener {

    @Override

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        //seekBar进度条被改变的时候取消checkBox的点选

        cb.setChecked(false);

        //改变亮度

        changeAppBrightness(progress);

    }

    @Override

    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override

    public void onStopTrackingTouch(SeekBar seekBar) {

    }
   }
  }

相关文章

  • Android 代码调节屏幕亮度

    实现Android 使用代码调节屏幕亮度, 实现自动跟随系统亮度。 1,实现效果: 2,实现代码 【1】XML文件...

  • Android 屏幕亮度调节

    屏幕亮度调节模式: Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATI...

  • 屏幕亮度

    ios 通过代码调节屏幕亮度 方法: [[UIScreen mainScreen] setBrightness: ...

  • Android设置屏幕亮度

    使用场景 最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度。其实,调节屏幕亮度...

  • Android设置屏幕亮度

    使用场景 最近在研究AndroidL Settings的代码,写了一个简单的控件来操控屏幕亮度。其实,调节屏幕亮度...

  • Android极速开发之调节屏幕的亮度

    屏幕亮度调节

  • adb:设置手机屏幕亮度

    adb:设置手机屏幕亮度 在自动化测试过程中,有时可能会需要调节Android设备屏幕亮度的场景时,可借助adb命...

  • Android设置/获取屏幕亮度

    前言 在Android开发过程中,我们时不时会涉及到屏幕亮度调节问题,为的是增加用户体验。那么今天就来讲讲屏幕亮度...

  • 【Android】安卓调节屏幕亮度

    首先需要申请WRITE_SETTINGS权限,在清单文件里面注册; 这个权限有些特殊,代码如下:需要注意的时,下面...

  • Android : 屏幕亮度的调整

    关于屏幕亮度的调整可以从以下几个方面入手: 判断是否开启了自动亮度调节 **获取屏幕的亮度 ** **设置亮度 *...

网友评论

    本文标题:Android 代码调节屏幕亮度

    本文链接:https://www.haomeiwen.com/subject/iptrlctx.html