2016-06-24 3 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; 
} 
Смежные вопросы