首先先转发一篇文章,讲解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拉伸现象相关推荐

  1. android 代码设置dialog 全屏,Android里把Dialog设置为全屏的方法

    Android里把Dialog设置为全屏的方法 有的时候我们需要把Dialog设置为全屏,于是我们想到了如下的办法: //设置成全屏 LinearLayout.LayoutParams p = new ...

  2. java jframe全屏_Java-将JFrame设置为全屏时,屏幕变黑

    我试图在画布上绘制一些东西,将其添加到JFrame,然后将此JFrame设置为"全屏".我的问题是:在全屏模式下,我只会看到黑屏. 在屏幕变黑之前,我很快就能看到画布的粉红色背景. ...

  3. 计算机黑屏修改设置,电脑黑屏密码怎么设置

    电脑开机黑屏时的那个密码怎么设置 在电脑启动黑屏时要求输入的密码是在COMS中设置的.具体设计方法如下: 首先启动计算机,在计算机正在启动时不停地按DEL键,直到出现CMOS SETUP界面,如果CO ...

  4. Win10 使用黑屏重置键 解决 黑屏问题

    4个月前的 win10 反馈公告,最近才发现... 公告链接:需要 反馈中心 https://aka.ms/AA4wm0w 增加了黑屏专用热键 Ctrl + Win + Shift + B,据说可以通 ...

  5. 锁定计算机后如何不黑屏,怎么设置电脑黑屏时间_怎么设置电脑不黑屏

    2016-12-15 15:23:44 进入控制面板:选择系统与安全选项.箭头所指,可以设置锁屏时间,不过电源选项中还有个设置开启屏幕输入密码的设置,第一个就是:可以设置自动锁屏时间. 2016-11 ...

  6. 嵌入式linux屏保设置,嵌入式系统 屏保设置

    简单总结下在嵌入式arm板中设置屏保的方法: 在Qt中有二个QWSScreenSaver类 这个类的定义如下 定义路径qwindowsystem_qws.h class Q_GUI_EXPORT QW ...

  7. java 截屏 锁屏黑色_Appium 解决锁屏截屏问题(java篇)

    Promise与Defer认识 1.deffer对象:jquery的回掉函数解决方案:含义是延迟到未来某个点再执行: 2.$.ajax链式写法: $.ajax("test.php" ...

  8. python打开浏览器全屏_python 设置网页全屏显示

    备注:安装pyqt 1.sudo apt-get -y install python-qt4 2.sudo apt-get install python-dev 3.sudo apt-get inst ...

  9. 台式计算机进入安全模式蓝屏,电脑蓝屏0x000000ed怎么解决 电脑怎么进入安全模式...

    相信很多的网友都遇到过电脑蓝屏的问题,爱玩游戏的网友再网吧上网的时候不难发现,每天都会有几台电脑蓝屏,开机后一大串的英文字母,如果我们想要解决蓝屏问题的话,那势必要先了解到蓝屏原因,每次蓝屏屏幕中都会 ...

最新文章

  1. 阿里资深算法专家:如何突围大厂算法面试?
  2. 每日一皮:资深程序员调试代码的样子...
  3. windows不能改密码
  4. DOMException: Failed to execute ‘appendChild‘ on ‘Node‘: This node type does
  5. 软件测试中python实用技巧,精选22个Python实用技巧,秀技能必备这份技术列表!...
  6. Serve Django Applications with uWSGI and Nginx
  7. i++为什么不能作为左值,而++i可以作为左值
  8. 从Powershell ***脚本学到的如何执行后台runspace~
  9. C#读取数据库返回泛型集合(DataSetToList)
  10. python 运行时 变量_在运行时在python中检索变量的名称?
  11. 大数据Hadoop(五):Hadoop架构
  12. 解决Echarts官网无法访问的问题
  13. Flutter 模拟神舟十三号火箭发射动画
  14. app测试和web测试的区别
  15. python画国际象棋_python使用turtle绘制国际象棋棋盘
  16. P1106 删数问题【贪心】
  17. PLC需要有什么样的基础才能学?
  18. 协议基础:SMTP:使用Telnet学习SMTP协议
  19. 图像处理计算机考试,计算机图形图像处理试题(A)(含答案).doc
  20. 想成为3D建模师,只学习3dsmax就够了吗?

热门文章

  1. 【Eigen和tf中位姿表达方式转换】【tf::StampedTransform】【Eigen::Matrix4f】
  2. Fedora31开机启动自己的图形界面
  3. 探索VB系列中的事件处理的奥秘
  4. Jacobin和Hessian矩阵
  5. 有哪些国内最好的危机公关公司?
  6. DotNet Bar 之 bubbleBar 使用方法
  7. 【HDU1698】 Just a Hook 【线段树入门】
  8. PHP模板引擎Smarty详解
  9. Linux 4G模块通信
  10. 国考省考行测:接语选择题,接下来最可能讲,上文可能谈,引言可能谈,有过渡句,看新主体,无过渡句,看主旨意思