为什么在SurfaceView上绘制时我的图像会拉伸?

时间:2012-11-09 10:49:17

标签: android android-layout

我在代码中手动创建一个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停止这样做吗?即使它们只存在于“drawable”文件夹中并同时使用不同dpi文件夹中的那些图像(如图标等),我是否可以让Android直接使用我的图像?

1 个答案:

答案 0 :(得分:0)

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

编辑:事实上,如果您想为所有屏幕使用相同的图像而不是通过Android调整它们的大小,您可以将它们放在“drawable-nodpi”文件夹中