0

Android(API 10)用のアプリを実装しています。タブレット(おそらく)と携帯電話用のデザインはほとんどありません。前の文に関しては、少しばかげているように聞こえるかもしれません: 私の意見では、レイアウトは解像度ではなく、デバイスの物理的なサイズに応じて選択する必要があります。不十分なサイズの方法。物理的なサイズで分割するには、/res/layout- * フォルダーを使用する必要があります。同意しますか?

また、物理サイズに関する複数画面ガイドの定義について少し混乱しています。Android での物理的なサイズの意味を説明していただけます? dpi との相関関係はありますか?

ありがとう。

4

4 に答える 4

1

API レベル 10 の回避策は次のようになります。

  1. フラグメントを使用して設計できるように、SDK の互換ライブラリを使用します。

  2. Android 3以前のすべてが電話であると仮定します。たとえば、これには layout/* でレイアウト ファイルを使用します (オーバーライドされない限り、残りはそれに基づきます)。この仮定は基本的に、2009 年のオリジナルの Samsung Galaxy Tab 7" についてのみ間違っています。

  3. Android 3.xのすべてがタブレットであると仮定します(そうです)ので、必要に応じてタブレット固有のレイアウトを作成し、それらをlayout-v11(Android 3.1に固有のものがある場合はlayout-v12も)の下に置きます。タブレット固有のレイアウトは、フラグメントを異なる方法で配置したり、複数のフラグメントを同時に表示したりすることを意味する場合があります。

  4. すべての新しいもの (Android 3.2+) では、API レベル 13 の新しいものを使用できます。一部のレイアウトなどでは、layout-sw600dp/ などです。

于 2012-05-02T19:24:24.053 に答える
0

これには 2 つの方法があります。Android 1.6 (API 4) 以降では、ディスプレイの物理的なサイズを表す 4 つのレイアウト (小、標準、大、特大) があります。http://developer.android.com/guide/practices/screens_support.htmlで説明されているように、これらは次のものに対応します。

  • 特大画面は 960 dp x 720 dp 以上
  • 大画面は 640 dp x 480 dp 以上
  • 通常の画面は 470dp x 320dp 以上
  • 小さな画面は少なくとも 426 dp x 320 dp

これらは DPI ではなく DP で測定されることに注意してください。DPI は 1 インチあたりのドット数で、画面密度を指定します。DP (DIP とも呼ばれます) は、密度に依存しないピクセルです。再びガイドから:

密度非依存ピクセル (dp)

密度に依存しない方法でレイアウトの寸法または位置を表すために、UI レイアウトを定義するときに使用する必要がある仮想ピクセル単位。密度に依存しないピクセルは、160 dpi 画面上の 1 つの物理ピクセルに相当します。これは、「中」密度の画面に対してシステムが想定するベースライン密度です。実行時に、システムは、使用中の画面の実際の密度に基づいて、必要に応じて dp 単位のスケーリングを透過的に処理します。dp 単位から画面ピクセルへの変換は簡単です: px = dp * (dpi / 160)。たとえば、240 dpi の画面では、1 dp は 1.5 物理ピクセルに相当します。アプリケーションの UI を定義するときは、常に dp 単位を使用して、さまざまな密度の画面で UI が適切に表示されるようにする必要があります。

つまり、160 DP = 1". この基準を適用すると、次のことがわかります。

  • 特大画面は少なくとも 6 インチ x 4.5 インチ (対角線 7.5 インチ)
  • 大画面は少なくとも 4 インチ x 3 インチ (対角 5 インチ)
  • 通常の画面は少なくとも 2.9 インチ x 2 インチ (対角 3.5 インチ) です。
  • 小さな画面は少なくとも 2.6 インチ x 2 インチ (対角 3.3 インチ)

(なぜ選択がそれほど奇妙であるかはわかりませんが、それが彼らが定義したものです。)

(API 13) の Android 3.2 から、ここで説明されているように、より多くのオプションがあります: http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

ここでは、「最小画面幅」、「利用可能な幅」、または「利用可能な高さ」オプションを使用して、独自のカテゴリを定義できます。繰り返しますが、問題の単位は DP で、1/160 インチです。これらは、デバイスの 2 つの寸法のうち小さい方を指定することに注意してください。これは、API 4 で定義されている「大」サイズと「特大」サイズの中間になります。幅の測定方法に関するメモなど、このトピックに関する具体的なコメントが多数あります (通知バー)、ドキュメントを参照する価値があります。

于 2014-02-07T19:38:09.120 に答える
0

物理的なサイズは通常インチで測定され、実際のデバイスの画面サイズを示しているだけです (通常、電話では 3 ~ 4 インチ、タブレットでは 8 ~ 11 インチ)。

dpi、それと相関していません。Dpi は画面密度を表し、特定の領域 (通常は 1 平方インチ) に表示されるピクセル数です。これは、画面品質の尺​​度と見なすことができます。

解像度は、2 つの積によって与えられます。画面上の物理ピクセルの総数を表します。

最初の質問に戻ると、可能な限り密度に依存しないようにする必要があります。アプリは、異なる密度のデバイスで「同じように見える」必要があります。/res/layout- * フォルダーはこの機能を提供するように設計されており、システムはドローアブル リソースを適切なサイズにスケーリングし、アプリが任意の密度をサポートすることをマニフェストで宣言できます。

android:anyDensity="true"

ページhttp://developer.android.com/guide/topics/resources/providing-resources.html#BestMatchで、Android が最適なリソースを選択する方法を学ぶことができます。

于 2012-05-02T13:07:33.400 に答える
0

Android API 10 では、タブレットをターゲットにするための最良のオプションは、おそらくhttps://stackoverflow.com/a/5789916/1319155のようなコードを使用して画面の実際のサイズを区別し、サイズが 異なる場合は別のドローアブルをロードすることです。返された値が 6 (または「タブレット」として宣言する任意のサイズ) より大きい値でした。

サイズ フォルダ (つまり、レイアウト/大) だけを実際に使用できない理由は、フォルダが携帯電話とタブレットをうまく区別できないためです。kindle fire と galaxy nexus はどちらも「大型」デバイスと見なされる場合があります。

実際に dpi を使用できない理由は、それがどのタイプのデバイスであるか、画面上のピクセルがどれだけ「密」であるかを適切に反映していないためです。とにかく、ほとんどの新しい携帯電話は、タブレットよりもはるかに高密度です (1 インチあたりのピクセル数が多い)。

于 2012-05-02T15:06:33.013 に答える