0

まず、私は本当にAndroidの初心者なので、質問が単純なRTFMである場合はお詫びします。

私は円形のグラフィックレイアウト(現在、複数ImageViewsが中心を中心に回転し、それぞれが同じドローアブルを持っている)を実行しようとしていますが、それを実行する最も効率的な方法は何でしょうか。私はそれを調べましたが、Androidのドキュメントは驚くほどまばらです。

現在、 XML内のImageViewsにrotationtranslationXを使用していますが、さまざまなデバイスでテストすると、適切にスケーリングされません。デバイスごとに異なるレイアウトファイルを作成することもできますが、正直言ってそれは面倒ですtranslationYFrameLayout

  • レイアウト全体を自動的に拡大縮小する方法はありますか?つまり、その中の各要素に対して正しい平行移動、回転、およびスケールを定義するとFrameLayout、画面全体が「魔法のように」塗りつぶされる可能性がありますか?
  • レイアウトで中心を外れた回転を行うことはできますか?たとえば、円の半径で移動し、オブジェクトの中心ではなく、円の中心を中心に回転しますか?それとも、他の一連の変換ですか?
  • XMLレイアウトを使用することが不可能であり、コードでそれを実行する必要がある場合(これは避けたい)、それを実行するのに最適な場所はどこですか?私はそのonCreate方法でそれを行いますが、もっと良い方法があるのでしょうか?

アニメーションは作成せず、静的レイアウトのみが必要であることに注意してください。

4

1 に答える 1

0

あなたは私の答えを気に入らないでしょうが、デフォルトのビューグループとウィジェットでは実現できない複雑なレイアウトを行っていて、それらをうまくスケーリングできない場合は、独自のビューグループを作成して ImageView を拡張することはおそらく行く道。

その後、デバイスの DPI と解像度を考慮して画像ビューを配置する方法と、画像ビュー自体の動作方法の両方を完全に制御できます。前もって多くの作業が必要ですが、後で大きな見返りが得られます。

必要な主なオーバーライドは onMeasure() と onDraw() であり、もちろんカスタム コンストラクターでの初期化です。

あなたの質問から、あなたはスキルを持っているようですが、詳細についてサポートが必要な場合は戻ってきます。特に onMeasure() は、理解するのが難しい場合があります。

これはもちろん私の意見であり、YMMV です。

幸運を。

于 2012-12-05T17:03:33.197 に答える