【问题标题】:How to setup same ImageView size on different screens?如何在不同的屏幕上设置相同的 ImageView 大小?
【发布时间】:2016-12-02 05:21:24
【问题描述】:

我希望 DP 像素能够解决不同屏幕尺寸的问题。

我的 ImageView 是这样设置的:

<ImageView
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:src="@drawable/center_ring"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>

然后我尝试在具有不同屏幕尺寸的 Nexus 5X 和 Nexus S 的虚拟设备上启动此应用。正如你所看到的 ImageView 的相对大小是完全不同的。

如何在不同的屏幕上获得相同的相对尺寸?

【问题讨论】:

  • 使用dimen文件支持多种尺寸或创建不同尺寸的图像并相应地放入可绘制文件夹(hdpi、xhdpi、xxhdpi等)
  • @AdeelTurk 可能会解决图形问题,但我的其他项目是自定义 TextView 对象,我仍然需要一种方法使它们在所有屏幕中的相对大小相同。

标签: android android-layout android-imageview dimensions


【解决方案1】:

尝试将此库用于您的维度。这将帮助您克服您的问题,但它不是一个理想的解决方案,理想情况下我会建议您使用约束布局或布局权重 https://github.com/intuit/sdp

这将帮助您获得屏幕尺寸

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

【讨论】:

  • 我不认为 ConstraintLayout 会起作用,因为这个应用程序是一个教育游戏,其中对象(自定义 TextViews、ImageViews)被拖动、重叠并在碰撞时做出反应。
  • 我已经尝试了您建议的带有 SDP 单元的 Android SDK。它们更加一致,但仍然不是像素完美。此外,我的许多对象都是以编程方式创建的——我可以在 JAVA 代码中使用这些单元吗?
  • 是的,你可以,但是在dimen xml中定义这些尺寸,然后在你的代码中调用它们
  • 我会尝试这种方法。相当震惊的 Android 没有用于此的本机工具。我想将来我的游戏应该被重写而不使用任何视图并自己绘制所有元素。
  • android 有一个支持,即在 dp 中给出尺寸,但我想由于屏幕尺寸和可用分辨率的范围很大,它并不能在任何地方提供最佳性能,但我希望你能找到一个合适的解决方案,如果你这样做,请将其作为答案发布,如果对你有帮助,也考虑投票这个答案
【解决方案2】:

您可以通过将宽度和高度指定为 px 而不是 dp 来实现。 对于相同的相对大小,您可以对已使用和未使用区域使用布局权重。它会解决你的问题。

编辑 然后你应该有自定义视图并根据重量计算创建所有视图。只有你才能做到这一点。

【讨论】:

  • 使用 px 代替 dp 并不能解决问题。我不能使用布局权重,因为我所有的项目(图像视图、自定义文本视图)都是可拖动的项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多