1

我想在手表上实现一个正在运行的文本,这样一行文本就会从右向左移动。

对我来说最好的方法是创建一个具有屏幕宽度的 TextView,将文本设置为最大 paddingLeft,然后减少填充,以便文本(几个单词)从右侧移动到左边。

所以我的问题是:是否可以动态更改 TextView 的属性“paddingLeft”?

<TextView
    android:id="@+id/scrollingText"
    android:layout_width="@dimen/smart_watch_2_control_width"
    android:layout_height="wrap_content"

    android:paddingRight="@dimen/smart_watch_2_control_width"

    android:text="Hello world!"

    />

也许是这样的:

Intent intent = new Intent(Control.Intents.CONTROL_SEND_LAYOUT_INTENT);
intent.putExtra(Control.Intents.EXTRA_LAYOUT_REFERENCE, layoutReference);
intent.putExtra(Control.Intents.EXTRA_PADDING_LEFT, paddingLeft);
controlExtension.sendToHostApp(intent);

我很清楚,Control.Intents 中既没有 CONTROL_SEND_LAYOUT_INTENT 也没有 EXTRA_PADDING_LEFT,事实上,可以使用 CONTROL_PROCESS_LAYOUT_INTENT 完成类似的操作,但文档中有一条注释:

请注意,扩展程序必须始终根据显示屏幕大小发送覆盖全屏的布局。这意味着即使扩展想要更新屏幕的一部分,也必须提供全屏布局。

所以在我的情况下,我需要创建 220 个相等的 xml 文件,唯一的区别是 paddingLeft 设置为 220、219、218 等,并且每次都设置正确的布局?这听起来不适合我:-)

另一种解决方法是使用 ImageView 而不是 TextView 并在 Host 上每次将文本转换为 Bitmap 并通过“setImage”将更新发送到 Watch,实际上我已经实现了这种方式,但它并不是真正的高性能解决方案...

我还考虑过发送前面带有空格的文本,例如:

  1. “___你好世界!”
  2. “__你好世界!”
  3. “_你好世界!”

但我希望有更大的运动粒度。

那么有人对如何更改“paddingLeft”有任何想法吗?

4

1 回答 1

0

这是一种非常奇怪的方式来实现所谓的Animation,并且在 Sony SmartWatch SDK 的文档中已经有一个示例。

附加编辑:您无法在 SmartWatch 上实现流畅的动画效果,因为您不控制屏幕,您只是定期发送要在屏幕上显示的数据,并通过意图发送。所以很明显为什么你不能达到任何平滑,“刷新率”太低了。

同样:您可以获得的最佳动画是您将在文档中找到的实现,请参阅 SimpleControl 应用程序,这是任何人都应该在该文档中看到的第一件事。

于 2013-10-17T12:03:14.027 回答