2013-08-30 3 views
0

Я делаю приложение для головоломки с анимацией. Анимации выглядят намного быстрее на маленьких экранах, а затем на больших экранах. Я предполагаю, что это происходит потому, что на большем экране они перемещаются на большее расстояние.Android: Есть ли способ получить размер экрана?

Я собирался изменить скорость воспроизведения в зависимости от размера экрана. Я получаю размер экрана в пикселях, есть ли способ получить его в dpi?

+0

См: http://stackoverflow.com/questions/8295986/how-to-calculate-dp-from-pixels-in-android-programmatically – powerj1984

+0

Вы блокируете анимацию с определенной частотой кадров? Если нет, скорость вашей анимации, вероятно, зависит от того, насколько быстро устройство может нарисовать объект (ы), о котором идет речь. –

+0

Проблема заключается в том, что для перемещения объекта с правой стороны на левую сторону экрана на оба небольших экрана (на 2 дюйма меньше, или на больших экранах с 8 дюймами в длину) требуется столько же времени.) –

ответ

0

вы можете использовать это:

Display display = getWindowManager().getDefaultDisplay(); 
Point sSize = new Point(); 
display.getSize(sSize); 
int width = sSize.x; 
int height = sSize.y; 

вы также можете использовать это для дюймов:

float mXDpi; 
    float mYDpi; 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    mXDpi = metrics.xdpi; 
    mYDpi = metrics.ydpi; 
    float mMetersToPixelsX = mXDpi/0.0254f; 
    float mMetersToPixelsY = mYDpi/0.0254f; 
+0

Привет, Спасибо, что приняли время, чтобы ответить на мой вопрос, но я пытался получить размер экрана в дюймах, а не в пикселях. Есть ли способ сделать это????? –

0

Есть ваш ответ: Get screen dimensions in pixels. Это, однако, может не решить ваши проблемы. Вы должны проверить скорость анимации, потому что я уверен, что это не из-за различий в дисплеях. Вы должны опубликовать код для лучшей помощи. Надеюсь это поможет.

0

Если вы хотите, размеры дисплея в пикселях можно использовать GETSIZE:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

Если вы не в деятельности вы можете получить дисплей по умолчанию с помощью WINDOW_SERVICE:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 

Перед тем как получить getSize (в API-интерфейсе 13), вы можете использовать getWidth и GetHeight методы, которые в настоящее время устарели:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); // deprecated 
int height = display.getHeight(); // deprecated 

Приглашение от: How to get screen dimensions

0
Display display = getWindowManager().getDefaultDisplay(); 

int width = display.getWidth(); 
int height = display.getHeight(); 

ИЛИ

Display display = getWindowManager().getDefaultDisplay(); 
Point sSize = new Point(); 
display.getSize(sSize); 
int width = sSize.x; 
int height = sSize.y; 
Смежные вопросы