1

私はxxxhdpixxhdpixhdpihdpimdpiになり、サーバから5枚の異なる画像を取得します。 URLは次のようになります。描画可能なフォルダ内の画像を配置する方法を動的に

  • http://www.abctest.com/image-xxxhdpi.jpg

  • http://www.abctest.com/image-hdpi.jpg

私は描画可能なフォルダにこれらのイメージを置くことができる方法はあります。各装置がその密度に従って画像をピックアップするようにする。私はグーグルでこれを達成する方法を見つけることができませんでした。

または別のアプローチに進み、サーバーから1つの大きなイメージを取得すると、小さいデバイスでは遅延が発生します。

答えて

2

あなたは、このことによって、デバイスの密度を確認することができます。

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);  
int screenDensity = metrics.densityDpi; 

と密度に基づいて画像を選択してください。

編集したり、あなたもこれを行うことができます。

float density = getResources().getDisplayMetrics().density; 
// return 0.75 if it's LDPI 
// return 1.0 if it's MDPI 
// return 1.5 if it's HDPI 
// return 2.0 if it's XHDPI 
// return 3.0 if it's XXHDPI 
// return 4.0 if it's XXXHDPI 
3

これらの画像を描画可能なフォルダに入れる方法はありますか。

実行時ではありません。リソースおよびアセットは、実行時に読み取り専用です。

+0

おかげで、その後、私は何をすべきか?サーバーから '1'または' 5'backgroundイメージを取得します。もしそれらをdrawableに入れたら、画面密度ピクセルのチェックを作成する必要があります。また、チェックに基づいて別のイメージをロードするか、または他に良い方法がありますか? – Kirmani88

+0

@ Kirmani88: "画面の密度のピクセルのチェックを作成する必要があり、どのチェックに基づいていても、別のイメージをロードする" - 正しい。 [Chiragは密度を識別するコードを表示します](https://stackoverflow.com/a/45721489/115145)。 – CommonsWare

+0

ありがとう – Kirmani88

関連する問題