我想在手表上实现正在运行的文字,以便一行文字从右向左移动。
对我来说这样做的最好方法是创建一个带有屏幕宽度的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,并且每次在主机上将文本转换为Bitmap,并通过“setImage”将更新发送到Watch,事实上我已经用这种方式实现了它,但它是不是真正的高性能解决方案......
我还想过发送带有前面空格的文本,例如:
但我想更加细化运动。
那么有人对如何改变“paddingLeft”有任何想法吗?
答案 0 :(得分:0)
这是实现所谓的动画的一种奇怪的方式,并且在Sony SmartWatch SDK的文档中已经有一个示例。
其他编辑: 您无法在SmartWatch上实现平滑动画,因为您无法控制屏幕,只是定期发送要在屏幕上显示的数据,并通过意图发送。所以很清楚为什么你不能达到任何平滑,“刷新率”太低了。
再说一遍:你可以得到的最好的动画就是你会在文档中看到的,请参阅SimpleControl应用程序,这是任何人都应该在该文档中看到的第一件事。