【问题标题】:Why can't i just calculate the screen dimensions and by that resize the image?为什么我不能只计算屏幕尺寸并调整图像大小?
【发布时间】:2012-12-15 06:03:06
【问题描述】:

我发现很多人问如何调整图像以适应设备屏幕的问题和答案,我心想——如果我能获得设备分辨率,使用

    Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
    int screenWidth = display.getWidth();
    int screenHeight = display.getHeight();

为什么我不能按屏幕的 1/5 来缩放/调整图像大小? 这样我就可以做到让我们说 1/5 的空间 2/5 的图像和另外 1/5 的文本,它应该适合所有设备,我在这里错过了什么吗?

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

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

【问题讨论】:

  • 如果您想按屏幕百分比调整 UI 元素的大小,请在布局 XML 文件中使用 android:layout_weight 属性。我猜你的意思是放“图像的 3/5”(不是 2/5)所以......三个权重为 1:3:1 的元素将被调整为所有权重的相应总和。所以在这种情况下 1+3+1=5。结果是第一个将填充 1/5,第二个 3/5 和第三个 1/5。

标签: android image-resizing image-scaling


【解决方案1】:

在 Android 中,您的应用程序可能不会覆盖整个屏幕。即使您禁用标题栏/状态栏等,您仍然可以拥有特定于设备的 chrome(如 Android 3.0 中的屏幕按钮)。

【讨论】:

  • 我明白你在说什么,但是 - 在我看来,在屏幕的各个方面留下额外的空间似乎是一种更好的解决方案,而不是仅仅将它安装在中小型文件夹中......跨度>
  • 您可以使用权重为 0.2、0.4、0.2、0.2 的 LinearLayout 来适应您的元素。或者您可以手动计算它,但您必须使用视图尺寸,而不是设备。并记住在配置更改(例如方向更改)时更新布局
【解决方案2】:

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

你可以,如果你想让你的图像占据屏幕尺寸的相对大小,那么这和使用带有权重的LinearLayout(正如其他人所指出的那样)可能是你唯一的选择。请注意,您可能不想在主 UI 线程上进行任何图像缩放,您应该尝试尽可能高效地进行。查看the guidelines 了解一些好的做法。

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

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

查看Display.getHeight()Display.getWidth() 的文档:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 2021-05-07
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多