Android:如何以编程方式显示不同屏幕分辨率/大小的图像

Android:如何以编程方式显示不同屏幕分辨率/大小的图像,android,Android,我正在浏览Android上支持多屏幕的文档,需要一些澄清 据我所知,设计三个独特的接口ldpi、mdpi和hdpi将是支持所有潜在android屏幕的最佳方式 但我相信当你在设计阶段这样做时,这是正确的 但是,如果您在运行时以编程方式创建一个视图,并希望设置背景图像,那么上述情况是否成立 我正在尝试使用以下方法在画布上绘制位图: canvas.drawBitMapFactory.DecodeSourceGetResources,R.drawable.image_1,0,0,null; 在我的自定

我正在浏览Android上支持多屏幕的文档,需要一些澄清

据我所知,设计三个独特的接口ldpi、mdpi和hdpi将是支持所有潜在android屏幕的最佳方式

但我相信当你在设计阶段这样做时,这是正确的

但是,如果您在运行时以编程方式创建一个视图,并希望设置背景图像,那么上述情况是否成立

我正在尝试使用以下方法在画布上绘制位图:

canvas.drawBitMapFactory.DecodeSourceGetResources,R.drawable.image_1,0,0,null; 在我的自定义视图中,扩展SurfaceView,然后在我的主要活动中使用此视图

现在我使用的是image_1.png,它是480*800像素,使用gimp

如果我在上述代码中使用此图像,则该图像显示不正确,并且图像显得更大,即图像对于屏幕来说显得太大,因此无法显示全部内容

你能告诉我最好的方法是什么吗

谢谢, -广告参见。 将图像放入3个不同大小和分辨率的文件夹中,即hdpi、ldpi和mdpi。您可以这样调用图像:

R.drawable.image_name
别担心android会小心,在大屏幕上它会打开hdpi,在小屏幕上它会打开ldpi的图像

定义时,高度和宽度使用dp作为单位,而不是像素。

请参阅。 将图像放入3个不同大小和分辨率的文件夹中,即hdpi、ldpi和mdpi。您可以这样调用图像:

R.drawable.image_name
别担心android会小心,在大屏幕上它会打开hdpi,在小屏幕上它会打开ldpi的图像


定义时,高度和宽度使用dp作为单位,而不是像素。

Hmm,我不太熟悉drawBitmap方法,但我在文档中确实看到了这一点:

如果位图和画布具有不同的密度,此函数将负责自动缩放位图以绘制与画布相同的密度

位图上有一个getDensity和setDensity方法,因此您可以调用getDensity查看它是什么,然后在drawBitmap之前使用setDensity进行实验,看看这是否有帮助

注意:Canvas还有一个getDensity方法,因此您可以将其打印到日志中,并查看是否将位图密度设置为相同的值可以防止缩放问题


还有:drawBitmap位图、Rect src、Rect dst、Paint Paint方法,该方法在文档中声明:此函数忽略与位图相关的密度。这是因为源和目标矩形坐标空间在各自的密度中,因此必须已经应用了适当的比例因子。

Hmm,我不太熟悉drawBitmap方法,但我确实在文档中看到了这一点:

如果位图和画布具有不同的密度,此函数将负责自动缩放位图以绘制与画布相同的密度

位图上有一个getDensity和setDensity方法,因此您可以调用getDensity查看它是什么,然后在drawBitmap之前使用setDensity进行实验,看看这是否有帮助

注意:Canvas还有一个getDensity方法,因此您可以将其打印到日志中,并查看是否将位图密度设置为相同的值可以防止缩放问题


还有:drawBitmap位图、Rect src、Rect dst、Paint Paint方法,该方法在文档中声明:此函数忽略与位图相关的密度。这是因为源和目标矩形坐标空间在各自的密度中,因此必须已经应用了适当的比例因子。

感谢您的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。不必担心照片的大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,android会在设备中显示时处理这些图像?是的。创建-ldpi约为120dpi,-mdpi约为160dpi,-hdpi约为240dpi的图像大小将根据分辨率显示它们。你不必担心。谢谢你的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。不必担心照片的大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,android会在设备中显示时处理这些图像?是的。创建-ldpi约为120dpi,-mdpi约为160dpi,-hdpi约为240dpi的图像大小将根据分辨率显示它们。你不必担心。谢谢你的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。而且没有
o担心图片大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,安卓在设备中显示时会处理这些吗谢谢你的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。不必担心照片的大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,安卓在设备中显示时会处理这些吗谢谢你的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。不必担心照片的大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,安卓在设备中显示时会处理这些吗谢谢你的回复。这是否意味着我需要按照以下dpi创建图像,-ldpi是~120dpi,-mdpi是~160dpi,-hdpi是~240dpi。不必担心照片的大小?我的意思是,考虑到上面的dpi,我可以创建任何大小的图像,安卓在设备中显示时会处理这些吗