API 10 を使用しています。
すべてのデバイスで同じように見えるレイアウトを作成したいと考えています。LinearLayout
withを使用することでそれを実現できweights
ます。それは完全に機能します。下の画像に見られるように、これはまさに私が達成したいものであり、完全に機能します:
しかし、発生する問題は次の 2 つです。
- 1) ネストされた重みが原因で、パフォーマンスが低下しているという警告が表示されます。
- 2)下の画像に示すように、親 LinearLayout の境界外にアニメーションを作成できません。
そこで、 でレイアウトを作成することにしましたRelativeLayout
。しかし、主な問題は、LinearLayout や重みの使用など、すべてのデバイスで同じレイアウトを取得できないことです。私は 2 日間かけて解決策を探し、ADT のドキュメントを読みました。ドキュメントによると、 に合わせてImageViews
の倍率にスケーリングする必要があります。対応する @drawble フォルダーを作成し、ドキュメントにあるようにボタンのサイズを変更し、対応するフォルダー内に配置しました。結果は次のとおりです。3:4:6:8:12
ldpi/mdpi/hdpi/xdpi/xxdpi
これは混乱であり、2 つの理由からまったく容認できません。
- 1) 画面は、hdpi などの特定の密度の場合がありますが、特定の画面サイズのデバイスによって異なります。
- 2) 要素に相対的な dp 単位を使用する場合、たとえば、親の上から、提供する値は画面サイズごとに異なります。LinearLayout のようにパーセンテージではありません。
では、ここからどこへ行けばよいのでしょうか。私の研究から、唯一の(またはそうでない)解決策は、さまざまな密度と画面サイズに合わせてさまざまなレイアウトを作成することであると結論付けました。などres/layout-mdpi-large/my_layout.xml
など。しかし、画面サイズに基づいて、相対コンポーネントからのサイズと距離の dp を計算するにはどうすればよいでしょうか? このリストに頼る必要がありますか? これらはすべてのデバイスですか?:
ヒント、ベスト プラクティス、ワークフローのガイドなどはありますか?