Android开发调节屏幕亮度

Android开发调节屏幕亮度

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

在播放器,我们经常看到这样的设计,即,在用户的特定部分将能够滑动屏幕向上或向下调整屏幕的亮度,上下滑动的某一部分将能够调整播放音量。并以滑动的进程可以进行调整,以玩。

如今,我不得不说一下亮度调节。

其实主要是通过设置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类。自己主动的消息框消失,光控。

大,调整屏幕亮度到这里,非常easy的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116734.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java渗透测试框架_java编程

    java渗透测试框架_java编程(7)sqlmap(python脚本学习下)经典sql注入工具(这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来)抓几个sqlmap的包sqlmap功能很强大,这里就抓了一个结合burpsuitePOSTsqlmap的包(也可以用Burpsuitesqlmap插件http://www.freebuf.com/tools/6426.html)命令:…

    2022年8月12日
  • windows查看占用端口并关闭端口

    windows查看占用端口并关闭端口1.查看占用端口的进程IDnetstat-aon|findstr"12345"2.查看进程id对应的进程名tasklist|findstr"14100"3.杀掉进程taskkill/f/t/im___8TestServer_Start_in_G

    2022年7月20日
  • python进制转换代码_十进制转八进制python

    python进制转换代码_十进制转八进制python本文实例讲述了Python实现的十进制小数与二进制小数相互转换功能。分享给大家供大家参考,具体如下:十进制小数⇒二进制小数乘2取整对十进制小数乘2得到的整数部分和小数部分,整数部分即是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分。如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位如:0.25的二进制0.25*2=…

    2022年9月16日
  • 眼下流行的几种排课算法的介绍

    眼下流行的几种排课算法的介绍通用高校排课算法研究—-2.眼下流行的几种排课算法的介绍2眼下流行的几种排课算法的介绍2.1.自己主动排课算法1.问题的描写叙述我们讨论的自己主动排课问题的简化描写叙述例如以下:设要安排

    2022年7月2日
  • sp_executesql接收返回多个参数实例

    sp_executesql接收返回多个参数实例近日做项目中需要在EXEC执行Sql字符串时动态的传入参数并接收返回值,于是研究了一下SqlServer中sp_executesql的使用方法,并做了如下的例子。在使用sp_executesql动态传入与接收返回参数时需注意以下事项,以避免大家走弯路。例子中@SQLString,@ParmDefinition一定要使用NVARCHAR类型,否则会报“过程需要参数××××为ntext/n

    2022年5月11日
  • redis常用命令及详解_Redis数组添加命令

    redis常用命令及详解_Redis数组添加命令这里写目录标题NoSQLRedisNoSQLNoSQL == Not Only SQL(不仅仅是关系型数据库)出现原因:随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。RDBMS 和 NoSQL的对比RDBMS 结构化组织SQL数据和关系都存在单独的表中 row col操作,数据定义语言严格的一致性基础的事务NoSQL不仅仅是数

    2022年8月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号