为什么我不能只计算屏幕尺寸并调整图像大小?

时间:2012-12-30 22:47:09

标签: android image-resizing image-scaling

我发现很多人问及如何调整图像以适应设备屏幕的问题和答案,我想我自己 - 如果我可以使用

获得设备分辨率
    Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    int screenWidth = display.getWidth();
    int screenHeight = display.getHeight();

为什么我只能通过屏幕的1/5来缩放/调整图像大小? 多数民众赞成我可以做的方式可以说1/5的空间2/5的图像和另外1/5的文本,它应该适合所有的设备,我错过了什么?

为什么我会得到一个被弃用的"这段代码中的警告?

对不起我的英文,并提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

在Android中,您的应用可能无法覆盖整个屏幕。即使您禁用了标题栏/状态栏等,您仍然可以使用特定于设备的Chrome(例如Android 3.0中的屏幕按钮)。

答案 1 :(得分:0)

  

为什么我不能只通过屏幕的1/5来缩放/调整图像大小?

你可以,如果你想让你的图像占用一些相对数量的屏幕尺寸,那么这个和使用带有权重的LinearLayout(正如其他人所指出的)可能是你唯一的选择。请注意,您可能不希望在主UI线程上执行任何图像缩放,并且您应该尝试尽可能高效地执行此操作。看看the guidelines是否有一些好的做法。

另请注意,屏幕宽度(尤其是屏幕高度)不一定是图像和/或UI可用的空间量。可能存在执行边距/填充或其他组件;例如ActionBar。

  

为什么我会在此代码中收到“已弃用”的警告?

请参阅Display.getHeight()Display.getWidth()的文档:

  

此方法已在API级别13中弃用。请改用getSize(Point)

Google基本上告诉开发人员,它可能会停止在未来的平台版本中支持上述方法。因此,您应尽可能远离它们。大多数开发人员最终会编写自己的帮助器方法,在旧平台上使用已弃用的方法(在本例中为API级别13),在新平台上使用getSize(...)。您可以使用Build.VERSION_CODES来实现此目的。