2013-12-10 4 views
1

В моем приложении у меня есть всплывающее диалоговое окно.Изменение разрешения влияет на диалог

final Dialog dialog = new Dialog(context); 
dialog.setContentView(R.layout.my_dialog); 
dialog.getWindow().setLayout(Dialog.WIDTH,Dialog.HEIGHT); 
dialog.show(); 

И в моем классе диалога у меня есть

public static final int WIDTH = 1000; 
public static final int HEIGHT = 700; 

Так он прекрасно работает на моем планшете (ASUS Transformer Pad TF300T) Но теперь у меня есть еще один планшет (ASUS ME302C) и мои диалоговые размеры маленький! Но оба они имеют одинаковый размер экрана.

+0

Размер экрана может быть одинаковым, но имеют ли они одинаковое разрешение? Если у вас есть диалоговое окно размером 500x500 пикселей, оно будет меньше на устройстве с разрешением 1024x768, чем на устройстве с разрешением 800x600. –

+0

Да, это другое. Итак, как я могу написать свой код, чтобы избежать подобных ситуаций для моего диалога? – GigantoMK

ответ

2

Вы должны использовать dp вместо px ...
Если вы не можете, то вы делаете это по коду, вам нужно найти плотность и масштаб устройства по этому коэффициенту умножения.

ldpi дисплеи имеют коэффициент 0,75
MDPI (по умолчанию) дисплеи имеют коэффициент 1,0
ИПЧР дисплеи имеют коэффициент 1,5
xhdpi дисплеи имеют коэффициент 2,0
xxhdpi дисплеи имеют коэффициент 3,0
xxxhdpi дисплеи имеют коэффициент 4,0

Вот метод, который делает это для вас:

private final float getDensityScale() 
{ 
    final DisplayMetrics metrics = 
     Resources.getSystem().getDisplayMetrics(); 
    return metrics.density; 
} 

Умножьте значения по этому масштабному коэффициенту, и все готово.

+0

Отлично !!!!! Большое спасибо @ Klaus66 – GigantoMK

Смежные вопросы