【问题标题】:Splash screen which fills the whole samrtphone screen, but not crop闪屏,填满整个智能手机屏幕,但不裁剪
【发布时间】:2013-10-18 09:46:22
【问题描述】:

我想要一个启动画面,就像一张完整的图片,它不会在不同的智能手机屏幕上裁剪高度或宽度。

现在我使用android:scaleType="fitXY" 实现了初始屏幕,但现在图像在顶部或底部被裁剪,或者如果设备屏幕尺寸更改为另一个纵横比,它会在左右裁剪。

我该怎么办?我已经阅读了 android 开发者文章Supporting Multiple Screens,但我不知道如何实现这一点。

在屏幕中间的简单图片很容易得到,但是一张充满屏幕的图片很难得到。你能帮我吗?

【问题讨论】:

  • fitXY 不会裁剪您的图像 - 它会拉伸它以填充宽度和高度。话虽如此,由于屏幕密度、纵横比和分辨率的种类繁多,要想出一张始终完美契合的图像将是一件困难的事。唯一可行的情况是您可以定义可拉伸区域(阅读:创建一个 9-patch)。
  • 将Parent Layout上的图片设置为背景,将height/width属性设置为match_parent。

标签: java android android-layout splash-screen


【解决方案1】:

您应该为此目的使用center_crop。来自文档

均匀缩放图像(保持图像的纵横比),以便 图像的两个尺寸(宽度和高度)将等于或 大于视图的相应尺寸(减去填充)。

【讨论】:

    【解决方案2】:

    当应用程序部署在不同的屏幕尺寸时,没有办法创建一个单一的资产并期望它不会被裁剪并且不会创建黑色区域。

    Android 平台旨在动态处理多种屏幕尺寸,任何制造商都可以随时更改,包括您尚未考虑过的新分辨率。

    Android 可以为您的资源将落入的屏幕高度/宽度类别指定最小值,但这些都是通用的。

    为了使用它们,你必须在你的drawables中指定限定符并为每个限定符创建一个不同的启动画面,例如如果你使用drawable-w420dp,当屏幕有一个最小宽度为 420dp(注意不是像素)

    所以你有两个选择:

    1. 您可以使用一个单独的初始图像,并足够灵活地设计该图像的边距,以应对在某些情况下被裁剪的图像。您可以在您的 ImageView 中使用不同的 scaleTypes 并将此网站 http://etcodehome.blogspot.co.uk/2011/05/android-imageview-scaletype-samples.html 作为参考,尽管如前所述,“center-crop”将是您的最佳选择。

    2. 您可以通过编程方式将特定图像用于特定分辨率。 2.1 放入 assets 目录,所有你想要使用的特定分辨率或纵横比的启动图像 2.1 用Get screen dimensions in pixels获取设备的屏幕尺寸 2.2 现在你可以从assets中动态加载你想要的图片了

    【讨论】:

      【解决方案3】:

      使用下面的代码

      android:layout_width="match_parent"
      android:layout_height="match_parent"
      

      这将填满整个屏幕。

      【讨论】:

        【解决方案4】:

        尝试使用图像的宽度和高度来“match_parent”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-06
          • 2014-08-12
          • 1970-01-01
          相关资源
          最近更新 更多