web-dev-qa-db-ja.com

androidの異なる値フォルダー

アプリに異なるvaluesフォルダーを作成しています(values, values-ldpi, values-mdpi, values-hdpi, values-xhdpi, values-nodpi, values-w360dp-mdpi)。ただし、同じカテゴリに属する​​一部のデバイス。ただし、画面サイズが異なります。しかし、私は デバイスの密度に応じてフォントサイズを与える を参照してください。これでは、@ PankajSharmaが提供する回答は、

res/values/dimens.xml    
res/values-small/dimens.xml    
res/values-normal/dimens.xml    
res/values-xlarge/dimens.xml

私は私の方法と他の方法の違いは何ですか? @PankajSharmaが提供する答えは簡単だと思います。また、どちらの方法が良いか知りたいですか?

41
John R

使用しているアプローチは有効なアプローチですが、少し時代遅れです。 HoneyCombから、このすべてを修正する 新しい方法 があります。リソースフォルダーは次のようになります。

enter image description here

私が投稿したリンクを参照し、Smallest Widthの概念に精通してください。

お役に立てれば :)

編集:この投稿に追加して、dimens.xmlで何らかの標準化を確立してみてください。次のようなものです。

enter image description here

これにより、コードの保守が容易になり、さらにdimenフォルダーの数が減ります。通常、values-hdpivalues-xhdpiなどを持つのではなく、values-sw480dp-xhdpiのようなファイルに調整する値がもっとあるかもしれませんが、これもすべてコンテキストに依存します。

74

レイアウトフォルダーに4.7インチ(hdpi)のデフォルト画面、および値フォルダーに寸法のデフォルト画面用の単一レイアウトを作成します。これはあなたのスーパーセットです。

次に、7inchデバイス用のレイアウトが必要だとしましょう。縦向きで7インチのvalues-sw600dpフォルダーを作成する

ここで、10インチデバイスのレイアウトが必要だとしましょう。values-dw720dpフォルダーを作成します。

注:-横向きの場合は、フォルダ名の前に「-land」を追加します。

次に、Xperia SP(4.7 'およびXHDPI)およびNexus 5(5 "およびXXHDPI)などの新しいデバイスがあるとしましょう。

これらの場合、values-xhdpiおよびvalues-xxhdpiフォルダーを作成し、同様にランドスケープの向きに-landを追加できます。

フォルダを作成する方法のポイントを得たことを願っています。

これで、スーパーセットがvaluesフォルダーに定義されました。ほとんどのディメンションはここからのみ使用されます。次に、他のデバイスでアプリを実行します。不一致が発生する場合は、その特定のディメンションをそれぞれの値フォルダーに追加するだけです

どのフォルダからレイアウト、画像が使用されているかを確認するには、私のトリックを使用してください。

5つの同じ文字列を作成し、次のようなすべての値フォルダーを入れます。-デフォルト画面画面4.7 XHDPI画面MDPI画面

5つのドローアブルフォルダーを作成します。それらのほとんどは既にそこにあります。

enter image description hereenter image description hereenter image description hereenter image description hereenter image description here

これは私のresフォルダの外観です。4.7画面以上のすべてのデバイスをサポートしています:-

enter image description here

16
Rahul Gupta