Android Wear OS Watch Face支持不同的屏幕尺寸

Android Wear OS Watch Face支持不同的屏幕尺寸,android,wear-os,android-assets,watch-face-api,Android,Wear Os,Android Assets,Watch Face Api,我在玩手表,看脸上的表情 目前,我已经创建了 背景320x320 勾号圆圈320x320 时、分、秒指针320x40 在屏幕尺寸为320x320的圆形设备上,一切正常 当我使用屏幕尺寸为360x360的设备时,事情变得越来越复杂。从下面的屏幕截图中可以看出,勾号圈的大小不会自动调整 问题 由于我是新开发手表的人,官方文档网站上没有太多关于这方面的信息,我想了解我应该如何处理这些情况 我是否应该为每个大小创建具有正确大小的单独图像,并将其放入正确的文件夹中,如: 可拉深圆形-320dpi

我在玩手表,看脸上的表情

目前,我已经创建了

  • 背景320x320
  • 勾号圆圈320x320
  • 时、分、秒指针320x40
在屏幕尺寸为320x320的圆形设备上,一切正常

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

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

我是否应该为每个大小创建具有正确大小的单独图像,并将其放入正确的文件夹中,如:

  • 可拉深圆形-320dpi
  • 可拉深圆形-360dpi
  • 可拉深圆形-390dpi
或者是否有其他方法可以做到这一点,我不希望从代码中以编程方式调整图像大小,但如果这是我可以尝试的唯一解决方案

这是我的游乐场项目来源


另外,任何文档、源代码都非常有用。

在上面的示例中,两种设备都属于
hdpi
密度范围,但屏幕大小仍然略有不同。您可以使用。但是,这需要一些额外的资产来确保覆盖所有可用的屏幕大小

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

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);
确保您提供的资产足够大,可以容纳每个密度桶中最大的屏幕。只要你把你的资产规模缩小一点点,它就不会引人注目