Android开发之调节屏幕亮度

在播放器中,我们常常可以看到这么一个设计,就是用户通过在屏幕的某个部分上下滑动就可以调节屏幕的亮度,在某个部分上下滑动就可以调节播放的音量。而左右滑动就可以调节播放的进度。

今天,我要说一下亮度的调节。其实主要是通过设置View的属性实现的。

  public void onLightChange(float delta, int distance, Window window) {
        WindowManager.LayoutParams params = window.getAttributes();

        mCurrentDeltaBrintness = mCurrentDeltaBrintness + delta;

        if (params.screenBrightness == WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE) {
            params.screenBrightness = getScreenBrightness(getContext());
        }

        if (Math.abs(mCurrentDeltaBrintness) >= mScrolledPixPerBringhtness) {
            float deltaBrightness = mCurrentDeltaBrintness / (mScrolledPixPerBringhtness * MAX_BRINTNESS);
            params.screenBrightness = params.screenBrightness + deltaBrightness;
<pre name="code" class="java">    private void performLightChange(float brightness) {
        int resId = R.drawable.light_0;

        if (brightness <= 0.01f) {
            resId = R.drawable.light_0;
        } else if (brightness <= 0.25f) {
            resId = R.drawable.light_25;
        } else if (brightness <= 0.5f) {
            resId = R.drawable.light_50;
        } else if (brightness < 1.0f) {
            resId = R.drawable.light_75;
        } else {
            resId = R.drawable.light_100;
        }

        updateViews(resId, (int) (brightness * 100));
    }

if (params.screenBrightness <= 0.01f) { params.screenBrightness = 0.01f; } window.setAttributes(params); mCurrentDeltaBrintness = 0; } performLightChange(params.screenBrightness); }


上述代码就是在左边部分上下滑动的时候会被调用。

另附performLigthChange的代码。

    private void performLightChange(float brightness) {
        int resId = R.drawable.light_0;

        if (brightness <= 0.01f) {
            resId = R.drawable.light_0;
        } else if (brightness <= 0.25f) {
            resId = R.drawable.light_25;
        } else if (brightness <= 0.5f) {
            resId = R.drawable.light_50;
        } else if (brightness < 1.0f) {
            resId = R.drawable.light_75;
        } else {
            resId = R.drawable.light_100;
        }

        updateViews(resId, (int) (brightness * 100));
    }

我们在举一个相对好切入的例子。

复制代码
 1 package android.lekko.tools;
 2
 3 import android.app.Activity;
 4 import android.content.ContentResolver;
 5 import android.provider.Settings;
 6 import android.provider.Settings.System;
 7 import android.view.WindowManager;
 8 import android.widget.Toast;
 9
