2015-11-08 60 views
4

我知道互聯網充斥着有關DPI px英寸等問題。 但經過幾個小時的谷歌搜索,我的情況似乎並沒有發生在其他人身上!相同的DPI,但不同的英寸大小

我有2個設備自定義生成與Android工作室都是mdpi。 但一個設備是3.65英寸,另一個設備是10.1英寸。

我創建了一個文件夾2個圖像250x125與DPI設置爲160 dpi的

如果通常我會在我的XML與dp爲單位而不是像素宣佈我的2張圖片...我想在兩個屏幕上結果應該是一樣的權利?

那麼它似乎圖像保留其餘相同大小和不看@設備多少寸

清楚,所以把事情: 什麼我有我的資源或我的代碼來改變,因此我的佈局縮放比例是否相同?

這是我爲我的MDPI 10.1平板電腦良好的佈局: enter image description here

這是我的壞佈局我MDPI 3.65裝置 enter image description here

我怎樣才能讓這個即使是3.65英寸的屏幕上按鈕將縮放到與10.1相同的比例。不是英寸...不...像素的比例....

這是我的XML文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:gravity="center"> 

    <Button 
     android:id="@+id/buttonEnglish" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/english" 
     android:layout_marginBottom="5sp" 
     android:layout_marginLeft="5sp" 
     android:layout_marginRight="2sp" 
     android:layout_marginTop="0sp" /> 
    <Button 
     android:id="@+id/buttonNederlands" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/nederlands" 
     android:layout_marginBottom="5sp" 
     android:layout_marginLeft="20sp" 
     android:layout_marginRight="5sp" 
     android:layout_marginTop="0sp" 
     /> 
</LinearLayout> 

我絕望... Thanx提前

+0

用心看你的按鈕尺寸。這些尺寸保持不變。但由於屏幕尺寸不同,小尺寸屏幕看上去像按鈕。其實你需要設計兩個XML佈局。一個用於平板電腦,一個用於手機。 – Amir

+0

因此,對於市場上手機或平板電腦的每種可能的尺寸,我需要創建一個不同的XML文件?這是maddnes xo! – Fosa

+0

您對UI應該如何在Android中進行佈局的理解是錯誤的 - 對於按鈕或其他UI組件來說,使用屏幕尺寸進行線性縮放絕對沒有意義。請參閱[http://developer.android.com/guide/practices/screens_support.html](http://developer.android.com/guide/practices/screens_support.html)和大量教程網站以瞭解更多信息。 – Kai

回答

3

有不需要設計兩個xml佈局。

您可以根據設備使用尺寸作爲邊距和填充。

您給出了保證金的靜態值。

在每個設備的值文件夾中使用dimen.xml。

您的layout.xml中的以下代碼將適用於您。

android:layout_marginLeft="@dimen/margin_button" 

爲dimen.xml值的文件夾名稱:

價值觀MDPI
值,華電國際
價值觀xhdpi
價值觀xxhdpi
價值觀sw600dp

在每個值文件夾中創建dimen.xml。

and dimen。XML你必須定義邊距值在所有值文件夾,但該財產的價值根據設備尺寸這樣不同的是:

價值觀MDPI

<dimen name="margin_button">20dp</dimen> 

值,華電國際

<dimen name="margin_button">23dp</dimen> 

像所有值文件夾中的明智一樣。

+0

我不明白這可能是一個解決方案?你能更具體嗎? – Fosa

3

這可能有助於解釋你所面臨的問題...

你有一個形象,是250x125 - 這是寬250個像素×高度125個像素。

您已指定160 dpi - 這意味着1英寸= 160像素。

因此,兩個屏幕都在按照您的要求進行操作,並在1.5625英寸的範圍內顯示250個像素。在大屏幕上,它看起來「按比例」正確。在3.65" 屏幕上的按鈕佔據了一半以上的屏幕 - 就像你問它

如果你想在更小的屏幕看起來像更大的屏幕,那麼你有三種選擇:

  1. 調整圖像大小並提供2個圖像資源(或更多種類的屏幕)這就是爲什麼您可以擁有mdpi,hdpi,xhdpi等資源文件夾。您可以調整圖像中的像素以適應屏幕尺寸

  2. 您可以使用「加權」LinearLayout來調整提供的空間大小在可用的屏幕空間上。對於這種類型的佈局,你不應該擔心性能。

  3. 根據屏幕大小對圖像進行運行時縮放 - 使用DisplayMetrics獲取屏幕的大小和密度,並調整圖像以適合屏幕。

最後一個選項是最靈活的方法很多,因爲如果你最終有一個屏幕,或者是非常大或非常小,可以進行調整,做事情像移動按鈕或文本到其它地方在屏幕上(在其他內容上方或下方)。但是對於你的具體問題,其中任何一個都足夠了。

0

感謝大家的答案。由於@Iacs的回答,我發現我必須對我的文件夾結構進行更改。

我完全忽略了這個事實,在/ res文件夾中可以有更多的目錄,然後只是標準的「佈局」目錄。您可以使用這些名稱創建其他目錄:layout-large,layout-xlarge,layout-small等... 在這些文件夾中,您可以粘貼layout.xml並調整值...

This是事物如何在我的Android工作室現在看 注意佈局的文件夾結構: enter image description here

現在ofcourse我的2臺設備同時使用同一DPI,但不同的屏幕尺寸顯示我的按鈕,我希望他們能夠showned的方式!

相關問題