gpt4 book ai didi

android - 在 Android 中处理背景图像的不同屏幕分辨率

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:52 25 4
gpt4 key购买 nike

我的 Android 应用程序(基于文本的游戏)大量使用背景图像以提供更好的视觉氛围。例如,如果游戏中的 Action 将您带入酒馆,那么您会在游戏中获得酒馆的背景图像。这是一个巨大的改进,在图形上,你会得到无聊的黑色背景。

然而,这也是一个问题,因为 android:background 总是延伸到屏幕的尺寸。结果是,如果播放器在纵向和横向模式之间切换,背景图像看起来会很糟糕。更糟糕的是,许多设备的宽高比非常不同(例如,320x480 mdpi、480x800 hdpi 和 480x852 hdpi),而且还会有更多变化。

其他人是如何解决这个问题的?为主要分辨率/方向设置单独的图像对我来说不是一个选项,因为这会导致 apk 变得太大。

最佳答案

第一步是获取设备本身的屏幕高度和宽度,然后根据需要拉伸(stretch)/收缩或填充位图。这SO answer有应该帮助的来源,复制如下。 Prop Josef原始答案。

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

这是获取方向的通用资源。

int orientation = display.getOrientation(); 

或来自 here 的更多相关来源(有点乱,但看起来正确)。

public int getscrOrientation()
{
Display getOrient = getWindowManager().getDefaultDisplay();

int orientation = getOrient.getOrientation();

// Sometimes you may get undefined orientation Value is 0
// simple logic solves the problem compare the screen
// X,Y Co-ordinates and determine the Orientation in such cases
if(orientation==Configuration.ORIENTATION_UNDEFINED){

Configuration config = getResources().getConfiguration();
orientation = config.orientation;

if(orientation==Configuration.ORIENTATION_UNDEFINED){
//if height and widht of screen are equal then
// it is square orientation
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
}else{ //if widht is less than height than it is portrait

if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else{ // if it is not any of the above it will defineitly be landscape
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
}
}
return orientation; // return value 1 is portrait and 2 is Landscape Mode
}

关于android - 在 Android 中处理背景图像的不同屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com