6

私は試してみました:

values-mpdi, values-land-mpdi, values-hpdi and values-land-hdpi

これは電話の画面で問題なく動作しますが、問題は、7 インチのタブレットが values-mdpi と 10 インチのタブレットからも値を取得する可能性があることですが、結果は同じではありません。画面サイズが原因だと思います (ただし、同じ解像度と同様の密度です)ので、試しました:

values-sw600dp-hdpi
values-sw600dp-port-hdpi
values-sw600dp-mdpi
values-sw600dp-port-mdpi
values-sw720dp-hdpi
values-sw720dp-port-hdpi
values-sw720dp-mdpi
values-sw720dp-port-mdpi

しかし、必要なリソースが見つからないため、アプリがクラッシュします....

どんな助けでも大歓迎です

前もって感謝します

4

2 に答える 2

17

基本的に、Android アプリケーションがサポートする必要がある主なデバイス カテゴリは 3 つあります。

  1. ハンドセット (電話)
  2. 小型タブレット (7 インチ カテゴリ)
  3. 大型タブレット (10 インチ以上)。

Android 3.2 より前の修飾子:

デバイスごとにリソースを分離するための修飾子を作成するGoogle の最初の試みは、少数のサイズのバケット ( small、normal、large、xlarge )を作成することでした。当初、ハンドセットデバイスは小型/標準のカテゴリにあり、市場に出回った最初の7インチ タブレットは大型で、最初の10 インチ タブレットは特大サイズだったため、これはうまくいきました。

Android 3.2 以降の修飾子:

しかし、新しい画面サイズのデバイスが市場に登場するにつれて、デバイスがどこに存在するかについての境界線が曖昧になり始めました。Android 3.2 では、デバイスの現在の幅/高さまたは「最小」幅に基づいてリソースを選択する新しい修飾子という形で、この問題に対する新しい解決策が提示されました。後者は、デバイスのサイズを画面の最も短い辺の幅 (密度に依存しないピクセル、または dp) で表すことによる新しい指定です。

新しいパラダイムを使用すると、小型タブレットを最小幅 600 dp、大型タブレットを 720 dp と定義するのが一般的になり、ハンドセットはその線より下にあるすべてのものになります。

最小サポートが 3.2 未満で、ターゲットが 3.2 以上の場合に修飾子を使用する Android 3.2 以上を最小としてターゲットとするアプリケーションの場合、この新しいシステムはうまく機能します。ただし、ハンドセットやタブレットでユニバーサルに動作するアプリケーションを作成したい開発者が、Android の最小バージョンを 2.2 以下、またはせいぜい 2.3 でサポートする必要がある場合は、古いサイズのディレクトリに各リソースの複製を作成します。修飾子を削除し、対応する最小幅修飾子を持つ別のディレクトリに配置します。

たとえば、同じdimens.xmlファイルをvalues-largeとに保持しますvalues-sw600dp。したがって、Android バージョン 3.2 未満で実行されているデバイスは から値を取得values-largeし、Android バージョン 3.2 以上で実行されているデバイスは から値を取得します。values-sw600dp

于 2014-06-25T06:21:34.290 に答える
3

//これは API レベル 3.2 以降で実行する必要があります。

<3.2 の場合は、通常の値 (大) と値 (大) を宣言する必要があります。

于 2013-01-02T07:59:19.890 に答える