2016-06-24 13 views
0

これは下のコードを使用していますが、高さと幅はすべての画面で異なります。共通高さ(サイズ= 34)と幅(サイズ= 34)Androidすべての解像度の一般的な高さと幅

public Drawable getDrawable(String source) { 
     int height = 34, 
       width = 34; 
     LevelListDrawable d = new LevelListDrawable(); 
     int id = _context.getResources().getIdentifier(source, "drawable", _context.getPackageName()); 
     Drawable empty = _context.getResources().getDrawable(id); 
     d.addLevel(0, 0, empty); 
     d.setBounds(0, 0, height, width); 
     return d; 
    } 

答えて

0

密度に依存しないピクセルを使用して、画面密度全体で共通のサイズを使用する必要があります。

int dips = 34; 
Resources r = getResources(); 
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dips, r.getDisplayMetrics()); 

、その後、幅と高さを設定するために同等のピクセルを使用し、

d.setBounds(0, 0, px, px); 
+0

ありがとうございました... –

0

あなたはアカウント内のデバイスの画面密度を取る必要があります。以下のソリューションを使用してください。

public Drawable getDrawable(String source) { 
    int height = 34, width = 34; 
    // Scale width and height based on screen density. 
    int scaledHeigh = (int) Math.ceil(height * _context.getResources().getDisplayMetrics().density); 
    int scaledHeigh = (int) Math.ceil(height * _context.getResources().getDisplayMetrics().density); 

    LevelListDrawable d = new LevelListDrawable(); 
    int id = _context.getResources().getIdentifier(source, "drawable", _context.getPackageName()); 
    Drawable empty = _context.getResources().getDrawable(id); 
    d.addLevel(0, 0, empty); 
    // Use the scaled width and height. 
    d.setBounds(0, 0, scaledHeight, scaledWidth); 
    return d; 
} 
関連する問題