同じ解像度とPPIを持つ2つのAndroidデバイスがあります。しかし、Samsung Tab 4の1つのデバイスに対してアプリケーションを実行すると、リソースは通常のレイアウトフォルダから呼び出されます。しかし、サムスンJマックスである別のデバイスでは、それはlayout-600フォルダからです。なぜ、これらのデバイスで異なる動作をしていますか?どんな提案も大歓迎です。異なるレイアウトフォルダから呼び出されるAndroidリソース
答えて
layout-600
の600
修飾子は、画面のサイズがdp
であり、必ずしもDPIまたは画面解像度がピクセルである必要はありません。画面のアスペクト比や対角線サイズなどの他の要因も考慮されます。
あなたは、プログラムによってこのpostで命令を使用してdp
であなたの画面の大きさを決定することができます。
Configuration configuration = yourActivity.getResources().getConfiguration();
int screenWidthDp = configuration.screenWidthDp; //The current width of the available screen space, in dp units, corresponding to screen width resource qualifier.
私はscreenWidthDp
の値は、それらのデバイス間で異なっていることを賭けます。
これは、デバイスからデバイスまでのAndroidデバイスの密度ピクセル(dp)に依存し、そのAndroidデバイスに応じて自動的にどのレイアウトフォルダからUIが表示されるかを検出します。ここに小さな情報があります:
異なる画面サイズのUIを設計するときには、それぞれのデザインに最低限のスペースが必要であることがわかります。 したがって、上記の画面サイズの一般化された はそれぞれ、システムによって と定義された関連最小解像度を持ちます。これらの最小サイズは「dp」単位で表示されます。つまり、レイアウトを定義するときに同じ単位の を使用する必要があります。 は、画面密度の変更を心配する必要がありません。
XLARGEスクリーンは、少なくとも960dp X 720dp
大画面少なくとも 640dp X 480dp
通常画面である少なくとも470dp X 320dp
小画面 、少なくとも426dp X 320dpされています
6つの一般化された密度のセット:
LDPI(低)〜120dpi
MDPI(中) 〜160dpi
hdpi(高)〜240dpi
xhdpi(超高)〜320dpi
xxhdpi (細胞外超高画質)〜480dpi
xxxhdpi(超過超高画質)〜640dpi
詳細情報についてはGoogleドキュメントをお読みください:https://developer.android.com/guide/practices/screens_support.html
あなたはThis Google Articleを確認してください。
この場合、サムスンはもう少し驚きがあります。算術演算を行うと、その画面には170 DPIがあり、これはAndroidデバイスの中で最も密度の高いものではありません。それでも、それは "hdpi"(そして "大きな"画面サイズを持っている)と自分自身を宣言します。理由は簡単です:それはそのように見えます。
つまり、Tab
のppiは170です(220ppiではありません)。その結果、幅800、170ppi - > 800 /(170/160)> 600です。そのため、Samsung Tab 4リソースは "layout-sw600dp"フォルダからのものです
- 1. AndroidユニットテストからFirebase APIが呼び出されない
- 2. キーが呼び出されるたびに異なる値を出力する
- 3. Android onLocationChangedが呼び出されない
- 4. .netからネイティブコードを呼び出すと、それがネイティブプログラムから呼び出されたのと異なる結果になるのはなぜですか?
- 5. AudioTrack:スレッドから呼び出される
- 6. RMarkdownの `render`動作は、RStudio Serverから呼び出されるのか、PHPシェルから呼び出されるのかによって異なります。
- 7. 一度呼び出された後にAndroidタブビューから呼び出されたwebviewをリフレッシュする方法
- 8. パラメータと異なるオブジェクトで呼び出された同じメソッド
- 9. 異なるViewControllersからUIAlertViewDelegateメソッドを呼び出す
- 10. 異なるクラスから実行可能メソッドを呼び出す
- 11. 異なる反応ファイルから関数を呼び出す
- 12. 異なるクラスとファイルから関数を呼び出す
- 13. Truffle Solidity - 異なるコントラクトからの呼び出し関数
- 14. 異なる* .aspx.csページからのAsp.Net呼び出し関数
- 15. 異なるデータフレームから連続した行を呼び出す
- 16. 異なるスレッドから呼び出した場合のクエリタイムアウト
- 17. 角度の異なるコントローラからの呼び出し方法
- 18. 異なるクラスからインスタンスメソッドを呼び出す
- 19. HTMLの異なるファイルからJS関数を呼び出す
- 20. OpenCartの異なるモジュールから同じイベントを呼び出す
- 21. 異なるスレッドからメソッドを呼び出す
- 22. 異なるモジュールから関数を呼び出す - 参照エラー
- 23. コントローラー内の異なるJSファイルからフィルターを呼び出す
- 24. 異なるテーブルからidsを呼び出す方法
- 25. 異なるファイルからJavaScriptコンストラクタメソッドを呼び出す -
- 26. 異なるクラスのPythonからコンストラクタを呼び出す
- 27. 異なるクラスから呼び出すC#(WPF)メソッド
- 28. textFieldShouldBeginEditingが呼び出され、textFieldDidBeginEditingが呼び出されない
- 29. HTMLフォームからサーブレットを呼び出すがサーブレットは呼び出されない
- 30. Androidカスタムビュー、invalidate()を呼び出した後にonDrawが呼び出されない