【问题标题】:Get height of peek card before any are displayed?在显示任何内容之前获取偷看卡的高度?
【发布时间】:2015-03-06 12:50:49
【问题描述】:

根据 API 文档,当设置了 PEEK_MODE_SHORT 时,所有窥视卡将仅“单行高”。因此,这意味着每个窥视卡都将占据特定设备的恒定屏幕空间。

我计划在我的表盘上利用这一点,将最重要的信息放置在保证不会被卡片覆盖的区域(以及在空间中可以被卡片覆盖的非关键信息)。

问题是在onPeekCardPositionUpdate() 之前我不知道如何确定偷看卡占用多少空间,这为时已晚,因为我希望其余布局考虑偷看卡的去向。

TL;DR - 关于如何在调用 onPeekCardPosition() 之前获取偷看卡位置的任何想法?

编辑: 我需要窥视卡高度的原因是因为我希望确保在显示窥视卡时能够完全覆盖某些东西。就像下面的#1:

【问题讨论】:

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


    【解决方案1】:

    不,我们没有提供任何 API 来确定窥视卡的高度。您应该使用onPeekCardPositionUpdate() 并在收到通知时调整您的表盘。

    我了解您希望始终将您的内容放在窥视卡上方并完成它。但是,这不是一个好主意——您将浪费屏幕上可用的空间。用户可能决定禁用窥视(有可用的选项),之后您将在屏幕底部留下空白空间。或者用户可能在流中没有卡片,在这种情况下,您将在底部留下空白空间。

    提供此回调是有原因的,因此您可以在卡片正在查看和未查看时动态调整表盘,并让用户在任何一种情况下都能获得最佳体验。

    编辑:

    在您的具体情况下,我建议您这样做:在您的绘图代码中检查 peek 卡的当前边界 (getPeekCardPosition())。如果它们是 (0-0, 0-0),这意味着没有窥视卡,您可以绘制可选的内容。如果边界不同,请不要绘制它。应该就这么简单。您还想在卡片边界的回调到来时触发重绘。

    【讨论】:

    • 感谢您的信息。实际上,我并不是只想将我的内容放在 peek 卡片上方并完成它。我有 4 条要显示的信息。其中 3 个是关键的,1 个是“很高兴拥有”。但是,当显示 peek 卡片时,没有足够的空间来显示全部 4 个。因此,我没有试图将所有内容都塞在一起,而是确保将最不重要的信息行静态放置在底部。这样可以确保当偷看卡片显示时,它被完全覆盖,这比只剪掉它的一部分要干净得多。
    • 我想我可以显示最后一行,直到第一次显示偷看卡。然后,当调用 onPeekCardPositionUpdate() 时,我可以保存该值并在之后调整我的间距。不会带来出色的首次运行体验,但它具有一致性的巨大附加值。例如。如果用户想知道现在几点了,他们只需要看他们手腕的中心(而不是有时看中心,而其他人由于布局变化而看其他地方)
    • 感谢@gruszczy 的建议!我今天确实这样做了:) 但是,这仍然存在潜在问题,即可选信息不会被 peek 卡完全覆盖。如果可选信息只是“消失”,因为偷看卡部分遮挡了它,这在美学上令人不快。它不遵循其他操作系统使用的材料设计 DL。我在原始帖子中添加了一张图片,以突出显示我在说什么。 -- 我真的不认为有办法让我在事先不知道高度的情况下做到这一点。
    • 我明白了。我将在我们这边提交一个错误并讨论我们是否可以为此添加一些额外的 API 来解决这种情况。同时:您不必立即消失可选信息。相反,请考虑为消失设置动画(例如,淡出)。这应该是更多的材料(事情不只是消失,而是过渡对用户来说是清楚的)。
    • 哇,@gruszczy!这种敏捷程度给我留下了深刻的印象!淡入/淡出的想法是个好主意。我会调查一下,看看是否有我可以使用的库。感谢所有的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2016-02-25
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多