【问题标题】:Android Wear OS Watch Face Support different screen sizesAndroid Wear OS Watch Face 支持不同的屏幕尺寸
【发布时间】:2019-06-21 07:40:27
【问题描述】:

我正在玩 Wear OS 的 Watch Faces

目前,我已经创建了

  • 背景 320x320
  • 勾选圆圈 320x320
  • 时针、分针和秒针 320x40

在屏幕尺寸为 320x320 的圆形设备上一切正常

当我使用屏幕尺寸为 360x360 的设备时,事情变得复杂起来。从下面的截图可以看出,Tick Circle 的大小不会自动调整。

问题

由于我是开发Watch Faces的新手,官方文档网站上没有太多相关信息,我想了解我应该如何处理这些情况?

我应该为每个尺寸创建具有正确尺寸的单独图像并将其放在正确的文件夹中,例如:

  • drawable-round-320dpi
  • drawable-round-360dpi
  • drawable-round-390dpi

或者是否有其他方法可以做到这一点,我不希望通过代码以编程方式调整图像大小,但如果这是我可以尝试的唯一解决方案。

这是我的游乐场项目源code

附:任何文档、源代码都会非常有用。

【问题讨论】:

    标签: android wear-os android-assets watch-face-api


    【解决方案1】:

    在上面的示例中,两个设备都属于hdpi 密度桶,但屏幕尺寸仍然略有不同。您可以使用the minimum width qualifier 单独定位它们。但是,这需要一些额外的资源来确保覆盖所有可用的屏幕尺寸。

    我个人更喜欢在代码中对资产进行简单的缩放操作。在运行时检查屏幕大小并将其用作可绘制对象(或位图)的边界。它可能看起来像这样:

    DisplayMetrics displayMetrics = new DisplayMetrics();
    context.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int width = displayMetrics.widthPixels;
    int height = displayMetrics.heightPixels;
    Rect screenBounds = new Rect(0, 0, width, height);
    
    Drawable faceMarkers = context.getDrawable(R.drawable.face_markers);
    faceMarkers.setBounds(screenBounds);
    
    faceMarkers.draw(canvas);
    

    确保您提供的资产足够大,可以容纳每个密度桶中的最大屏幕。只要您将资产缩小一点点,它就不应该引起注意。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多