2015-12-01 167 views
-1

我知道有很多关于我的问题的材料。但我仍然困惑如何设计Android应用程序来支持不同尺寸的屏幕。支持多种屏幕的Android设计

大多数时候,我设计网页,我用百分比来支持屏幕的大小不同。但正如你所知,在android中,为了做到这一点,我必须使用Java代码实时制作UI(读取宽度和高度,并根据屏幕大小调整所有视图的大小),因为使用XML时,您无法做到这一点。但这似乎不对。

我有图像文件(PNG,JPG),并且我安排这些文件的ImageView和scaleType为“fitXY”,我设置宽度DP。我知道“dp”单元会使这个元素始终保持相同的实际大小,因此人们将它用于小部件。所以我把这个图像放在xxxhdpi屏幕上,当我在xhdpi屏幕上看到图像太大以致图像被剪切时。

我想要的是非常简单的。我想按照百分比来排列视图元素的宽度,这样布局在不同的屏幕上非常相似(不同的高度比率可以通过滚动来解决)。但我不知道如何...?不仅%的..我只是想知道生成图像文件,并安排小部件不同屏幕的正常过程...

我应该为不同的屏幕多种图像文件,并把这些在res /绘制-XXXXX?如果我这样做,android系统会自动为不同的屏幕使用不同的文件吗?或者,我是否应该一直为每个不同的屏幕制作很多布局(这看起来很愚蠢......)?

任何人都可以指导我吗?......我一直在寻找这个答案超过1周以上。请...

+0

谁说你只能使用JAVA代码调整UI? XML布局也可以完成这项工作。 – activesince93

+0

我的意思是,为了按照不同屏幕尺寸的百分比安排组件。请仔细阅读..当然,您使用XML布局调整UI ......我不是愚蠢的.. –

+0

您通常使用LinearLayout和weightSum然后划分子视图的权重 –

回答

2

您可以创建不同的布局文件夹,并创建一个标准的屏幕尺寸布局。有一组六个广义密度:

ldpi (low) ~120dpi 
mdpi (medium) ~160dpi 
hdpi (high) ~240dpi 
xhdpi (extra-high) ~320dpi 
xxhdpi (extra-extra-high) ~480dpi 
xxxhdpi (extra-extra-extra-high) ~640dpi 

您可以为这些创建图像和布局,并使用accordingly.Mention,在你表现也:

<compatible-screens> 
    <screen 
     android:screenDensity="ldpi" 
     android:screenSize="small" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="normal" /> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="large" /> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="xlarge" />   
</compatible-screens> 

参考Supporting Multiple Screens了解更多详情。

+0

你的意思,所以没有办法让唯一一个支持所有的屏幕尺寸布局?所以,要支持6个屏幕,如果我有20个活动,我必须制作120个布局。这看起来不太合适。但这真的是唯一的方法吗? –

+0

尽量不要手动指定任何尺寸参数。始终使用布局权重并相应地对齐布局,然后在很大程度上正确使用屏幕空间。如果这不好,你必须按照我在回答 – Jas

+0

中提到的那样做。谢谢。我想我必须更频繁地使用LinearLayout。我主要使用RelativeLayout和FrameLayout。 –