Алгоритм / шаблон размера экрана Android

Я ищу алгоритм или шаблон для расчета того, где объекты могут быть размещены в разных разрешениях. Пока у меня есть размер экрана X и Y, но я не уверен, как превратить его в вычисление, которое поместит что-то вроде drawText() в место на экране независимо от размера экрана.

Я подумал, что, возможно, с процентами будет проще работать. У меня есть программа, которая рисует текст на экране в верхнем левом углу, указывая, в какой позиции был затронут экран.

когда я запускаю это на эмуляторе, с

drawText(информация, 10,10, краска);

он отлично отображается, но когда я запускаю его на своем телефоне (Droid 2 Global), верхняя часть текста обрезается.

Короче говоря:

Есть ли способ нарисовать что-то на экране (используя SurfaceView), которое останется в одном и том же месте при нескольких размерах экрана / dpi?

Спасибо за ваше время.


person Android Student    schedule 17.09.2011    source источник


Ответы (2)


Это не идеальное решение, которое я видел до сих пор.

Я столкнулся с этой проблемой, указав позицию для конкретного элемента для определенного соотношения экрана (собственное разрешение экрана в эмуляторе), затем пересчитав его позицию и масштабируя ее вверх/вниз при запуске на другом размере экрана.

  displayXpos =  constDevelopmentScreenXpos (targetDeviceScreenHeight/constDevelopmentScreenHeight) etc..
  displayXScale = similarAlgorithm

Это не самое лучшее, но это дает вам некоторое представление.

Кроме того, я заполняю некоторую «неопределенную» область фоном и предпочитаю не обращать на это внимания, когда соотношение экрана X: Y целевого устройства отличается от устройства разработки.

ХТН

person datalost    schedule 17.09.2011

да, лучше использовать расчет в процентах

сначала получите общий размер экрана, затем рассчитайте процент на нем и поместите элемент управления на основе расчета

чтобы получить доступный размер

Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int height= mDisplay.getHeight();
person Mohammed Azharuddin Shaikh    schedule 17.09.2011