SlideShare a Scribd company logo
Курс по Java/Android
Занятие 10
Александр Русин
e-mail: alexandr.rusin@gmail.com
Android Developer
ViewGroups

FrameLayout

LinearLayout

TableLayout

RelativeLayout

ScrollView
FrameLayout

Дочерние View или ViewGroup
выравниваются по верхнему левому углу.

Разметка может содержать несколько
элементов, но тогда они будут перекрывать
друг друга.
FrameLayout
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button"/>
</FrameLayout>
FrameLayout
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" /></FrameLayout>
LinearLayout
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
</LinearLayout>
LinearLayout<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
<Button
TableLayout
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:layout_column="1" />
</TableRow>
<TableRow>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button" />
</TableRow>
TableLayout
<TableRow>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Button"
android:layout_span="2" />
</TableRow>
</TableLayout>
RelativeLayout
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:layout_centerHorizontal="true" />
RelativeLayout
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/image"
android:text="@string/Left" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image"
android:text="@string/Right" />
</RelativeLayout>
RelativeLayout(атрибуты)

Расположение относительно родительского
элемента.

Значением атрибута является «true»
RelativeLayout(атрибуты)
android:layout_alignParentTop // верхняя граница элемента
располагается на верхней границе RelativeLayout
android:layout_alignParentLeft //левая граница элемента
располагается на левой границе RelativeLayout
android:layout_alignParentRight // правая граница элемента
располагается на правой границе RelativeLayout
android:layout_alignParentBottom //нижняя граница элемента
располагается на нижней границе RelativeLayout
RelativeLayout(атрибуты)
android:layout_centerInParent // элемент располагается
в центре родительского по горизонтали и вертикали
android:layout_centerHorizontal // элемент
располагается в центре родительского по горизонтали
android:layout_centerVertical // элемент располагается в
центре родительского по вертикали
RelativeLayout(атрибуты)

Расположение относительно других
элементов.

Значением атрибута является id другого
элемента.
RelativeLayout(атрибуты)
android:layout_above // элемент располагается сверху от
другого элемента
android:layout_toLeftOf // элемент располагается слева от
другого элемента
android:layout_toRightOf // элемент располагается справа от
другого элемента.
android:layout_below // элемент располагается снизу от
другого элемента.
android:layout_alignBaseline // базовая линия элемента
выравнивается по базовой линии другого элемента
RelativeLayout(атрибуты)
android:layout_alignTop // верхняя граница элемента
выравнивается по верхней границе другого элемента
android:layout_alignLeft // левая граница элемента выравнивается
по левой границе другого элемента
android:layout_alignRight // правая граница элемента
выравнивается по правой границе другого элемента
android:layout_alignBottom // нижняя граница элемента
выравнивается по нижней границе другого элемента
ScrollView
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Много элементов -->
</LinearLayout>
</ScrollView>
Атрибуты элементов

android:layout_width

android:layout_height
match_parent — элемент имеет размер такой же как и
родительский элемент
wrap_content — элемент имеет размер по своему
содержимому
Атрибуты элементов
dp - (Density-independent Pixels) - абстрактная
единица, основанная на плотности экрана. На
устройствах с экраном 160dpi: 1dp=1px.
Это соотношение будет меняться на экранах с
другой плотностью, причем необязательно в
прямой пропорции. Таким образом обеспечивается
согласованность размеров элементов интерфейса
на различных устройствах.
Атрибуты элементов
sp - (Scale-independent Pixels) — единица измерения
похожая на dp, однако она также масштабируется
учитывая пользовательские настройки шрифта.
Атрибуты элементов
px — пиксели. Не рекомендуется использовать эту
единицу измерения, так как представление элемента
может различаться в зависимости от устройства.
Так если мы задаем ширину элемента 100px, то на
устройствах с экраном 320x240 это будет почти
полэкрана, а на устройствах 800x480 - меньше четверти
экрана.
Атрибуты элементов
mm - миллиметры
in - дюймы
pt — (points) 1/72 дюйма
Данные единицы измерения не зависят от разрешения
и диагонали экрана.
1in = 25.4mm = 72pt
Видимость
android:visibility //в xml
setVisibility (int visibility) //в коде
VISIBLE //элемент видим
INVISIBLE //элемент невидим, но все еще занимает
место в разметке
GONE //элемент невидим и не занимает место в
разметке
Домашнее задание
1. Сделать поле для игры крестики — нолики
(3 * 3).
2. После клика по полю, оно должно менять
цвет.
Литература

http://ru-code-android.livejournal.com/4327.html

http://developer.alexanderklimov.ru/android
Спасибо за внимание!

More Related Content

Viewers also liked

