2

我在代码中手动创建 SurfaceView 并将其设置为我的活动的内容视图,如下所示:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;
int height = displaymetrics.heightPixels;
mainSurface = new MainSurface(getBaseContext());
mainSurface.getHolder().setFixedSize(width, height);
setContentView(mainSurface);

然后我简单地在画布上绘制这样的图像:

canvas = surfaceHolder.lockCanvas(null);
int id = context.getResources().getIdentifier("imageName", "drawable", context.getPackageName());
Bitmap image = BitmapFactory.decodeResource(context.getResources(), id);
canvas.drawBitmap(image, pos[0], pos[1], null);
surfaceHolder.unlockCanvasAndPost(canvas);

但事情很奇怪......有些图像/位图被拉伸并且位置因图像而异,所以如果我给两个图像相同的位置,它们不会放在同一个地方?好像有一些我不知道的布局管理正在进行,但那怎么可能呢?在 SurfaceView 上绘图时,它们不应该总是绝对位置吗?

我完全不解!

编辑
好的,这是因为我只有“drawable”文件夹中的图像,如果我将它们复制到“drawable-hdpi”,它们不会被拉伸!所以把我的问题转向另一个方向,我可以让 Android 停止这样做吗?我可以让Android按原样使用我的图像,即使它们只存在于“drawable”文件夹中,同时使用不同dpi文件夹中的那些图像(如图标等)?

4

1 回答 1

0

这是因为我只有“drawable”文件夹中的图像,如果我将它们复制到“drawable-hdpi”,它们不会被拉伸!

编辑:事实上,如果你想对所有屏幕使用相同的图像并且不让它们被 Android 调整大小,你可以将它们放在“drawable-nodpi”文件夹中

于 2012-11-10T18:33:11.400 回答