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などに設定され、毎回正しいレイアウトを設定する必要がありますか? それは私には正しく聞こえません:-)

別の回避策は、TextView の代わりに ImageView を使用し、ホスト上で毎回テキストをビットマップに変換し、「setImage」を介してウォッチに更新を送信することです。実際、私はすでにこの方法で実装していますが、実際にはそうではありません。高性能ソリューション ...

次のように、前にスペースを入れてテキストを送信することも考えました。

  1. "___こんにちは世界!"
  2. "__こんにちは世界!"
  3. "_こんにちは世界!"

しかし、私は動きの粒度を上げたいと思っています。

それで、「paddingLeft」を変更する方法について何か考えがある人はいますか?

4

1 に答える 1

0

これは、 Animationとして知られているものを実装するための非常に奇妙な方法であり、Sony SmartWatch SDK のドキュメントに既に例があります。

追加の編集: SmartWatch でスムーズなアニメーションを実現することはできません。画面を制御せず、画面に表示するデータを定期的に送信し、インテントを介して送信するだけだからです。したがって、滑らかさを実現できない理由は明らかです。「リフレッシュレート」が低すぎます。

繰り返しますが、取得できる最高のアニメーションは、ドキュメントに実装されているものです。SimpleControl アプリを参照してください。これは、誰もがそのドキュメントで最初に目にするべきものです。

于 2013-10-17T12:03:14.027 に答える