Android →  Родзинки розробки під Android OS

Доброї пори дня! Я уже досить тривалий час цікавлюсь і займаюсь розробкою додатків на платформі Android™, тому і вирішив написати кілька статтей саме про розробку, так як україномовних ресурсів дуже мало ( принаймі я не знайшов ).
Розібратися в самій роботі не так і складно ( якщо хтось хоче можу написати статті ), тому звернув увагу на деякі елементи і особливості, які не зразу помітні.

Сам проект під Андроїд можна розділити на код та ресурси. З кодом усе і так зрозуміло, якщо ви писали на Java’і або C#’і то адаптуватися буде дуже легко. А щодо ресурсів дещо розкажу:
  1. Ресурси зберігаються в папках res ( визначені ресурси ), assets (невизначені ресурси). Взагалом можна добавляти і інші папки на зразок libs, fonts, myres – але вони будуть не визначені, тобто шлях до ресурсів задається вручні через стрічку. А от визначені сортуються і записуються в файл ресурсу R.java в папці res. Суть визначених в тому, що звертатися до них можна через об’єкт Resources і ссилатися за допомогою індентифікаторів на зразок R.id.button, R.string.title_name , також дозволено звертатися до системних ресурсів через індифікатори типу android.R.id.icon, android.R.string.yes тощо.
  2. Кожен ресурс поміщається в свою папку (drawable, values, layout,xml та інші), і може містити атрибути наприклад drawable-hdpi –позначає що малюнки в папці будуть використовуватися для телефонів з 160dpi, або values-land – ресурси використовуються тільки коли телефон повернутий горизонтально.
  3. Деякі об’єкти можна визначати в файлі .xml. До них належать layout – використовується для визначення розмітки і розтановки елементів на вікні. drawable - можуть задавати об’єкти типу DrawableState, DrawableShape та інші.
Приклад вигляду розмітки layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<Button
android:id="@+id/btnFinish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

<AutoCompleteTextView
android:id="@+id/atvFinish"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/finish_station"
android:background="@drawable/text_input_selector"
android:layout_toRightOf="@+id/btnFinish" />

</RelativeLayout>

<Button
android:layout_height="wrap_content"
android:enabled="false"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/button_search_selector" />

</LinearLayout>


Задання об'єкту button_search_selector, який використовується в попередньому файлі:

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/browse_focused" />
<item android:state_pressed="true" android:drawable="@drawable/browse_pressed" />
<item android:drawable="@drawable/browse" />
</selector>


Те саме стосується і файлів локалізації. якщо поставити після назви папки -ru - ресурси в ній будуть використовуватись якщо на телефоні стоїть російська локалізація, якщо -uk - українська локалізація.

Типи даних, які можуть зберігатися в ресурсах:
<string name=""/>
<integer name=""/>
<boolean name=""/>
<string-array name=""> <item></item> </string-array>
<integer-array name=""> <item></item> </integer-array>
<style name=""><item></item></style>


більше про типи ресурсів можна знайти на оф. сайті d.android.com

Поки що все, якщо вам було цікаво можу продовжувати наступними серіями статтей. Дякую за увагу

доповнення:

UPD1: поміняв заголовок

коментарі:

+1MFX 06.07.2010 04:58
Ймовірно мались на увазі родзинки.
tercius 06.07.2010 05:59
підтримую пропозицію з перейменуванням )
+1Bossly 06.07.2010 07:17
перейменував
+2famousart 12.08.2010 04:36
для початківців стаття супер!
дякую і чекаю наступних статей на цю тему від автора

додати коментар: