分享 Android 开发中三个与屏幕有关的小众知识
宽屏适配、禁止截屏和保持屏幕常亮,这三个与屏幕有关的 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 开发中三个与屏幕有关的小众知识相关推荐
- android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果
有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...
- Android开发中EditText获得焦点弹出输入框改变屏幕布局的问题
在Android开发中,比较头疼的问题就是EditText总是已启动就获得焦点并弹出输入框,感觉很是不爽.而且,因为输入框的弹出,导致屏幕布局获得改变,有些空间被挤压到一起,很是难看,所以,我就上网搜 ...
- Android开发中的WMS详细解析
/ 今日科技快讯 / 近日,小冰公司宣布对旗下人工智能数字员工产品线启动年度升级.本次升级加强的技术包括大模型对话引擎.3D神经网络渲染.超级自然语音及AIGC人工智能内容生成.小冰公司计划将 ...
- 5 个 Android 开发中比较常见的内存泄漏问题及解决办法
Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...
- android listview下拉动画效果,Android开发中利用ListView实现一个渐变式的下拉刷新动画...
Android开发中利用ListView实现一个渐变式的下拉刷新动画 发布时间:2020-11-23 16:50:31 来源:亿速云 阅读:80 作者:Leah 本篇文章给大家分享的是有关Androi ...
- android开发中遇到的问题汇总
android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...
- Android开发中保存数据的四种方法方法
本文来自:安卓航班网 在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同:以下安卓航班分别列举了Android开发中的不同存储方式的特点. 一,Preferences Pref ...
- android最佳开发实现_在android开发中使用可访问性最佳做法
android最佳开发实现 As you know, accessibility is about building products that everyone can use easily and ...
- Android开发中横竖屏切换的问题以及系统提供的常用Activity
Android开发中横竖屏切换的问题以及系统提供的常用Activity(总结) 2018年06月28日 16:18:45 北极熊的微笑 阅读数:72 横竖屏切换与状态保存的问题 前面也也说到了App横 ...
最新文章
- 自学python方法-十二种学习Python的方法【Programming】
- opengl加载显示3D模型lxo类型文件
- 工信部通报侵害用户权益APP:腾讯应用宝、小米应用商店等在列
- 沈南鹏:移动互联网会带来9大创新性的领域
- 挑战性题目DSCT501:大整数因子分解
- 湖北省湖泊河流ArcGIS地形图shp图层文件下载
- matlab的句柄 图形对象 gca gco gcf set get
- 《从0到1:CTFer成长之路》2.1 SSRF漏洞
- Mac系统安装/升级 Git
- 计算机屏保后无法进入登录界面,Win10锁屏界面无法登录卡在登录状态的应对办法...
- 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
- R语言实战之基本统计分析
- 创邻科技Galaxybase荣获2021年度IT168技术卓越奖
- 电脑硬盘中文件丢失怎样才能找回?硬盘数据丢失能恢复吗
- Hystrix实现熔断降级
- 【大厂算法系列】学数据结构与算法有用吗?时间与空间复杂度的定义与计算
- html那些标签可以实现页面布局,网页的布局一般用什么来实现
- 写给高端大气上档次的你!
- Mean Shift Segmentation Assessment for Individual Forest Tree Delineation from Airborne Lidar Data
- 计算机主板风扇安装,详解电脑风扇插在主板哪里怎么安装