Академический Документы
Профессиональный Документы
Культура Документы
Антон Курицын
javster@i-free.com
30.10.2010
Актуальность разработки под
Android
•
Широкий спектр устройств,
ориентированных на разные секторы
рынка
•
Постоянное развитие Android OS
•
Android замещает собой часть рынка J2ME
•
Возможность продажи продукта на Google
Market
11/2/10
Рынок труда для Android-
разработчиков
Компании, выпускающие собственные
продукты i-Free, Quickoffice, SPB Software,
Yota, e-Legion, DataArt + компании на
outsourcing
Десятки вакансий на рынке в Петербурге
СЕЙЧАС
Junior Developer: 20-50 тысяч рублей
11/2/10
Некоторые нюансы, связанные с
переходом на платформу Google
•
Гораздо более обширные возможности при
Android
разработке UI на Android-платформе, по
сравнению с J2ME, Blackberry, Windows Mobile и
Symbian
•
Вследствие этого, возможность создавать гораздо
более комплексные интерфейсы не прибегая
напрямую к рисованию на Canvas
•
Наличие одного потока для взаимодействия с UI
11/2/10
Организация интерфейса
•
Иерархическая
структура
интерфейса
•
View – базовый
класс для
представления
элементов
интерфейса
11/2/10
View: общая информация
•
View занимает
прямоугольную область
экрана
•
Позиционирование View
происходит относительно её
предка
•
Существует механизм Parent view Child view
расположения View (measure
– layout этап)
11/2/10
Способы задания расположения
элементов
•
Посредством объявления этих элементов в XML
•
Создавая объекты непосредственно в коде
•
Используя одновременно оба подхода
11/2/10
Примеры объявления элементов
Пример описания элемента И в исходном коде:
TextView в XML:
… TextView textView = new TextView(this);
<TextView android:id="@+id/text_view" textView.setText("TextView");
android:layout_width="wrap_content"
android:layout_height="wrap_content" LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
android:text="TextView”/> LayoutParams.WRAP_CONTENT);
… linearLayout.addView(textView, layoutParams);
Результат:
11/2/10
ViewGroup
•
По иерархии классов наследуется от View
•
Контейнер для других View
•
ViewGroup.LayoutParams – средство для
коммуникации между View и её предком
•
Большое количество базовых реализаций
ViewGroup в Android, задающих различные
алгоритмы расположения элементов
11/2/10
Наследники ViewGroup
11/2/10
LinearLayout
•
Располагает элементы друг за другом
•
Варианты расположения: вертикально и
горизонтально
•
LinearLayout.LayoutParams позволяет
задавать gravity и weight
11/2/10
LinearLayout: пример
<?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"
layout_gravity=“center”
android:layout_height="fill_parent" Layout_weight=1..3
android:weightSum="5">
<ImageView
android:src="@drawable/title_image"
android:layout_width="wrap_content"
android:layout_weight="3"
android:layout_gravity="center"/>
<ImageView
android:src="@drawable/play_game"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_gravity="center"/>
<ImageView
android:src="@drawable/high_scores"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_gravity="center"/>
</LinearLayout>
LinearLayout
11/2/10
RelativeLayout
•
Позволяет задавать расположение
элемента относительно других элементов
•
Типы «зависимостей»: другие элементы,
сам контейнер
11/2/10
RelativeLayout: пример 1
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.ifree.smartive.LocationView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"/>
<com.ifree.smartive.LocationView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
<com.ifree.smartive.DirectionView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<com.ifree.smartive.CustomButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dip"
android:layout_marginLeft="20dip"/>
</RelativeLayout>
11/2/10
RelativeLayout: пример 2
<Button
android:id="@+id/button1"
android:layout_width="wrap_content”
android:layout_height="wrap_content"
android:text="Button 1"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
android:layout_below="@id/button1"
android:layout_toRightOf="@id/button1"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 3"
android:layout_alignParentLeft="true"
android:layout_below="@id/button2"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 4"
android:layout_below="@id/button3"
android:layout_toRightOf="@id/button3"/>
11/2/10
FrameLayout
•
View-элементы помещаются в стек и
рисуются одна над другой
•
Только один атрибут - gravity
11/2/10
FrameLayout: пример
<FrameLayout
xmlns:android=http://schemas.android.com/apk/res/android
android:layout_width=“fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/pals_wailea"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/aim"/>
</FrameLayout>
11/2/10
FrameLayout в стандартной
иерархии
Системный FrameLayout
«Наш» FrameLayout
11/2/10
FrameLayout в стандартной
иерархии
<merge
xmlns:android=http://schemas.android.com/apk/res/android>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/pals_wailea"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/aim"/>
</merge>
11/2/10
Вопросы
11/2/10
У нас открыты вакансии «Android Developer» и
«Разработчик под мобильные платформы (iPhone,
Blackberry, WM, WP7)»
Обращайтесь в наш HR к Алексею Чайкину
Контакты:
alex.ch@i-free.com
+7 911 1608821
8 (812) 438 1678, доб. 3101
11/2/10