2013-01-08 259 views
0

我希望我的應用支持不同的屏幕尺寸。我在/ res目錄下添加文件夾「layout-small and layout-large」。但是這個文件夾中的個XML是不是在我activity.so訪問添加我的所有個XML的默認佈局和我的活動添加此代碼支持不同屏幕尺寸的android

if((getResources().getConfiguration().screenLayout && 
     Configuration.SCREENLAYOUT_SIZE_SMALL) == Configuration.SCREENLAYOUT_SIZE_SMALL) { 
      setContentView(R.layout.main1); 
    }else if((getResources().getConfiguration().screenLayout && 
       Configuration.SCREENLAYOUT_SIZE_LARGE) == Configuration.SCREENLAYOUT_SIZE_LARGE){ 
        setContentView(R.layout.main2); 
     } 
     else 
      setContentView(R.layout.main); 

,但是當我的AVD的皮膚爲1024 * 600和hw.lcd .dencity是160(大)它沒有工作。

有幫助嗎?

+0

您是否在清單中定義了支持屏幕.....? –

+0

是的,我在清單中添加支持屏幕。 – sepehri

+0

[Android中的多屏幕支持]可能的重複(http://stackoverflow.com/questions/7453982/multiple-screen-support-in-android) – arpit

回答

1

佈局名稱必須相同

layout-small \ main1.xml 
layout-normal\ main1.xml 
layout-large \ main1.xml 

你不需要處理這個問題,Android的自動決定哪種佈局將被用於

setContentView(R.layout.main1); 
0

的Android自動爲您完成此。對於不同的屏幕尺寸,製作不同的xml文件,但給它們相同的名稱,例如main.xml,並將large的文件放在文件夾/res/layout-large中,對於small,在/res/layout-small等等中。

onCreate()

,只是把setContentView(R.layout.main)

欲瞭解更多信息,可以閱讀this site from Android Developers

1

請看看這個:

<supports-screens android:smallScreens="true" 
     android:normalScreens="true" 
     android:largeScreens="true" 
     android:xlargeScreens="true" 
     android:anyDensity="true" /> 

res/layout/my_layout.xml   // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 

res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 

多看了那麼請訪問以下鏈接How to support different screen size in android

2

大小:小,中,大
密度:LDPI,MDPI,華電國際,
nodpi (沒有自動縮放) 長寬比:長,不長
定位:land

用法:

res/layout/my_layout.xml    
res/layout-small/my_layout.xml  
res/layout-large/my_layout.xml  
res/layout-large-long/my_layout.xml  
res/layout-large-land/my_layout.xml  
res/drawable-ldpi/my_icon.png 
res/drawable-mdpi/dpi/my_icon.png 
res/drawable-hdpi/my_icon.png  
res/drawable-nodpi/composite.xml 

限制你的應用程序特定的屏幕尺寸(通過AndroidManifest):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 
... 
<supports-screens 
      android:largeScreens="true" 
      android:normalScreens="true" 
      android:smallScreens="true" 
      android:anyDensity="true" /> 
... 
</manifest> 

而對於代碼級tweeking:

float scale = getContext().getResources().getDisplayMetrics().density; 

和Don」 t忘記:

dpi = 160; //At 160dpi 
pixels = dips * (density/dpi) 

另請參閱support multiple screen in android

+0

謝謝。什麼是float scale = getContext()的含義。getResources ().getDisplayMetrics()密度。和dpi = 160; //在160dpi 像素=驟降*(密度/ dpi) – sepehri

0

Android將自動拿起一個給定的特定device.If沒有匹配的資源是最好的資源,系統將使用默認的資源和規模向上或向下的需要相匹配的目前的屏幕尺寸和密度。

「默認」資源是那些未使用配置限定符進行標記的資源。