web-dev-qa-db-ja.com

いくつかのAndroid画面サイズのレイアウトをどのように作成しますか?

私は複数の画面サイズで機能するレイアウトの構築についていくつかの調査を行いましたが、いくつかの説明を探しています。

3つの画面サイズ(小、中、大)ごとに個別のレイアウトファイルを作成するのは一般的な方法ですか、それとも簡単な方法で実現できますか?

私は大画面デバイスでプロジェクトをテストしており、パディングやマージンなどにDIP(密度非依存ピクセル)を使用しているにもかかわらず、小さな画面で表示すると、それが途切れてしまいます。中サイズの画面用にプロジェクトを設計してから、Androidで適切にスケーリングできるようにする必要がありますか?

これが良い質問かどうかはわかりませんが、複数の画面サイズ用に設計するための一般的な方法を探しています。職業はなんですか?

編集:これに加えて、たとえば、画面の下部に40dipのボタンがあるとします。文字どおり40dipと書くか、40 * screenWidth/blahblahなどのピクセル演算を使用する必要があります。ユーザーの画面サイズに応じて拡大縮小するように? UIの経験は限られています...

28
joepetrakovich

画面サイズに関しては、物理的なサイズと密度という2つの軸を考慮する必要があります。密度は、必要に応じてディップとスケーリングされたリソースで測定値を提供することによって処理されます。ただし、密度は必ずしもサイズを意味するわけではなく、その逆も同様です。メカニズムの詳細については、 http://developer.Android.com/guide/practices/screens_support.html を参照してください。

サポートする各画面resolutionに基づいて異なるレイアウトを使用することは一般的ではなく、推奨されませんが、異なるサイズのクラス(小中大)。異なるサイズの画面では、アプリに応じて特定のナビゲーション要素を追加、削除、または再配置することでメリットが得られる場合があります。

特定のサイズクラス内では、レイアウトが正確な画面解像度の変動を許容することを確認する必要があります。 Falmarriが提案したように、相対的なレイアウト、重み、およびその他の利用可能なツールを使用して、レイアウトを適切に拡大します。

14
adamp

一般的なルールは、レイアウトxmlのサイズ定義に密度独立ピクセル(ディップ)を使用することです。そうすることで、私はすべての範囲のデバイスの唯一のレイアウトを持っています。分割する必要があるのはグラフィックです。そのために、「drawable-ldpi」、「drawable-mdpi」、「drawable-hdpi」の3つの異なるドローアブルディレクトリを使用します。これは、さまざまな画面密度で画像が同じサイズ(たとえば、ミリメートル単位)になるようにするために行われます(画面サイズが同じであると仮定します-たとえば、通常)。次のようにスケーリングする必要があります。

  • ドローアブル-hdpi:150%
  • ドローアブルmdpi:100%
  • ドローアブル-ldpi:75%

おそらくそれは悪いアドバイスです。ただし、 Googleの画面サイズと密度のグラフ を見ると、市場にはそのようなデバイスがほとんどないため、大画面の徹底的なテストに追加の努力を費やさないことを決定できます。

3
Vit Khudenko

個別のレイアウトを作成しないことは、実際には一般的な方法ではありません。引き伸ばすことができない画像がある場合にのみ、それが本当に推奨される方法です。

小さい/大きい画面のデバイスで表示すると、スタッフは常に少し引き伸ばされた/圧縮されたように見えます。これは、異なるサイズの画面の定義の一種です。相対レイアウトを使用して、Androidが特定のピクセル数を制御できるようにする必要があります。

1
Falmarri