Lec 12
Lec 12Lec 12
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
Noveo
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
Noveo
 
Lec 13
Lec 13Lec 13
Lec 9
Lec 9Lec 9
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
Noveo
 
Android - 05 - Android basics
Android - 05 - Android basicsAndroid - 05 - Android basics
Android - 05 - Android basics
Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - Graphics
Noveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
Noveo
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Denis Vasilyev
 
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Denis Vasilyev
 
Thread
ThreadThread
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
Noveo
 
Canvas
CanvasCanvas

Viewers also liked (20)

Lec 12
Lec 12Lec 12
Lec 12
 
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
 
Lec 13
Lec 13Lec 13
Lec 13
 
Lec 9
Lec 9Lec 9
Lec 9
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Android - 05 - Android basics
Android - 05 - Android basicsAndroid - 05 - Android basics
Android - 05 - Android basics
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - Graphics
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
 
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
 
Thread
ThreadThread
Thread
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Canvas
CanvasCanvas
Canvas
 
Views обзор
Views обзорViews обзор
Views обзор
 

Similar to Lec 10

[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)Evgeny Kaziak
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
DataArt
 
Верстка для Андроид
Верстка для АндроидВерстка для Андроид
Верстка для Андроид
Alexey Ustenko
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
Pavel Tsukanov
 
Yandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовYandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовMeetup.by
 
Разбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayoutРазбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayout
Rambler Android
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
Noveo
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
OdessaFrontend
 
Дмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", GlobusДмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", Globus
Globus
 
Дмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", GlobusДмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", Globus
Globus
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 
C# Web. Занятие 06.
C# Web. Занятие 06.C# Web. Занятие 06.
C# Web. Занятие 06.
Igor Shkulipa
 
Android - 07 - User Interface
Android - 07 - User InterfaceAndroid - 07 - User Interface
Android - 07 - User Interface
Noveo
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей Солодовников
DevDay
 
Принципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсовПринципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсовVasiliy Aksyonov
 
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...it-people
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
Denis Latushkin
 
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...Ontico
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Yandex
 

Similar to Lec 10 (20)

[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)[JAM 1.0] Android OS, Java (Paul Malikov)
[JAM 1.0] Android OS, Java (Paul Malikov)
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Верстка для Андроид
Верстка для АндроидВерстка для Андроид
Верстка для Андроид
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Yandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим ХромцовYandex Map Kit для Android OS - Максим Хромцов
Yandex Map Kit для Android OS - Максим Хромцов
 
Разбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayoutРазбираемся с CoordinatorLayout
Разбираемся с CoordinatorLayout
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
 
Дмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", GlobusДмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", Globus
 
Дмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", GlobusДмитрий Устимов "Многооконный режим", Globus
Дмитрий Устимов "Многооконный режим", Globus
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 
C# Web. Занятие 06.
C# Web. Занятие 06.C# Web. Занятие 06.
C# Web. Занятие 06.
 
Android - 07 - User Interface
Android - 07 - User InterfaceAndroid - 07 - User Interface
Android - 07 - User Interface
 
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей СолодовниковРендеринг может больше: vue.js vs React, Андрей Солодовников
Рендеринг может больше: vue.js vs React, Андрей Солодовников
 
Принципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсовПринципы разработки гибких и поддерживаемых интерфейсов
Принципы разработки гибких и поддерживаемых интерфейсов
 
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
DUMP-2013 Frontend - Принципы разработки поддерживаемых и гибких интерфейсов ...
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
 
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
Принципы разработки поддерживаемых и гибких интерфейсов / Василий Аксёнов (Ян...
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
 

More from Alexander Rusin

Scala for android
Scala for androidScala for android
Scala for android
Alexander Rusin
 
Lec 15
Lec 15Lec 15
Lec 14
Lec 14Lec 14
Lec 6
Lec 6Lec 6
Lec 5
Lec 5Lec 5
Lec 4
Lec 4Lec 4
Lec 3
Lec 3Lec 3
Lec 2
Lec 2Lec 2
Lec 1
Lec 1Lec 1

More from Alexander Rusin (10)

Scala for android
Scala for androidScala for android
Scala for android
 
Lec 15
Lec 15Lec 15
Lec 15
 
Lec 14
Lec 14Lec 14
Lec 14
 
Lec 11
Lec 11Lec 11
Lec 11
 
Lec 6
Lec 6Lec 6
Lec 6
 
Lec 5
Lec 5Lec 5
Lec 5
 
Lec 4
Lec 4Lec 4
Lec 4
 
Lec 3
Lec 3Lec 3
Lec 3
 
Lec 2
Lec 2Lec 2
Lec 2
 
Lec 1
Lec 1Lec 1
Lec 1
 

Lec 10