1

実行時に特定の URL から hdpi、mdpi、ldpi のドローアブルをロードして使用することはできますか?

そうでない場合、どうすれば密度の問題を克服できますか?

4

3 に答える 3

3

画面密度に基づいて、画像の URL を設定できます。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch(metrics.densityDpi){
     case DisplayMetrics.DENSITY_LOW:
                url = "your_ldpi_url";
                break;
     case DisplayMetrics.DENSITY_MEDIUM:
                url = "your_mdpi_url";
                break;
     case DisplayMetrics.DENSITY_HIGH: 
                url = "your_hdpi_url";  
                break;
}

そして、その画像を取得して使用できます。

try {
    InputStream is = (InputStream) this.fetch(url);
    image = Drawable.createFromStream(is,"src");
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
于 2012-11-25T17:45:32.063 に答える
0

それは不可能だ。プロジェクトをビルドした後は、これを行うことはできません。これを使って:

res/drawable-ldpi/my_icon.png        // bitmap for low density
res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density
于 2012-11-25T17:03:50.380 に答える
0

本当に必要な場合は、実行時に画面密度を取得し、結果に応じてビットマップをダウンロードできます。ただし、これは複数の画面密度をサポートするには非常に非効率的な方法であり、避ける必要があります。

ダウンロードする必要があるイメージのサイズを適切に変更する必要がある場合(実行ごとに存在するイメージではなく)、BitmapDrawableクラスを見てください。

于 2012-11-25T17:13:51.390 に答える