【移动应用开发技术】Android编程实现夜间模式的方法小结_第1页
【移动应用开发技术】Android编程实现夜间模式的方法小结_第2页
【移动应用开发技术】Android编程实现夜间模式的方法小结_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android编程实现夜间模式的方法小结

本文实例讲述了Android编程实现夜间模式的方法。分享给大家供大家参考,具体如下:随着APP实现的功能越来越丰富,看小说看视频上网等等,现在不少人花在手机平板等移动终端上的时间越来越长了.但手机和平板的屏幕并不像Kindle那类电纸书的水墨屏那么耐看,由于自发光的屏幕特性,我们长期盯着屏幕看容易眼睛酸痛疲倦,因此各种护目模式,夜间模式在移动APP上得到广泛应用,这的确也是一个贴心的小功能.所以这次我们探讨下几种实现方式,一起学习总结下:1.利用屏幕亮度当夜间使用手机等终端,直接降低屏幕亮度,能减少光线强度对眼镜的刺激,这也是最简单,也相对有效的方式.请先添加相应权限:通过设置屏幕亮度来实现的方法,有两种:1)只设置应用程序内的亮度一般,Android里每个Activity对应一个可视的界面,针对每个Activity去设置亮度,方法如下:这样,一个程序包含的所有Activity,我们都要单独去设置它的亮度,虽说可以封装成工具类去使用,但前提是有没有更好的方法呢?请看第二种:2)设置手机系统的亮度(全局亮度)这里,我们直接在程序的某个Activity,比如入口Activity去设置整个手机的亮度.由于已经设置手机全局的亮度,那么后面无论跳转到哪个界面,甚至退出程序,手机的亮度依然是所设置的亮度.这种方法相对第一种而言算是"一劳永逸".但这里我们先要理清思路,考虑好几个点:打开应用后,获取手机原来的亮度值并保存它(可用于退出应用后恢复正常亮度)>

如果手机打开自动亮度调节则关闭自动调节,然后设置合适的较低亮度>

将设置的亮度值应用到手机中

>

最后,退出应用时利用保存的原亮度值恢复原来亮度,并重新打开手机的自动亮度调节.接下来,贴上关键代码:首先是获取手机屏幕亮度值:保存,直接放在SharePreference里面就好了,相关代码就不写了.

然后检测手机是否打开亮度自动调节的开关:如果打开,就关闭:最后还会用到打开亮度调节:关闭亮度调节后,就设置亮度,直接使用第一种方法中的相关代码即可.但因为要将该亮度的设置应用到全局,所以需要将该亮度值保存到手机中:这样,最终效果就OK了,即使退出当前应用,手机依然是所设置的较低亮度.当然,退出应用前应当恢复正常的亮度和设置,于是就利用保存的亮度值重新设置,然后将新的亮度值再次保存到手机中即可,别忘了,手机之前是打开亮度自动调节的话,还要重新打开自动调节.2.自定义Theme.(最常用的方法)自定义View,相信很多人都很熟悉.而自定义Theme跟这个类似,也是实现夜间模式最常用的方法,因为它不止可以实现夜间模式,还能实现常见的主题更换功能.这里就不细说,只讲思路.假设我们的应用界面是白色背景,黑色文字,夜间模式就是黑色背景,灰白色的文字.这种夜间模式有别于第一种的调节亮度,由于背景和内容文字可以随意的设置颜色和透明度,这种夜间模式看起来更直观,也可以更舒服.自定义Theme利用的是,在XML中定义要用到的背景和文字颜色属性,比如:然后在style.xml中创建自己的两个主题(Theme),比如默认主题和夜间主题,默认主题中给activity_background属性设为白色,text_color属性设为黑色,夜间主题则分别为黑色和灰白色.在View的layout文件中,给所用的背景View,比如某个RelativeLayout的backgroundColor属性设为"?activity_background",TextView的textColor设为"?text_color"即可.当然,由于这是Theme,在Activity开始初始化视图前去应用才能生效.因此最好自己封装一个主题工具类,在Activity的setContentView()方法之前调用setTheme()方法去设置主题.3.WindowManager实现遮罩模式这里,我们应当明白一个概念,当不必深究,window(窗口).Android的设计理念中,给几乎每个显示的组件都设置包含在一个window中.Activity也有它自己的window.通过在window添加一层灰黑色有一定透明度的view,使它看起来是屏幕变暗了,当然实际上手机的亮度是没有变化的,这种实现,可以叫"遮罩",类似相机拍照时在镜头套一层膜或者镜片上去,使呈现的效果有所不同.但是这种方法,也有不好的地方,就是类似上面说的单独在每个Activity去设置它的亮度.这里每进入一个界面就需要重新"套一层view"上去,相对"一劳永逸"的方法而言,显得没优势.那么直接上代码:代码中,通过WindowManager.LayoutParams的参数设置,禁止所添加遮罩层的触摸和聚焦.这样使得即使添上一层View,也不会影响Activity视图中的组件正常使用.其实上面三种方法,放在现在来看,都不是新的技术,而网上我也看过很多相关的代码,这里这只是放在一起做个对比和总结.上面根据三种实现方法说了各自的特点,综合而言,第一,二种方法比较可取,而究竟选择第一还是第二种方法,应该看具体需求,如果你的应用只是简单的要求降低亮度,不想修改太多的代码,那么第一种会比较适合;如果希望有良好的体验,希望看起来更酷,甚至还想添加其他的主题,比如蓝色,绿色的主题等等,那么无疑第二种是最好的选择.自定义属性的广泛应用,给我们实现更个性化的视觉效果(比如自定义组件,自定义主题等)提供了便利.更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论