1

API 10 を使用しています。

すべてのデバイスで同じように見えるレイアウトを作成したいと考えています。LinearLayoutwithを使用することでそれを実現できweightsます。それは完全に機能します。下の画像に見られるように、これはまさに私が達成したいものであり、完全に機能します:

ここに画像の説明を入力

しかし、発生する問題は次の 2 つです。

  • 1) ネストされた重みが原因で、パフォーマンスが低下しているという警告が表示されます。
  • 2)下の画像に示すように、親 LinearLayout の境界外にアニメーションを作成できません。

ここに画像の説明を入力

そこで、 でレイアウトを作成することにしましたRelativeLayout。しかし、主な問題は、LinearLayout や重みの使用など、すべてのデバイスで同じレイアウトを取得できないことです。私は 2 日間かけて解決策を探し、ADT のドキュメントを読みました。ドキュメントによると、 に合わせてImageViewsの倍率にスケーリングする必要があります。対応する @drawble フォルダーを作成し、ドキュメントにあるようにボタンのサイズを変更し、対応するフォルダー内に配置しました。結果は次のとおりです。3:4:6:8:12ldpi/mdpi/hdpi/xdpi/xxdpi

ここに画像の説明を入力

これは混乱であり、2 つの理由からまったく容認できません。

  • 1) 画面は、hdpi などの特定の密度の場合がありますが、特定の画面サイズのデバイスによって異なります。
  • 2) 要素に相対的な dp 単位を使用する場合、たとえば、親の上から、提供する値は画面サイズごとに異なります。LinearLayout のようにパーセンテージではありません。

では、ここからどこへ行けばよいのでしょうか。私の研究から、唯一の(またはそうでない)解決策は、さまざまな密度と画面サイズに合わせてさまざまなレイアウトを作成することであると結論付けました。などres/layout-mdpi-large/my_layout.xmlなど。しかし、画面サイズに基づいて、相対コンポーネントからのサイズと距離の dp を計算するにはどうすればよいでしょうか? このリストに頼る必要がありますか? これらはすべてのデバイスですか?:

ここに画像の説明を入力

ヒント、ベスト プラクティス、ワークフローのガイドなどはありますか?

4

0 に答える 0