宽屏适配、禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场。

宽屏适配

越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例的三星 Galaxy S8 手机,前两天刚发布 18:9 屏幕比例的 OnePlus 5T 手机, 屏幕比例均超过过去常见的 16:9 比例。超大屏幕比例的设计对于 Android App 来说,存在一个屏幕适配的问题。

我们需要在 Manifest 清单文件中定义一个更大值的 android.max_aspect 属性,保证我们的 App 能够充分利用多余的屏幕空间。

<meta-data android:name="android.max_aspect"android:value="2.1"/>

max_aspect 属性表示 App 能够支持的最大屏幕比例,官方建议我们将该值设置为 2.1 或者更高的值。

注意:如果你没有使用 meta-data 标签设置 max_aspect 属性,同时 android:resizeableActivity 属性值为 true 的话,App 默认使用的最大 aspect 默认值为 1.8(大约 16:9 的样子)。

备注: resizeableActivity 属性在 targetSDKVersion 小于 24 的应用中值为 false,其他为 true。

下面这张图通过对比呈现出不同 aspect 值的 App 在高屏幕比例设备中的显示效果:

左边为 16:9 的 aspect 设置,右边为 18.5:9 的设置,同样使用的是屏幕比例为 18.5:9 的大屏设备。明显可以看出,低比例值设置的 App 打开时屏幕上下均有留白,也就说不能充分利用屏幕空间。

禁止截屏

像支付宝付款二维码这种对安全要求比较高的界面,应用一般会选择屏蔽设备截屏功能。当你同时按下截屏快捷键组合(常见为开机键 + 音量上键)时,系统会自动提示截屏失败等关联信息。

禁止截屏的实现方式并不是很难,在需要设置禁止截屏的 Activity 的生命周期 onCreate() 方法中添加一行代码即可:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

屏幕常亮

通常我们都会设置手机自动调节屏幕亮度或者固定时间后自动锁屏。然而部分 App 或者部分页面需要保持屏幕常亮,如股票实时走势页面。

实现起来也很简单,像禁止截屏一样,在需要的 Activity 的 onCreate()生命周期方法中添加代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

补充小技巧:

类似设置禁止截屏和保持屏幕常亮这种依赖生命周期方法的代码,如果需要应用到多个 Activity 的话,可以将其放在 BaseActivity 基类中,避免编写重复性代码。或者还可以借助这个神奇的 Activity 生命周期接口:

ActivityLifecycleCallbacks

在自定义 Application 类 onCreate() 方法中添加:

registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);}// 这里省略其他相关 Activity 生命周期函数...
});

赞助商

优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。

100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。

扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!

推荐文

@所有人,我这里可以直接进入这款小程序啦

分享 Android 开发中三个与屏幕有关的小众知识相关推荐

  1. android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果

    有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...

  2. Android开发中EditText获得焦点弹出输入框改变屏幕布局的问题

    在Android开发中,比较头疼的问题就是EditText总是已启动就获得焦点并弹出输入框,感觉很是不爽.而且,因为输入框的弹出,导致屏幕布局获得改变,有些空间被挤压到一起,很是难看,所以,我就上网搜 ...

  3. Android开发中的WMS详细解析

    /   今日科技快讯   / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...

  4. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  5. android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...

    Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...

  6. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

  7. Android开发中保存数据的四种方法方法

    本文来自:安卓航班网 在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同:以下安卓航班分别列举了Android开发中的不同存储方式的特点. 一,Preferences Pref ...

  8. android最佳开发实现_在android开发中使用可访问性最佳做法

    android最佳开发实现 As you know, accessibility is about building products that everyone can use easily and ...

  9. Android开发中横竖屏切换的问题以及系统提供的常用Activity

    Android开发中横竖屏切换的问题以及系统提供的常用Activity(总结) 2018年06月28日 16:18:45 北极熊的微笑 阅读数:72 横竖屏切换与状态保存的问题 前面也也说到了App横 ...

最新文章

  1. 自学python方法-十二种学习Python的方法【Programming】
  2. opengl加载显示3D模型lxo类型文件
  3. 工信部通报侵害用户权益APP:腾讯应用宝、小米应用商店等在列
  4. 沈南鹏:移动互联网会带来9大创新性的领域
  5. 挑战性题目DSCT501:大整数因子分解
  6. 湖北省湖泊河流ArcGIS地形图shp图层文件下载
  7. matlab的句柄 图形对象 gca gco gcf set get
  8. 《从0到1:CTFer成长之路》2.1 SSRF漏洞
  9. Mac系统安装/升级 Git
  10. 计算机屏保后无法进入登录界面,Win10锁屏界面无法登录卡在登录状态的应对办法...
  11. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
  12. R语言实战之基本统计分析
  13. 创邻科技Galaxybase荣获2021年度IT168技术卓越奖
  14. 电脑硬盘中文件丢失怎样才能找回?硬盘数据丢失能恢复吗
  15. Hystrix实现熔断降级
  16. 【大厂算法系列】学数据结构与算法有用吗?时间与空间复杂度的定义与计算
  17. html那些标签可以实现页面布局,网页的布局一般用什么来实现
  18. 写给高端大气上档次的你!
  19. Mean Shift Segmentation Assessment for Individual Forest Tree Delineation from Airborne Lidar Data
  20. 计算机主板风扇安装,详解电脑风扇插在主板哪里怎么安装

热门文章

  1. vue路由IE9浏览器iframe显示空白
  2. java项目开发实例基于java+ssh实现的美食网站
  3. linux新建组 给组添加用户和删除用户 并给组赋值guid和sticky权限
  4. 计算机学院志愿者组织名称,计算机学院青年志愿者招募令
  5. c语言奥运会志愿者报名系统,北京冬奥会和冬残奥会志愿者全球招募启动!
  6. Phoenix on HBase
  7. OSChina 周二乱弹 ——曝光巴叔最爱蕾丝女仆机器人
  8. uni-app 104退出和解散群聊(二)
  9. 华为MateBook笔记本对比微软Surface Pro 4,谁更好?
  10. Linux 中config命令的使用