繁体   English   中英

Android Point对象澄清

[英]Android Point object clarification

我知道一点基本上只包含两点,代表位置的x和y整数,但是它们实际经过的单位是什么?

我假设像素只是因为当我使用显示对象获取默认电话屏幕的大小并将其存储在点对象(display.getSize(point))并记录了我的点对象时,我得到了(720, 1184)

不能是dps或类似的东西,因为只有像素可以那么大。 但是,当我尝试将720px作为随机UI元素的宽度进行测试时,由于无法填满手机的整个宽度,因此大约减少了40像素。 我也没有参加这项活动。 所以我想知道为什么当我的手机宽度稍大于720px时返回720px。

如果我确实有填充,那么display.getSize()考虑到这一点吗?

简短答案

他们实际经过什么单位?

点可以表示不同的事物,但是在display.getSize()调用之后,它是像素。

为什么当我的手机宽度稍大于720px时返回720px

填充,系统装饰,兼容性问题,窗口管理器问题。 您还可以从以下获得不同的答案:

getApplicationContext().getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getSize(point)

getWindowManager()。getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay()。的getSize()

如果应用程序/设备在多窗口模式下运行,这也会受到影响。

如果我确实有填充,那么display.getSize()会考虑到这一点吗?

是。

更长的答案 :根据API docos

应用程序显示区域指定显示中可能包含应用程序窗口的部分,但系统装饰除外。 应用程序显示区域可能小于实际显示区域,因为系统会减去诸如状态栏之类的装饰元素所需的空间。 使用以下方法查询应用程序显示区域:getSize(Point),getRectSize(Rect)和getMetrics(DisplayMetrics)。

实际显示区域指定包含内容(包括系统装饰)的显示部分。 即使这样,如果窗口管理器正在使用(adb shell am display-size)模拟较小的显示,则实际显示区域可能小于显示器的物理尺寸。 使用以下方法查询实际显示区域:getRealSize(Point),getRealMetrics(DisplayMetrics)。

因此最有可能要使用

getRealSize(Point);

得到足够的空间。 关于您关于点单位的问题,我相信它实际上是像素。 再次从docos

无效的getSize(点outSize)

获取显示的大小,以像素为单位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM