簡體   English   中英

Android對支持多種屏幕尺寸的困惑

[英]Android Confusion on supporting multiple screen sizes

我已經閱讀了有關支持多種屏幕尺寸的主題的Android文檔,但我似乎無法解決這個問題。 我知道必須在布局名稱中設置限定詞,而android會選擇誰的限定詞接近手機的寬度。

我暫時不擔心平板電腦,但是當我為自己的物理設備開發時,一切都很好並且很漂亮,都位於默認的布局文件夾中:layout / main.xml

但是,如果我在朋友手機Samsung Galaxy S4上進行測試,那么一切都是垂直的。 我只是不知道從哪里真正開始...

是否可以實現一組標准文件夾來放置布局,然后進行編輯以優化性能?

http://developer.android.com/training/basics/supporting-devices/screens.html 在本教程鏈接中對所有內容進行了說明。

如果一種布局應支持所有屏幕,

  1. 您的應用程式theame應該適合標簽頁和手機

  2. 切勿對(ex:300dp,15dp)之類的布局使用固定值,它們都是wrap,match,fill取決於要求,

  3. 使所有圖標,圖像具有2或4種不同的尺寸

注意:如果從較小到較大的設備ui有較小的更改,則在create上獲取設備的高度和寬度,然后從Java運行時進行更改(圖像,布局寬度等)。

如果您的應用程序不適合從小型設備到大型設備

使用布局(手機),布局大(7英寸制表符)layout-xlarge(10英寸制表符)

從與設備無關的像素(dp)和與字體無關的可縮放像素開始(sp)

如果此后垂直拉伸,則可能是背景圖片試圖填充布局的整個高度(順便說一句,下次遇到問題時,請發布相關的xml代碼和圖片尺寸) ,或者至少是問題的屏幕截圖)。

在這種情況下,只需使用不同大小的限定詞即可解決您的問題( 而不是密度限定詞)。 密度限定符對於位圖的寬度或高度大於設備屏幕的寬度或高度沒有幫助。 這只是您應注意的經驗法則。

Android Studio布局設計器的屏幕截圖,比較了不同屏幕類型的相同布局

使用Android Studio / IntelliJ的布局設計器中的工具欄選擇框,一次即可快速測試多個設備屏幕。 這是最快的方法。 請勿為此使用Eclipse,它的ADT布局設計器不具備此功能(至少不是我上次檢查的能力)。 即使您大部分時間使用Eclipse,也值得僅將Android Studio / intelliJ用於該功能,然后在測試完布局的那一部分后再切換回Eclipse(假設在那之后它仍然是您最喜歡的IDE)。 。

另外,不要嘗試對遇到的每個尺寸限定符進行不同的布局。 僅對實際給您帶來問題的布局使用不同的大小限定符。 並且不要忘記,不需要重復的通用布局組件可以在父布局中抽象出來。 而且,如果您找到一種無需使用大小限定符即可解決特定問題的方法,那么效果也很好。 例如,如果您不使用單個圖像作為背景,而是可以將其替換為您不介意以不同的長寬比裁剪的較大圖像,或者將背景圖像替換為完全不同的抽象圖像(例如純色顏色,漸變,平鋪背景,大矢量圖形或大的貼圖九png)(在不同的寬高比下看起來都不錯),甚至可能更簡單。

在較高級別,您只需要注意以下事項:

-最好將圖像切片為XHDPI (720x1280)或XXHDPI (1080x1920)分辨率,並將其保存在相應的文件夾中。 XHDPI圖像放入drawable-xhdpiXXHDPI圖像放入drawable-xxhdpi文件夾。 一組圖像切片就足夠了。
-如果您不支持平板電腦,則無需為同一屏幕編寫不同的XML布局(極少數情況除外)
-嘗試避免對android:layout_widthandroid:layout_height參數進行硬編碼。 使用wrap_contentfill_parentmatch_parent
-盡量避免將任何圖像切片保留在簡單的drawable文件夾中,而應保留在特定的drawable文件夾中,例如drawable-xhdpidrawable-hdpi等。
-嘗試使用盡可能多的顏色代碼和9個補丁圖像,而不是對所有內容使用圖像,這將減少構建大小並有助於避免OutOfMemoryException
-在簡單的drawable文件夾中,保留所有XML drawable,例如按鈕的背景,以及用於單擊和聚焦狀態等的單獨圖像。

如果執行這些步驟,則在大多數情況下無需擔心支持多種屏幕分辨率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM