Використання бібліотеки Android support percent на прикладі PercentRelativeLayout

Коли я вперше зіткнувся з розміткою макетів в Android, з усіма цими FrameLayout, LinearLayout, RelativeLayout. З поняттями ваги і гравітації для елементів інтерфейсу. Я дивувався, чому не можна було зробити так, як давно вже робиться в html. Де є можливість вказати розмітку у відсотках? І ось врешті така нагода з'явилася. З'явилася вона, звичайно, не вчора, але я на неї натрапив тільки зараз, і статей на хабре, з чим це їдять не знайшов.

image

Отже, що ж потрібно для того, щоб помацати це щастя? Потрібно зовсім небагато, відкрити build.gradle свого додатку, додати туди рядок

dependencies {
compile 'com.android.support:percent:23.4.0'
}

і виконати синхронізацію.

Всі, всі принади розмітки у відсотках вам доступні, принаймні для minSDK 14 (менше я не перевіряв).

Порожній макет у нас буде виглядати так:

<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@android:style/Theme.Black">

</android.support.percent.PercentRelativeLayout>

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

  • layout_widthPercent
  • layout_heightPercent
  • layout_marginPercent
  • layout_marginLeftPercent
  • layout_marginTopPercent
  • layout_marginRightPercent
  • layout_marginBottomPercent
  • layout_marginStartPercent
  • layout_marginEndPercent
  • layout_aspectRatio
При цьому потрібно вказувати префікс android:layout_widthPercent, app:layout_widthPercent, відповідно з зазначеним у заголовку макета простором імен. Значення цих атрибутів призначаються у відсотках, з обов'язковим зазначенням знаку %.

Власне призначення майже всіх атрибутів інтуїтивно зрозуміло, ширина, висота і відступи у відсотках від батьківського макета.

Уточнити варто мабуть тільки layout_aspectRatio. Цей атрибут дає вам можливість задавати співвідношення сторін елемента. Наприклад, ви хочете створити квадратну кнопку, яка займає 15% від ширини екрана. Ви вказуєте layout_widthPercent = «15%», якщо ви вкажете layout_heightPercent = «15%» кнопка у вас вийде прямокутна. Тому, потрібно layout_heightPercent не вказувати, а вказати layout_aspectRatio = «100%». У цьому випадку ширина буде обчислюватись за формулою: layout_heightPercent * layout_aspectRatio /100.

Ще може виникнути питання, чим layout_marginStartPercent відрізняється від layout_marginLeftPercent, і layout_marginEndPercent від layout_marginRightPercent відповідно? Тут все просто, це для забезпечення локалізації інтерфейсу, для тих мов, які читаються зліва на право, Start = Left, а для тих, які справа наліво Start = Right.

PercentRelativeLayout є спадкоємцем RelativeLayout, тому поряд з Percent-атрибутами, ви можете використовувати атрибути RelativeLayout, наприклад, можна вказати висоту кнопки android:layout_height=«wrap_content» а ширину app:layout_heightPercent = «25%».

Звичайно PercentRelativeLayout не є панацеєю, наприклад при перевертанні екрану можуть вийдуть цікаві, і не приємні спецефекти. Спробуйте самі, а я для себе зробив висновок, що при використанні PercentRelativeLayout, обов'язково потрібно робити Landscape версію макета.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.