我希望我的应用支持不同的屏幕尺寸。我在/ res目录中添加“layout-small和layout-large”文件夹。但是我的activity中无法访问此文件夹中的XML。所以我在默认布局中添加了所有XML并添加了此代码
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 :(得分:2)
尺寸:小,正常,大 密度:ldpi,mdpi,hdpi,
nodpi(无自动比例) 宽高比:长,不长 定位:土地
用法:
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;
不要忘记:
dpi = 160; //At 160dpi
pixels = dips * (density / dpi)
答案 1 :(得分:1)
布局名称必须相同
layout-small \ main1.xml
layout-normal\ main1.xml
layout-large \ main1.xml
你不需要处理这个,android自动决定将使用哪个布局
setContentView(R.layout.main1);
答案 2 :(得分: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
答案 3 :(得分:0)
Android会自动为您完成此操作。对于不同的屏幕尺寸,请制作不同的xml文件,但为它们指定相同的名称,例如main.xml
,并将large
的文件放在文件夹/res/layout-large
中,用于small
在/res/layout-small
,等等。
,只需添加onCreate()
有关详情,请参阅阅读this site from Android Developers。
答案 4 :(得分:0)
Android将自动为特定设备选择最佳资源。如果没有匹配的资源,系统将使用默认资源并根据需要向上或向下缩放以匹配当前屏幕大小和密度。
&#34;默认&#34;资源是那些未使用配置限定符标记的资源。