【问题标题】:Proper way to set background image for a layout android为布局android设置背景图像的正确方法
【发布时间】:2017-08-29 22:13:18
【问题描述】:

我尝试了许多可能的方法来为布局设置完美的背景图像,但从未得到完美的结果。让我描述一下我的问题。我有一个大小为2880 x 5120 像素的图像。我将图像保存在xxxhdpi 文件夹中,然后使用Glide 库作为背景图像加载图像。我通过以编程方式计算屏幕大小来调整图像大小。 这是我将图像加载为背景图像的以下代码。

Glide.with(LoginActivity.this)
                    .load(R.drawable.login_background)
                    .override(screenSize[0]*2,screenSize[1])
                    .animate(animationObject)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .into(backgroundImage);

screenSize()方法:

private int[] screenSize() {
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        return new int[]{size.x, size.y};
    }

这是实际的背景图片:

加载后的图片作为背景图片。我得到以下结果。

图像不完全适合屏幕。 设置背景图片的最佳解决方案是什么?

【问题讨论】:

  • 使用可以使用 .fitCenter() 或 .centerCrop()
  • 与上述结果相同。没用

标签: android image android-glide


【解决方案1】:

您不必费心计算不同的屏幕尺寸。您应该使用不同大小的图像资源,android 将根据屏幕大小进行处理。您可以使用this post 了解更多信息,但我总结了您可以在项目中用作背景图片的尺寸。

它具有您需要用于不同屏幕的所有尺寸,并且提到了横向模式尺寸。

MDPI:
Portrait: 320x480px
Landscape: 480x320px
HDPI:
Portrait: 480x800px
Landscape: 800x480px
XHDPI:
Portrait: 720px1280px
Landscape: 1280x720px
XXHDPI:
Portrait: 960px1600px
Landscape: 1600x960px
XXXHDPI:
Portrait: 1280px1920px
Landscape: 1920x1280px

【讨论】:

  • 不会增加apk大小吗?
  • 也许吧,但这不是不使用不同尺寸图像来满足您的需求的借口,这是谷歌推荐的解决方案,包括所有尺寸以满足需求。此外,还有其他方法可以减少由访问代码计算引起的 APK 大小..
  • 你不认为这些决议有点老了。我的意思是,如果你看一下 LG G3 的分辨率。它的1440x2960。如何处理?
  • 您可以查看 android 开发者文档并阅读其背后的逻辑以了解..
  • 链接请@Aalap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多