【问题标题】:Android background based on screen size基于屏幕大小的Android背景
【发布时间】:2012-12-13 09:52:58
【问题描述】:

我正在创建一个 Android 应用程序,并且想要为手机大小的屏幕和平板电脑大小的屏幕提供不同的背景图像。我已经有不同分辨率的不同分辨率图像(mdpihdpi 等)。挑战在于大多数平板电脑使用mdpi,但有些手机也可能使用它。

我尝试做一些研究,但似乎只能在布局中定义屏幕尺寸,例如res/layout/layout-large。这是否意味着我必须为平板电脑创建一个单独的 xml,链接到 @drawable/tablet-background?或者有没有其他的解决方案,xml或者programmatic?

【问题讨论】:

  • 但似乎只能在布局中定义屏幕尺寸 - 你在哪里读到的?
  • This page states 为不同的屏幕尺寸提供不同的布局 为不同的屏幕密度提供不同的位图drawable为不同的屏幕尺寸提供不同的位图可绘制对象。其余的可能只是假设。
  • 您是否尝试使用尺寸和密度(large-mdpi)对其进行限定但失败了?
  • @Luksprog 我什至从未考虑过 o_O 但它就像一个魅力。我想知道为什么谷歌没有提到这一点(或者我可能只是看起来不够努力)。如果您将其作为答案提交,我会将其标记为正确。

标签: android android-layout


【解决方案1】:

mdpihpdi 等是指屏幕密度,与平板电脑或手机等设备无关。如果我理解正确,您要做的是为平板电脑和手机使用不同的背景图像。 有三种方式:

  1. 使用 layout-large、layout-xlarge 文件夹为平板电脑创建 xml 布局和为手机创建 xml 布局
  2. layoutlayout-large 文件夹中使用相同的 xml 布局(元素 id 除外),并使用以下方式以编程方式更改背景:

    public boolean isTablet(){
        return (findViewById(R.id.tablet_view) != null); 
    }
    

    其中 tablet_view 是仅存在于 layout-large xml 布局中的元素 ID。

  3. 另一个技巧:Determine if the device is a smartphone or tablet?

【讨论】:

  • 我不建议这样做。你不应该再使用layout-largelayout-xlarge 等。而是使用例如 layout-sw600dp(适用于 7 英寸平板电脑)。drawables 也是如此。例如:drawable-sw600dp-hdpi。因此总体而言更容易,无需以编程方式更改任何内容。
  • 为什么不应该使用 layout-large 和 layout-xlarge?
  • @reVerse sw600dp 限定符是否在 Honeycomb 下工作?
  • 根据文档:没有,但有必要吗?据我所知,每个相关的平板电脑都运行 Honeycomb 及更高版本。 @DavideSilvestri 自 API 级别 13 起,这些尺寸限定符已被弃用
【解决方案2】:

并希望手机大小的屏幕具有不同的背景图像和 平板电脑大小的

尝试使用所需的屏幕尺寸以及目标设备的密度值来限定drawable 文件夹,例如drawable-large-mdpi。基于configuration qualifiers table,屏幕尺寸必须排在第一位。

【讨论】:

  • 是的。谢谢。还支持旧设备(我的目标是支持 2.3)
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2011-11-16
  • 1970-01-01
相关资源
最近更新 更多