【问题标题】:Multiple Device Densities and Xamarin Android多设备密度和 Xamarin Android
【发布时间】:2018-01-29 16:33:52
【问题描述】:

我正在努力使用自定义控件并让它在不同的设备上正确呈现。我有一张要在屏幕上渲染的地图(一个州的地图)。

我的drawables看起来像这样:
drawable
可绘制-sw320dp
drawable-sw360dp

问题是,我可以使用 2 部手机(我的三星 Galaxy 6 和我妻子的索尼 XPeria Compact)。

2 款截然不同的手机。他们都使用我放在 360 文件夹中的地图。 但是这张地图对索尼来说太大了。即使我将 360 降到 350,两部手机都使用 350 文件夹。

关于手机的更多统计数据:
三星
像素宽度:1440
像素高度:2560
Dp 宽度:360 Dp 高度:640

索尼
像素宽度:720
像素高度:1184
Dp 宽度:360 Dp 高度:592

如何构建我的可绘制文件夹,以便索尼使用较小的地图 png?

【问题讨论】:

    标签: android xamarin xamarin.android


    【解决方案1】:

    我会使用配置限定符,像这样构建您的 Resources 文件夹并定义每个配置文件夹:

    用于低密度 (ldpi) 屏幕 (~120dpi) 的 drawable-ldpi 资源文件夹。
    用于中等密度 (mdpi) 屏幕 (~160dpi) 的 drawable-mdpi 资源文件夹。 (这是 基线密度。)
    用于高密度 (hdpi) 屏幕 (~240dpi) 的 drawable-hdpi 资源文件夹。
    drawable-xhdpi 用于超高密度 (xhdpi) 屏幕 (~320dpi) 的资源文件夹。
    drawable-xxhdpi 用于超高密度 (xxhdpi) 屏幕 (~480dpi) 的资源文件夹。
    drawable-xxxhdpi 用于超超超高密度 (xxxhdpi) 使用 (~640dpi) 的资源文件夹。

    请记住,这些配置之间的资产比率是:

    ldpi | mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
    0.75 | 1    | 1.5  | 2     | 3      | 4
    

    【讨论】:

    • 这似乎奏效了。我试图使用基于宽度的命名方案来实现相同的目标。感谢您的建议。
    【解决方案2】:

    You can refer to this.

    如何构建我的可绘制文件夹,以便 Sony 使用较小的地图 png?

    是的,索尼需要一张较小的地图图片,而三星需要一张较大的地图。

    您可以使用Resources.DisplayMetrics.YdpiResources.DisplayMetrics.Xdpi 在您的两部手机中获取dpi 的值。并参考@hichame.yessou's answer中的引用来选择哪个文件夹放大地图,哪个文件夹放小地图。

    如果没有两张图,可以编程方式适配UI,请参考TypedValue.applyDimension

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多