Статьи

Android с нуля: понимание представлений и групп просмотра

Помимо нескольких крайних случаев, каждое приложение, которое вы создаете, имеет некоторую форму пользовательского интерфейса. На Android это достигается с помощью объектов View и ViewGroup . В этой статье вы узнаете о некоторых наиболее часто используемых компонентах View доступных для отображения контента, и познакомитесь с тем, как они используются.

Тебе легче учиться с видео? Почему бы не проверить наш курс:

  • Android
    Начало работы с Android

Объекты View используются специально для рисования контента на экране устройства Android. Хотя вы можете создавать экземпляры View в своем Java-коде, самый простой способ их использования — через файл макета XML. Пример этого можно увидеть, когда вы создаете простое приложение «Hello World» в Android Studio. Файл макета — это файл с именем activity_main.xml , который выглядит примерно так.

1
2
3
4
5
<TextView
   android:id=»@+id/hello_world»
   android:layout_width=»wrap_content»
   android:layout_height=»wrap_content»
   android:text=»Hello World!»

В приведенном выше примере показан тип View который будет отображаться на экране. layout_width и layout_height утверждают, что View должен занимать столько места на экране, сколько необходимо для отображения текста «Hello World!». Атрибут id позволяет ссылаться на это представление в вашем коде Java следующим образом:

1
2
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.hello_world);

Хотя вы можете установить атрибуты для представления в XML, вы также можете изменить атрибуты в своем коде Java, например, изменить текст вышеупомянутого TextView .

1
textView.setText(«This is a changed View»);

Приведенный выше код обновляет текст TextView до «Это измененное представление». Вот как это выглядит при запуске приложения.

Пример обновленного TextView

Теперь, когда вы знаете, как работать с базовыми объектами View , давайте рассмотрим некоторые из различных типов, доступных вам в Android SDK.

Это представление, которое мы использовали в приведенном выше примере. Основная задача TextView — отображать текст на экране приложения Android. Хотя это может показаться простой задачей, класс TextView содержит сложную логику, которая позволяет отображать размеченный текст, гиперссылки, номера телефонов, электронные письма и другие полезные функции.

Как следует из названия, ImageView разработан специально для отображения изображений на экране. Это может быть использовано для отображения ресурсов, хранящихся в приложении, или для отображения изображений, которые загружаются из Интернета.

Некоторые объекты View используются не только для отображения контента пользователям. Иногда вам нужно получить какую-то информацию для управления вашими приложениями. К счастью, Android предоставляет несколько подклассов View специально для этой цели.

Класс Button является одним из самых основных элементов управления, доступных в приложении. Он прослушивает щелчки от пользователя и вызывает метод в вашем коде, чтобы вы могли ответить соответствующим образом.

Классы Switch и CheckBox имеют активное и неактивное состояние, между которыми можно переключаться. Это полезно для изменения настроек в приложении. Совместимые версии с Material Design доступны через библиотеку поддержки AppCompat .

Этот подкласс View является расширением класса TextView и позволяет пользователям обновлять содержащийся текст посредством ввода с клавиатуры.

Хотя каждый из приведенных выше примеров View является отдельным элементом, иногда требуется отобразить коллекцию элементов. Эти классы View требуют использования Adapter для обработки отображения надлежащего пользовательского интерфейса для элемента в коллекции.

Класс ListView используется для отображения коллекции элементов в виде линейного прокручиваемого View одним столбцом. Каждый отдельный элемент может быть выбран для отображения более подробной информации или выполнения действия, связанного с этим элементом.

GridView

Подобно классу ListView класс GridView принимает Adapter и отображает элементы в нескольких столбцах на экране.

Spinner

Последний класс View вы узнаете в этом уроке, это класс Spinner . Он принимает Adapter и отображает элементы в раскрывающемся меню при щелчке Spinner чтобы пользователь мог выбрать элемент.

ViewGroup — это невидимый объект, используемый для хранения других объектов View и ViewGroup для организации и управления макетом экрана. Объекты ViewGroup используются для создания иерархии объектов View (см. Ниже), чтобы вы могли создавать более сложные макеты. Тем не менее, чем проще вы можете сохранить макет, тем более он эффективен.

Пример иерархии представлений

Объекты ViewGroup могут создаваться так же, как и стандартные элементы View в XML или в коде Java.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?xml version=»1.0″ encoding=»utf-8″?>
<LinearLayout xmlns:android=»http://schemas.android.com/apk/res/android»
    android:layout_width=»match_parent»
    android:layout_height=»match_parent»
    android:orientation=»vertical»>
    <TextView
        android:id=»@+id/hello_world»
        android:layout_width=»wrap_content»
        android:layout_height=»wrap_content»
        android:text=»Hello World!»
    <TextView
        android:id=»@+id/hello_world_2″
        android:layout_width=»wrap_content»
        android:layout_height=»wrap_content»
        android:text=»Hello World 2!»
</LinearLayout>

Хотя все классы ViewGroup выполняют аналогичную задачу, каждый подкласс ViewGroup существует для определенной цели. Давайте посмотрим на некоторые из них.

LinearLayout

LinearLayout существует для отображения элементов в сложенном порядке, по горизонтали или по вертикали. Линейные макеты также можно использовать для назначения весов дочерним элементам View , чтобы элементы располагались на экране в соотношении друг к другу.

RelativeLayout

Этот подкласс ViewGroup позволяет отображать элементы на экране относительно друг друга, обеспечивая большую гибкость и свободу в том, как выглядит ваш макет по сравнению с LinearLayout .

FrameLayout

Созданный для одновременного отображения одного дочернего представления, FrameLayout рисует элементы в стеке и предоставляет простой способ отображения элемента на экранах различных размеров.

ScrollView

Расширение класса FrameLayout , класс ScrollView обрабатывает прокрутку своих дочерних объектов на экране.

ViewPager

Используемый для управления несколькими представлениями при одновременном отображении только одного, класс ViewPager принимает Adapter и позволяет пользователям проводить пальцем влево и вправо, чтобы увидеть все доступные элементы View .

RecyclerView

Класс RecyclerView — это подкласс ViewGroup , связанный с классами ListView и GridView и предоставленный Google через библиотеку поддержки RecyclerView для более старых версий Android. Класс RecyclerView требует использования шаблона проектирования держателей для эффективной переработки элементов и поддерживает использование LayoutManager , декоратора и аниматора элементов, чтобы сделать этот компонент невероятно гибким за счет простоты.

CoordinatorLayout

Недавно добавленный в библиотеку поддержки проектирования, класс CoordinatorLayout использует объект Behavior для определения того, как дочерние элементы View следует размещать и перемещать при взаимодействии пользователя с вашим приложением.

Несмотря на то, что для ваших приложений есть множество классов View и ViewGroup , вы иногда хотите создать что-то новое, чтобы удовлетворить ваши потребности. В этом случае вы можете создать новый класс Java, который расширяет либо View либо ViewGroup , в зависимости от того, что вам нужно. Создание нового пользовательского подкласса View выходит за рамки этой статьи, но вы можете найти больше информации в этом руководстве Envato Tuts + .

В этом уроке вы узнали об одном из самых основных компонентов Android, макетах и ​​представлениях. Учитывая, насколько эти компоненты фундаментальны для Android, вы будете постоянно узнавать о них новые вещи, продолжая работать с платформой Android, и вы найдете новые способы делать удивительные вещи, используя их в своих проектах.