Android のレイアウトと画面サイズに関する多くの質問を読みました。私はここでAndroidのページを参照しました http://developer.android.com/guide/practices/screens_support.html#screen-independence
問題は、私が行方不明になっている間にあるように見えることです
私のアプリは、Gingerbread から Jelly bean デバイスまでをサポートしています。このように構成しています。
layout (for Gingerbread devices)
layout-sw320dp (for ICS/JB devies)
layout-sw600dp (for 7" tab's)
layout-sw720dp (for 10" tab's)
これらのフォルダーにすべてのレイアウト xml があり、Eclipse でグラフィカル レイアウトを使用し、デバイスごとに変更することで、デバイスのサイズに合わせて調整しました。私はすべてが大丈夫だと思った。
しかし、いくつかの重要なデバイスが欠けているようです。
例えば。私のRazrでは、Eclipseのグラフィカルレイアウトに示されているようなサイズではありません。Razr は 540x960 240dpi のデバイスで、式を使用して dp (dp = (px / dpi) * 160) を取得すると、360dp になりますよね?
つまり、sw320dp のレイアウト ファイルを使用する必要がありますね。何らかの理由で、収まらないいくつかのアイコンのサイズを変更してカットします。
次に、別の例として、HTC Thunderbolt を使用しているユーザーが、アプリをロードすることさえできないと言っています。Thunderbolt は 480x800 で 217dpi なら 353dp になりますよね? したがって、同じ sw320dp フォルダーからリソースをプルする必要があります。Thunderbolt からのスタック トレースは、このエラーを明らかにします
Caused by: java.lang.reflect.InvocationTargetException
Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f01006a a=-1}
そのリソースは public static final int background_gb=0x7f01006a; です。
これは、layout-sw320dp ではなく、layout フォルダーからレイアウトをプルするために発生しています。ヒープエラーが発生し続けたため、レイアウトフォルダーのレイアウトを画像ではなく色で背景を塗りつぶすように設定しています。nexus oneエミュレーターでテストすると、正常に動作します。
それで、私はこれを正しくしていないのではないかと考えるようになりました。他の開発者の apk を見ても、layout-sw320dp フォルダーが表示されません。しかし、それは私が最初に必要としたことをしているように見えました。それを省略した場合、私のレイアウト フォルダは 480x800 デバイスから S4 の 1080x1920 デバイスまでのレイアウトを制御します。1 つのレイアウト xml で非常に多くのデバイスをカバーする方法がわかりません。
私へのアドバイスはありますか?
電話のレイアウト フォルダ内のすべてをカバーする問題の例
ネクサスワン
ネクサス4
銀河S4