Android: AbsoluteLayout?

Я новичок в Android. Мне нравится иметь свободный диапазон объектов рисования, где бы я ни захотел. Поэтому я использую Absolute Layout. Я получаю сообщение, говорящее, что использую другой макет. И я читал, что это связано с разным разрешением разных телефонов. Мой вопрос заключается в том, что это единственная причина в том, что вы не используете Абсолютную компоновку? Я сделал метод, который использует метрики для настройки пикселей.

public int widthRatio(double ratioIn){ DisplayMetrics dm = new DisplayMetrics(); //gets screen properties getWindowManager().getDefaultDisplay().getMetrics(dm); double screenWidth = dm.widthPixels; //gets screen height double ratio = screenWidth/100; //gets the ratio in terms of % int displayWidth = (int)(ratio*ratioIn); //multiplies ratio desired % of screen return displayWidth; } //method to get height or Ypos that is a one size fits all public int heightRatio(double ratioIn){ DisplayMetrics dm = new DisplayMetrics(); //gets screen properties getWindowManager().getDefaultDisplay().getMetrics(dm); double screenHeight = dm.heightPixels; //gets screen height double ratio = screenHeight/100; //gets the ratio in terms of % int newHeight = (int)(ratio*ratioIn); //multiplies ratio by desired % of screen return newHeight; } //sets size of any view (button, text, ...) to a one size fits all screens public void setSizeByRatio(View object, int width, int height){ LayoutParams params = object.getLayoutParams(); params.width = widthRatio(width); params.height = heightRatio(height); } 

Поэтому, если я говорю setSizeByRatio (Button, 10, 25); Он установит ширину кнопок на 10% от ширины экрана и высоту до 25% процента экрана.

Существуют ли телефоны, на которых не работают Абсолютные макеты? Вызывает ли этот макет какие-либо другие проблемы?

Причина, по которой AbsoluteLayout устарела, заключается в том, что у вас есть альтернативы в LinearLayout или GridLayout, которые делают то же самое и многое другое. Кажется, что вы пытаетесь вычислить позиции, основанные на абсолютных позициях и количестве пикселей. Такой подход следует избегать из-за проблем с размерами экрана и размерами экранов.

Прочтите ссылку, предоставленную @amiekuser, и сосредоточьтесь на понимании того, как наилучшая практика. Некоторые подсказки создают изображения для папок ldpi, mdpi и hdpi, используя блок для dpi (плотность независимых пикселей) вместо необработанных пикселей и как тестировать ваше приложение на нескольких размерах экрана и плотности с помощью эмулятора.

Редактировать:

Чтобы установить x- и y-позицию View, вы должны использовать LayoutParams. См. Этот вопрос о том, как установить TopMargin и LeftMargin для просмотра с помощью LayoutParams.

Android-телефоны выпускаются во многих форм-факторах, то есть не только он сильно варьируется в зависимости от размера экрана (2,7 ", 3,2", 3,7 "….), но и с точки зрения разрешения (480X800, 480X848 и т. Д.). Используйте AbsoluteLayout. Фактически, он устарел в новых версиях api.

Ссылка ниже объясняет все это в деталях:

http://developer.android.com/guide/practices/screens_support.html

Проверьте раздел «Лучшие практики».