簡體   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