0

画面にいくつかの TexView を表示しています。テキストだけでなく、描画可能な画像も含まれています。私の質問は、以下の画面解像度に応じてドローアブルをスケーリングする方法です。現在実行中のコードは次のとおりです。

Drawable dr = getResources().getDrawable(R.drawable.image);
        Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
        Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, 35, 35, true));
        textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);

ここでは比率 35 を使用しましたが、より大きな画面でアプリケーションを実行すると、画像が小さく見えます。

異なる画面サイズに合わせて画像をスケーリングするための提案はありますか?

4

1 に答える 1

1

まず、密度スケールを取得します。

DisplayMetrics dm = new DisplayMetrics();
mainContext.getWindowManager().getDefaultDisplay().getMetrics(dm);
float densityScale = dm.density;

次に、使用する前に、必要なサイズをdensityScale値でスケーリングします。

float scaledWidth = 35 * densityScale;
float scaledHeight = 35 * densityScale;

Drawable dr = getResources().getDrawable(R.drawable.image);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
Drawable d = new BitmapDrawable(this.getResources(),Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true));
textView.setCompoundDrawablesWithIntrinsicBounds(d, null,null,null);

これは、35 が 160dpi の正しいサイズであると想定しています。そうでない場合は、35 を 160dpi に適した値に変更する必要があります。

複数の解像度/密度のサポートの詳細については、こちらを参照してください。

于 2013-07-21T11:59:45.947 に答える