2017-08-29 68 views
0

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

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

这是实际的背景图像:

enter image description here

图像加载作为背景图像后

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

screenSize()方法。我得到了下面的结果。

enter image description here

的图像没有被完全装配屏幕。 什么是设置背景图像的最佳最佳解决方案?

+0

使用可以使用.fitCenter()或.centerCrop() –

+0

与上面相同的结果。没有工作 – XoXo

回答

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 
+0

不会增加apk大小? – XoXo

+1

也许,但这不是没有使用不同大小的图像来适应您的需求的借口,这是谷歌推荐的解决方案,以包括所有尺寸以适应需要。另外还有其他方法可以减少由代码计算引起的APK大小.. –

+0

你不觉得这些解决方案有点旧吗?我的意思是,如果你看看LG G3的决议。它的'1440x2960'。如何处理? – XoXo