10 public class LightnessControl {
11     // 判断是否开启了自动亮度调节
12     public static boolean isAutoBrightness(Activity act) {
13         boolean automicBrightness = false;
14         ContentResolver aContentResolver = act.getContentResolver();
15         try {
16             automicBrightness = Settings.System.getInt(aContentResolver,
17                    Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
18         } catch (Exception e) {
19             Toast.makeText(act,"无法获取亮度",Toast.LENGTH_SHORT).show();
20         }
21         return automicBrightness;
22     }
23     // 改变亮度
24     public static void SetLightness(Activity act,int value)
25     {
26         try {
27             System.putInt(act.getContentResolver(),System.SCREEN_BRIGHTNESS,value);
28             WindowManager.LayoutParams lp = act.getWindow().getAttributes();
29             lp.screenBrightness = (value<=0?1:value) / 255f;
30             act.getWindow().setAttributes(lp);
31         } catch (Exception e) {
32             Toast.makeText(act,"无法改变亮度",Toast.LENGTH_SHORT).show();
33         }
34     }
35     // 获取亮度
36     public static int GetLightness(Activity act)
37     {
38         return System.getInt(act.getContentResolver(),System.SCREEN_BRIGHTNESS,-1);
39     }
40     // 停止自动亮度调节
41     public static void stopAutoBrightness(Activity activity) {
42         Settings.System.putInt(activity.getContentResolver(),
43                 Settings.System.SCREEN_BRIGHTNESS_MODE,
44                 Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
45     }
46     // 开启亮度自动调节
47     public static void startAutoBrightness(Activity activity) {
48         Settings.System.putInt(activity.getContentResolver(),
49                 Settings.System.SCREEN_BRIGHTNESS_MODE,
50                 Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
51     }
52 }
复制代码
  这是一个单独可工作的类,主要用于调节屏幕亮度,有部分注释了,解释几个概念,不标准,供参考:
  ContentResolver类,为访问其它应用程序的对外共享数据提供方法,如上面获取、设置亮度时使用的System.getInt(),System.setInt()。
  Activity类,android程序的主要类,一个界面必有此类提供后台支持,需要继承此类。
  Settings类,android程序系统相关的设置类,各种设置都可在此找。
  LayoutParams类,android界面相关的参数,如高度、宽度、亮度等。
  Toast类,一个可自动消失的提示框,轻型控件。

好,屏幕的亮度调节就到这里,很简单的。

时间: 2024-10-22 08:39:13

Android开发之调节屏幕亮度的相关文章

Android编程调节屏幕亮度(背景灯)及保持背景灯常亮的方法

本文实例讲述了Android编程调节屏幕亮度(背景灯)及保持背景灯常亮的方法.分享给大家供大家参考,具体如下: Android写的应用程序其实可以调节屏幕亮度的,查了一下资料发现WindowManager.LayoutParams这个类就包含了调节亮度的参数: WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 0.1f; 其中参数screenBrightness就是设置屏幕亮度的0

Android调节屏幕亮度实现代码_Android

调节屏幕亮度时,先设置当前activity亮度,再并保存为系统亮度即可. 1 onCreate()里检查系统亮度并设置seekBar: private void screenBrightness_check() { //先关闭系统的亮度自动调节 try { if(android.provider.Settings.System.getInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE)

android 关于调节屏幕亮度的问题

问题描述 android 关于调节屏幕亮度的问题 请问,设置屏幕亮度的值的范围是多少?网上有说是从0到1,我在设置时,从0.49到1.0这个范围内,每增加或减少0.01,亮度就会改变.但在0.0到0.48这个范围内,值的改变并不影响屏幕亮度,这是为何? public static void brightnessPreview(Activity activity, float brightness) { Window window = activity.getWindow(); WindowMan

win7怎么调节屏幕亮度

  win7怎么调节屏幕亮度          方法一: 首先从开始菜单中打开控制面板,依次点击系统和安全--电源选项,接着我们可以拖动下方屏幕亮度的滚动条来调节屏幕亮度. 方法二: 按Win+X唤醒windows移动中心,接着我们就可以看到显示器亮度的选项,拖动滚动条就可以调节屏幕亮度了. windows7教程 windows8教程 windows10教程

Win7无法调节屏幕亮度怎么办

  Win7无法调节屏幕亮度怎么办           第一步.进入win7系统后,我们使用快捷键按下win+r,并在运行窗口,直接输入"regedit"点击确定; 第二步.进入"注册表编辑器"页面中,按序打开:"HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass{4d36e968-e325-11ce-bfc1-08002be10318}项"; 第三步.接着可以打开"0000"文

win7 64位系统不能调节屏幕亮度的处理方法

  win7 64位系统不能调节屏幕亮度的处理方法          解决方法如下: 1.进入win7系统后,我们使用快捷键按下win+r,并在运行窗口,直接输入"regedit"点击确定; 2.进入"注册表编辑器"页面中,按序打开:"HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass{4d36e968-e325-11ce-bfc1-08002be10318}项"; 3.接着可以打开"00

Win8系统中如何调节屏幕亮度

  方法1 1.在第一种方法中,我们可以通过任务栏中的系统托盘图标进行调节,具体步骤如下:首先,我们将鼠标对着系统托盘图标中的电源图标击右键,选择"调整屏幕亮度". 2.在打开的界面中,我们使用鼠标调节屏幕亮度的滚动条即可按照我们的使用习惯进行调节屏幕亮度的操作,是十分方便的. 方法2 1.在接下来的第二种方法中,我们还是对着系统托盘图标中的电源图标,然后选择"Windows移动中心"选项. 2.在打开的Windows移动中心的功能界面,我们可以看到有一个调节屏幕亮

为什么Win8.1不能调节屏幕亮度?

  一.首先是试着使用了网上找到的一种大家普遍解决了Win8.1屏幕亮度无法调节的解决办法: 网上大家用的比较多的一种方法是,通过修改注册表解决Win8.1屏幕亮度无法调节的问题. 具体方法为: 1.使用Win+R组合快捷键打开运行对话框,然后使用:regedit 命令打开注册表. 2.打开注册表编辑器后,依次展开位置: HKEY_LOCAL_MACHINESYSTEMControlSet001ControlClass{4d36e968-e325-11ce-bfc1-08002be10318}

win7系统怎么调节屏幕亮度

  1.开始-控制面板 2.点击 系统和安全 3.点击 电源选项 4.拖动滚动条调节屏幕亮度 也可以按Win+X组合键:         注:更多精彩教程请关注三联电脑教程栏目,三联电脑办公群:189034526欢迎你的加入