Android 副屏density设置,解决副屏view拉伸现象
首先先转发一篇文章,讲解Android 多屏显示流程的,不熟悉的流程的可以看一下这篇文章Android显示设备管理以及转屏流程
不过这里需要讲的不是流程,而是记录在副屏开发时,遇到的一些技术问题。
在开发副屏应用的时候,遇到一个问题,开发的app在主屏上显示是正常的,但是在副屏上显示,图片和字体有非常明显的拉伸,但是设置的宽高都是wrap_content,这个现象就非常奇怪。
发现主副屏唯一的区别就是density值不同,相同的屏幕但是表现却不一致,屏幕互换现象也存在,那么就需要设置副屏的density跟主屏一致,发现问题解决了。
1.Android 支持多屏显示,在修改主屏的density值时,可以在init.rc中通过修改ro.sf.lcd_density 的值来实现
# Set the density to 160 tvdpi to match CDD.
setprop ro.sf.lcd_density 160
2.副屏的density值没有引用主屏的值,而是通过计算出来的(可以通过dumpsys display来看)。
以Android 8.1为例,在DisplayDeviceInfo.java(/frameworks/base/services/core/java/com/android/server/display/目录下)
public void setAssumedDensityForExternalDisplay(int width, int height) {densityDpi = Math.min(width, height) * DisplayMetrics.DENSITY_XHIGH / 1080;// Technically, these values should be smaller than the apparent density// but we don't know the physical size of the display.xDpi = densityDpi;yDpi = densityDpi;}
这个方法中会通过副屏的宽高值来计算出副屏的density,以1920*720的屏幕来计算, density=720*320/1080 =213.
其中DisplayMetrics.DENSITY_XHIGH是定值320,density是int类型,最后取整就是213,这就是副屏的density。
在这里修改副屏density的值,改成需要的值即可。副屏执行到这里可以看转发的那边流程文档,上面介绍的很详细,这里不再赘述。
Android 副屏density设置,解决副屏view拉伸现象相关推荐
- android 代码设置dialog 全屏,Android里把Dialog设置为全屏的方法
Android里把Dialog设置为全屏的方法 有的时候我们需要把Dialog设置为全屏,于是我们想到了如下的办法: //设置成全屏 LinearLayout.LayoutParams p = new ...
- java jframe全屏_Java-将JFrame设置为全屏时,屏幕变黑
我试图在画布上绘制一些东西,将其添加到JFrame,然后将此JFrame设置为"全屏".我的问题是:在全屏模式下,我只会看到黑屏. 在屏幕变黑之前,我很快就能看到画布的粉红色背景. ...
- 计算机黑屏修改设置,电脑黑屏密码怎么设置
电脑开机黑屏时的那个密码怎么设置 在电脑启动黑屏时要求输入的密码是在COMS中设置的.具体设计方法如下: 首先启动计算机,在计算机正在启动时不停地按DEL键,直到出现CMOS SETUP界面,如果CO ...
- Win10 使用黑屏重置键 解决 黑屏问题
4个月前的 win10 反馈公告,最近才发现... 公告链接:需要 反馈中心 https://aka.ms/AA4wm0w 增加了黑屏专用热键 Ctrl + Win + Shift + B,据说可以通 ...
- 锁定计算机后如何不黑屏,怎么设置电脑黑屏时间_怎么设置电脑不黑屏
2016-12-15 15:23:44 进入控制面板:选择系统与安全选项.箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是:可以设置自动锁屏时间. 2016-11 ...
- 嵌入式linux屏保设置,嵌入式系统 屏保设置
简单总结下在嵌入式arm板中设置屏保的方法: 在Qt中有二个QWSScreenSaver类 这个类的定义如下 定义路径qwindowsystem_qws.h class Q_GUI_EXPORT QW ...
- java 截屏 锁屏黑色_Appium 解决锁屏截屏问题(java篇)
Promise与Defer认识 1.deffer对象:jquery的回掉函数解决方案:含义是延迟到未来某个点再执行: 2.$.ajax链式写法: $.ajax("test.php" ...
- python打开浏览器全屏_python 设置网页全屏显示
备注:安装pyqt 1.sudo apt-get -y install python-qt4 2.sudo apt-get install python-dev 3.sudo apt-get inst ...
- 台式计算机进入安全模式蓝屏,电脑蓝屏0x000000ed怎么解决 电脑怎么进入安全模式...
相信很多的网友都遇到过电脑蓝屏的问题,爱玩游戏的网友再网吧上网的时候不难发现,每天都会有几台电脑蓝屏,开机后一大串的英文字母,如果我们想要解决蓝屏问题的话,那势必要先了解到蓝屏原因,每次蓝屏屏幕中都会 ...
最新文章
- 阿里资深算法专家:如何突围大厂算法面试?
- 每日一皮:资深程序员调试代码的样子...
- windows不能改密码
- DOMException: Failed to execute ‘appendChild‘ on ‘Node‘: This node type does
- 软件测试中python实用技巧,精选22个Python实用技巧,秀技能必备这份技术列表!...
- Serve Django Applications with uWSGI and Nginx
- i++为什么不能作为左值,而++i可以作为左值
- 从Powershell ***脚本学到的如何执行后台runspace~
- C#读取数据库返回泛型集合(DataSetToList)
- python 运行时 变量_在运行时在python中检索变量的名称?
- 大数据Hadoop(五):Hadoop架构
- 解决Echarts官网无法访问的问题
- Flutter 模拟神舟十三号火箭发射动画
- app测试和web测试的区别
- python画国际象棋_python使用turtle绘制国际象棋棋盘
- P1106 删数问题【贪心】
- PLC需要有什么样的基础才能学?
- 协议基础:SMTP:使用Telnet学习SMTP协议
- 图像处理计算机考试,计算机图形图像处理试题(A)(含答案).doc
- 想成为3D建模师,只学习3dsmax就够了吗?