Разрешение AVD отличается от ожидаемого

У меня есть несколько AVD с немного разными разрешениями (480x854) и (480x800). Когда я использую методы для получения размера холста (getWidth()/getHeight()), они правильно сообщают, что это соответственно 480x854.

Дело в том, что если я запускаю код ниже, изображение исчезает с экрана:

SweepGradient sweepGrad = new SweepGradient(350, 350, 
new int[] { Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }, null);
circlePaint.setShader(sweepGrad);
canvas.drawCircle(350, 350, 50, circlePaint);

Значения 350, 350, 50 в последней строке означают: координату x, координату y и радиус окружности. Также выяснилось, что максимальное значение «x» для круга радиуса 50, которое будет полностью видимым, составляет 270 (это означает, что каким-то образом размер холста x был 320).


person Mathew    schedule 11.09.2012    source источник


Ответы (1)


Боюсь, что я задал неправильный вопрос. Я протестировал приложение на реальном устройстве с таким же разрешением, и оно тоже оказалось неверным.

Сутью для этого было добавление строки:

<supports-screens android:anyDensity="true"/> 

в вашем AndroidManifest.xml.

Последний вопрос будет. Зачем ему эта строка? Кажется, что в моем случае 1 пиксель в холсте будет равен 1,5 пикселя реального устройства. Также я думаю, что это не правильное решение проблемы, так как добавление указанной строки влечет за собой огромные последствия (что, если мое приложение на самом деле не поддерживает какую-либо плотность, а я все еще хочу поместить какое-то изображение в точную координату?).

Вот ответ: http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations

person Mathew    schedule 11.09.2012