gpt4 book ai didi

android "squishing"游戏画面进入大屏左上角

转载 作者:行者123 更新时间:2023-11-30 04:48:47 25 4
gpt4 key购买 nike

我正在做类似下面的事情:

Bitmap mBitmap;

mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myimage);

在 onDraw 中我这样做:

canvas.drawBitmap(mBitmap,0,0,null);

我的 list 看起来像这样:

<supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="true" android:anyDensity="false" />

在大屏幕上,我的图片缩小到大屏幕的四分之一左右,并位于左上角。

对于我的生活,我无法弄清楚如何让我的图像和屏幕坐标自动适应更大的屏幕。

事实是,上面的代码在大多数设备上运行良好,例如 Droid 和普通屏幕。只有平板电脑或屏幕稍大的设备才会发生这种情况。

我做错了什么,屏幕上的图像和坐标不像在 Droid 上那样只是调整大小?

最佳答案

这些大型设备(平板电脑)的屏幕(宽度和高度)很可能比典型手机大得多。

无论如何,我将分享我编写的一个函数,它将位图的大小调整为您想要的宽度和高度(因此您可以根据屏幕尺寸计算它,然后重新缩放)。当然,所有这一切都是为了缩放它,所以请确保您有合适的 mdpi、hdpi 版本。

public Bitmap getBitmap(Resources resources, String bitmapName, int width, int height)
{
// this is just a Map of String, Bitmaps I use for cacheing
Bitmap _bitmap = GraphicAssets.get(bitmapName);
if(_bitmap != null)
{
return _bitmap; // return cached result
}
else
{
int fieldValue = 0;
try
{
fieldValue = getFieldValue(bitmapName, R.drawable.class);
}
catch (Exception e)
{
Log.e("getBitmap", "Cannot read field value", e);
}
Bitmap _bitmapPreScale = BitmapFactory.decodeResource(resources, fieldValue);

int oldWidth = _bitmapPreScale.getWidth();
int oldHeight = _bitmapPreScale.getHeight();
int newWidth = width;
int newHeight = height;

// calculate the scale
float scaleWidth = ((float) newWidth) / oldWidth;
float scaleHeight = ((float) newHeight) / oldHeight;

// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);

// recreate the new Bitmap
Bitmap _bitmapScaled = Bitmap.createBitmap(_bitmapPreScale, 0, 0, oldWidth, oldHeight, matrix, true);
return _bitmapScaled;
}

public int getFieldValue(String name, Class obj) throws
NoSuchFieldException, IllegalArgumentException,
IllegalAccessException
{
Field field = obj.getDeclaredField(name);

int value = field.getInt(obj);

return value;
}

这样调用它:

Bitmap bitmap = getBitmap(GetResources(), "name_of_image_in_res/drawable_folder_without_file_extension", DesiredWidth, DesiredHeight);

关于android "squishing"游戏画面进入大屏左上角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129469/

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