Android 为布局设置背景图像的正确方法

Android 为布局设置背景图像的正确方法,android,image,android-glide,Android,Image,Android Glide,我尝试了许多可能的方法为版面设置一个完美的背景图像,但从未得到完美的结果。让我给你描述一下我的问题。我有一张2880 x 5120像素的图像。我将图像保存在xxxhdpi文件夹中,然后使用Glide库作为背景图像加载图像。我通过编程计算屏幕大小来调整图像的大小。 下面是我加载图像作为背景图像的代码 Glide.with(LoginActivity.this) .load(R.drawable.login_background)

我尝试了许多可能的方法为版面设置一个完美的背景图像,但从未得到完美的结果。让我给你描述一下我的问题。我有一张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};
    }
这是实际的背景图像:

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

图像与屏幕不完全匹配。
设置背景图像的最佳解决方案是什么?

您无需经历计算不同屏幕大小的麻烦。您应该使用不同大小的图像资源,android将根据屏幕大小进行处理。您可以使用阅读更多内容,但我总结了您可以在项目中用于背景图像的大小

Glide.with(LoginActivity.this)
                    .load(R.drawable.login_background)
                    .override(screenSize[0]*2,screenSize[1])
                    .animate(animationObject)
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .into(backgroundImage);
它有所有的大小,您需要使用不同的屏幕以及横向模式的大小提到

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

Use可以使用与上述相同的结果.fitCenter()或.centerCrop()。它不是增加了apk的大小吗?也许,但这不是不使用不同大小的图像来满足您的需要的借口,这是谷歌推荐的解决方案,包括所有大小以满足您的需要。另外,还有其他方法可以减少辅助代码计算导致的APK大小。你不认为这些解决方案有点过时了吗。我的意思是如果你看LG G3的分辨率。其
1440x2960
。如何处理?你可以查看android开发者文档并阅读其背后的逻辑来理解..请链接@Aalap