如何强制安卓选择适合支持的屏幕尺寸的布局?

3
我正在尝试在我的项目中支持各种类型的屏幕。我将相应的图形添加到文件夹-drawables(ldpi,mdpi,Hdpi,xhdpi,xxhdpi)中,并添加到布局文件夹(layout-small、layout、layout-large、layout-xlarge、layout-xxlarge)中。但是问题来了:当我在模拟器上打开应用程序,选择普通屏幕(mdpi)时,一切正常;但是当我选择其他模拟器,如一个Hdpi/large时,Android系统没有选择正确的图形。(例如,我打开一个Hdpi模拟器,但系统却选择了普通图形-mdpi)。我需要做什么呢?我需要编写一些代码强制系统选择正确的图形吗?真的需要帮助!

Android会选择正确的布局和DPI可绘制对象,是你的图形有问题 :) 相信我。 - Martin Marconcini
@MartínMarconcini,我的图形怎么可能出错? - Chapo
如果我以高密度屏幕(至少400px x 854px)为目标,将背景设为相同的尺寸(400px x 854px),并将背景放在hdpi文件夹中,然后设计Layout-large/main.xml,那么他们怎么可能会出错呢? - Chapo
我已经阅读了这两个链接,http://developer.android.com/guide/topics/resources/accessing-resources.html和http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources,应该选择正确的图形/布局。 - Chapo
1个回答

0
你应该在每个视图类型之间更改dpi值,以使它们在每个视图中看起来合适。在网页支持多屏幕上,有一个显示不同屏幕的最小屏幕尺寸的图表。您将需要进行一些代数运算,以比较每个值,以便将图像的dpi从一个大小转换为另一个大小。但是,另一种解决方案是使用“match_parent”和“wrap_content”,而不是使用定义的大小,因为这简化了过程。相同的过程也适用于视图中的sp文本。
我所指的图表是长这样:
  • 超大屏幕至少为960dp x 720dp

  • 大屏幕至少为640dp x 480dp

  • 正常屏幕至少为470dp x 320dp

  • 小屏幕至少为426dp x 320dp

编辑:我还忘记提到,如果您在LinearLayout中使用多个视图,可以使用名为android:layout_weight的Android属性,使用比率来分割屏幕。

编辑:那么也许问题在于您没有正确缩放图像。也许您应该尝试将这些内容添加到您的ImageView中:

android:adjustViewBounds="true"
android:scaleType="fitXY"

我将我的布局图形(背景)设置如下:
  • ldpi 240 x 320
  • mdpi 320 x 480
  • hdpi 480 x 800
  • xhdpi 720 x 1280
  • xxhdpi 1080 x 1920
- Chapo
也许你应该尝试将ImageView的scaleType设置为fitXY,并将adjustViewBounds设置为true。 - Steven Zahuranec
什么是那个?我该如何尝试? - Chapo
我不确定。这可能是一个冒险,但也许你可以使用FrameView,将ImageView和按钮文本都放在FrameView中。 - Steven Zahuranec
我不确定我们是否在同一个“频道”上,我并不是在尝试在图像视图上加载图片,我只是将一张图片作为背景。我认为这行代码(android:background="@drawable/bgh")应该会将那张照片作为背景加载,而不需要你给我的最后一条评论。 - Chapo
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接