Алгоритъм / шаблон за размер на екрана на 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 на целевото устройство е различно от устройството за разработка.

HTH

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