- Пространство имён Tools
- tools:ignore
- tools:targetApi
- tools:locale
- tools:context
- tools:layout
- tools:showIn
- tools:menu
- tools:actionBarNavMode
- tools:listitem / listheader / listfooter
- tools:layoutManager
- tools:itemCount
- tools:openDrawer
- tools:minValue/tools:maxValue
- tools:src
- tools:layout_height/tools:layout_width
- tools:background
- tools:src=»http://developer.alexanderklimov.ru/android/studio/@tools:sample/»
- Русские Блоги
- Карточный ViewPager, который приводит вас к свойству PageTransformer ViewPager!
- 1.clipChildren свойство
- 2. На странице отображается несколько элементов ViewPager
- 3. Знакомство с PagerTransformer
- 4. Узнайте больше о PagerTransformer
- 5. ViewPager в сочетании с CardView
Пространство имён Tools
При создании нового проекта, когда вы проектировали макет для экрана активности, то, наверняка, замечали загадочные строчки у корневого элемента со словом tools:
Настало время сорвать покровы и использовать новые возможности.
Привычное пространство имён xmlns:android позволяет настраивать внешний вид и поведение компонентов в Android-приложении. А новое пространство имён xmlns:tools позволяет среде разработки (в нашем случае, Android Studio) правильно отобразить компоненты для просмотра в режиме дизайна.
Причём возможности данного инструмента гораздо выше, чем многие себе представляют.
Для начала приведу простой пример, который многие оценят по достоинству. Представьте себе, что у вас есть компонент пустой TextView, который получает текст с сервера. Чтобы визуально представить себе, как будет выглядеть текст, не соединяясь с сервером, вам нужно временно присвоить какой-нибудь текст. А потом не забыть удалить его при создании релиза. А можно поступить проще. Инструмент tools дублирует многие визуальные атрибуты пространства имён android и вы можете заменить его следующим образом.
В реальности у текстовой метки нет текста, но в окне предварительного просмотра вы можете видеть текст и оценить дизайн. Напомню, что эта настройка относится только к среде разработки, а не к вашему приложению. Поэтому теперь можно не волноваться, что однажды вы забудете удалить временный текст. Попробуйте теперь поменять цвет фона с помощью атрибута tools:background =»#ваш_цвет». Получилось?
Кроме визуальных атрибутов, tools может использоваться для взаимодействия с инструментом Lint, который пытается подсказать при проблемном коде. К этим атрибутам можно отнести
tools:ignore
Атрибут tools:ignore похож по своему поведению на Java-аннотацию @SuppressWarnings, подсказывающему инструменту Lint не обращать внимания на код. Аналогично можно не обращать на какой-то атрибут в XML-файле.
Самый распространённый случай — использование ImageView. Lint всегда недоволен, если у данного компонента нет атрибута android:contentDescription. Профессионально сделанное приложение должно использовать данный атрибут. Но в некоторых ситуациях ImageView может быть вспомогательным элементом экрана, не несущим смысловой нагрузки, например, разделитель. И тогда можно подавить предупреждение следующим образом.
tools:targetApi
Атрибут tools:targetApi работает аналогично аннотации @TargetApi и говорит о минимальной версии API, которая будет использована для ресурсов.
Например, ваш проект использует минимальный уровень minSdkLevel = 15, а вы используете объекты RippleDrawable в качестве ресурсов в общей папке, а не в папке drawable-v21. Но если вы контролируете ситуацию и знаете, что для старых устройств есть другие ресурсы, то можете подавить предупреждение:
tools:locale
Атрибут tools:locale поможет вам подавить предупреждения Lint о неправильном правописании, выступая в качестве грамар-наци. Проблема в том, что Lint содержит проверку орфографии только на английском языке. И если ваши строковые ресурсы содержат русский текст, то его предупреждения бесполезны. Отключаем их:
Рассмотрим теперь другие доступные атрибуты.
tools:context
Атрибут tools:context у корневого элемента позволяет определить связь между макетом и классом активности, в которой данный макет будет реализован. Помогает студии сформировать в окне предварительного просмотра внешний вид, подтягивая нужную тему.
tools:layout
Атрибут tools:layout используется в разметке фрагмента, чтобы вывести макет фрагмента на экране активности.
tools:showIn
Атрибут tools:showIn позволяет указать, какую разметку нужно использовать для вывода в окне предварительного просмотра. Это может пригодиться для тега merge:
tools:menu
Атрибут tools:menu подсказывает среде разработке, какое меню нужно отобразить в окне предварительного просмотра. Также используется в корневом элементе разметки.
Можно через запятую указать несколько меню, заданных в папке res/menu. Также кроме имени XML-файла можно использовать идентификаторы меню без символа @. В окне предварительного просмотра вы можете вызвать меню и нажать на пункт меню — вас сразу перенесёт в нужный файл.
Если не хотите выводить меню, то оставьте пустую строку. Данный атрибут не работает с темой Theme.AppCompat и производных от неё.
tools:actionBarNavMode
Атрибут tools:actionBarNavMode отвечает за внешний вид панели действий ActionBar. Он также размещается в корневом элементе разметки, не работает с темами Theme.AppCompat и Theme.Material и не действует при использовании Toolbar вместо ActionBar.
Доступны три варианта:
tools:listitem / listheader / listfooter
Также можно настроить внешний вид компонентов на основе AdapterView — ListView, GridView, ExpandableListView и т.д., указав нужную разметку для отдельных элементов списка, а также заголовка и футера. Появилась поддержка и RecyclerView.
Атрибуты для заголовка и футера могут работать только для ListView, а для GridView не работает.
Для сравнения как выглядят экраны активности с использованием tools: и без него.
Мы видим вкладки, элементы меню, другую разметку для списка.
tools:layoutManager
В RecyclerView можно использовать менеджер разметок с указанием различных параметров.
tools:itemCount
Обычно студия выводит десять элементов списка в RecyclerView. Вы можете изменить это поведение данным атрибутом.
tools:openDrawer
В студии 1.4 появился новый атрибут tools:openDrawer, управляющий состоянием навигационной шторки для DrawerLayout. При значении start будет показана шторка в выдвинутом виде. Доступны значения: start, end, left, right.
tools:minValue/tools:maxValue
Атрибуты для компонента NumberPicker для задания минимального и максимального значения.
tools:src
Можно указать графический ресурс. Полезно для ImageView, когда используется пустое изображение при запуске приложения и затем скачивается картинка с сервера. Позже появилась другая удобная возможность (см. ниже)
tools:layout_height/tools:layout_width
Ширина и высота.
tools:background
tools:src=»http://developer.alexanderklimov.ru/android/studio/@tools:sample/»
В студии версии 3.0 появились новые возможности. Теперь вы можете задать аватар, имя и случайный текст без создания собственных ресурсов. Это бывает полезно, когда ресурсы берутся из внешнего источника. Вам не нужно создавать временные ресурсы, которые увеличивают размер приложения и которые можно забыть удалить.
Например, можно задать изображение для ImageView:
Если у вас несколько ImageView, то изображения будут разными! Просмотреть весь набор можно в папке ..\plugins\android\lib\sampleData.
Можно задать текст для TextView:
- tools:text=»@tools:sample/full_names» — полное имя (также first_names, last_names)
- tools:text=»@tools:sample/cities» — город
- tools:text=»@tools:sample/us_zipcodes» — индексы США
- tools:text=»@tools:sample/us_phones» — телефонные номера США в формате (800) 555-xxxx
- tools:text=»@tools:sample/date/ddmmyy» — дата (date/day_of_week, date/mmddyy, date/hhmm, date/hhmmss)
- tools:text=»@tools:sample/lorem» — случайный текст
- tools:text=»@tools:sample/lorem/random» — большой случайный текст
Можно задать случайный фон
Пример применения некоторых атрибутов.
Но это ещё не всё. Если вас не устраивают изображения (там нет котов!) или тексты, предлагаемые студией, то можно задать свои изображения и тексты. Из контекстного меню папки res выбираем New | Sample Data Directory. В модуле app появится папка sampleData. Создайте текстовый файл с именем names и добавьте построчно различные имена: Барсик, Мурзик, Рыжик, Васька и т.д.
Заменим tools:text=»@tools:sample/full_names» на tools:text=»@sample/names». Теперь вместо непонятных иностранных имён будут отображаться правильные нормальные имена.
По такому же принципу можно создать собственные изображения для аватаров. В папке sampleData создайте подпапку avatars (имя произвольное) и разместите в ней нужные файлы изображений.
Используем атрибут для аватаров — tools:src=»http://developer.alexanderklimov.ru/android/studio/@sample/avatars».
Можно создать сложный вариант сочетаний имён и городов. Опять в той же папке sampleData создаём JSON-файл следующего содержания.
Можете обращаться к созданному файлу через атрибуты:
Источник
Русские Блоги
Карточный ViewPager, который приводит вас к свойству PageTransformer ViewPager!
Само собой разумеется, базовое использование ViewPager, это очень просто, мы можем загрузить ImageView в ViewPager, также можно загрузить фрагмент, это очень распространенное использование в настоящее время. Итак, что я сказал сегодня, это ViewPager Свойство PageTransformer Использование этого свойства может сделать наше приложение более блестящим, хорошо, давайте начнем!
В этой статье будут представлены следующие аспекты:
1.clipChildren свойство
2. На странице отображается несколько элементов ViewPager
3. Знакомство с PagerTransformer
4. Узнайте больше о PagerTransformer
5. ViewPager в сочетании с CardView
1.clipChildren свойство
Свойство clipChildren указывает, ограничен ли дочерний элемент управления областью контейнера. Свойство clipChildren в сочетании со свойством layout_gravity можно использовать для установки позиции отображения дополнительной детали. Здесь я приведу простой пример, например домашнюю страницу приложения Himalayan FM:
Обратите внимание, что средняя в нижней панели навигации этого приложения выше, чем остальные четыре. Многие люди подумают об использовании макета RelativeLayout для достижения этого эффекта. На самом деле, это не так уж и много проблем. Этого можно добиться с помощью свойства clipChildren. Пример демонстрации выглядит следующим образом:
Все видят, что вам нужно только добавить свойство clipChildren в корневой узел, а затем добавить свойство layout_gravity к третьему ImageView. Значение свойства layout_gravity равно bottom, что означает, что нижняя часть элемента управления выравнивается после превышения размера элемента управления. Эффект заключается в следующем:
Хорошо, выше приведено краткое введение в свойство clipChildren, его можно рассматривать как тротуар, давайте посмотрим на ViewPager.
2. На странице отображается несколько элементов ViewPager
Первая проблема, которую мы хотим решить, — это отображение нескольких элементов ViewPager на странице. Существует два решения: первое — это свойство clipChildren, которое мы упоминали выше, а второе — свойство clipToPadding. Давайте посмотрим на ViewPager, используя первый параметр свойства:
Вам нужно только добавить свойство clipChildren как в родительский контейнер, так и в ViewPager, а затем установить левое и правое поля для ViewPager, чтобы оно не заполняло весь экран. Это так просто. Давайте посмотрим на адаптер ViewPager:
Наконец, взгляните на код в Activity:
Есть еще две строки кода, чем наше общее использование ViewPager. Одна из них setOffscreenPageLimit. Это для установки количества предварительно загруженных страниц. Мы знаем, что по умолчанию этот параметр равен 1, то есть левая и правая предварительно загруженные страницы. Предварительная загрузка двух страниц, причина будет сказана позже, лучше сказать о другом PageMargin, это установить расстояние между двумя страницами в ViewPager. Хорошо, давайте посмотрим на эффект отображения:
ОК, это так просто. Таким образом, теперь мы можем отображать несколько элементов ViewPager на одной странице. Далее, давайте посмотрим на простое использование PageTransformer.
3. Знакомство с PagerTransformer
Мы знаем, что вы можете установить свойство setPagerTransformer для ViewPager. Когда вы устанавливаете его, вам необходимо реализовать интерфейс PagerTransformer. При реализации этого интерфейса вы должны реализовать метод в этом интерфейсе transformPage. Этот метод получает два параметра, один из которых является position. Печать позиции может увидеть вас в тумане. Фактически, позиция представляет позицию первого параметра View. Вы можете найти регулярность, напечатав эти два параметра вместе:
Например, со страницы 1 до страницы 2:
Изменение первой позиции страницы[0,-1]
Смена позиции на второй странице[1,0]
Зная это, мы можем написать простую анимацию переключения. Я надеюсь, что элементы в середине страницы нормальные, а элементы с обеих сторон немного прозрачны. Затем мы можем использовать следующие методы для определения:
Определив его, вы можете установить его в ViewPager:
Давайте посмотрим на бегущий эффект:
ОК, эффект прозрачности уже есть. Это просто!
4. Узнайте больше о PagerTransformer
Выше приведен эффект короткого ответа. Следуя этой идее, мы можем создать больше эффектов, таких как следующий эффект:
Это очень распространенный эффект: идея реализации такая же, как и предыдущая, которая заключается в динамическом масштабировании ImageView. Давайте посмотрим на PagerTransformer здесь:
Затем установите соответствующий PagerTransformer для ViewPager:
Это так просто. Другие сложные ротация и перевод осуществляются в соответствии с этой идеей и не будут повторяться здесь.
5. ViewPager в сочетании с CardView
Если вы еще не используете CardView, вы можете обратиться к моей предыдущей статьеИспользование CardView в Android5.0Сегодня давайте посмотрим на эффект ViewPager в сочетании с CardView?
Итак, перед этим я хочу ввести свойство, то есть clipToPadding, что означает это свойство? Указывает, разрешено ли рисовать ViewGroup в заполнении ViewGroup. По умолчанию значение этого свойства равно true, то есть рисование в заполнении ViewGroup не допускается. Что если я установлю false? Давайте посмотрим:
Адаптер ViewPager выглядит следующим образом:
Эффект отображения выглядит следующим образом:
Хорошо, тогда это свойство clipToPadding является вторым способом отображения нескольких элементов ViewPager на странице. Этот ViewPager в стиле CardView реализован таким образом. Сначала посмотрите на карту эффектов:
Общая идея та же, что и выше, давайте посмотрим на макет упражнения:
Макет каждого элемента в ViewPager:
Наконец, давайте посмотрим на PageTransformer, который мы определили:
Это очень просто. Я имел дело с тенью CardView. Я не изменил другие свойства. Это эффект, который мы только что видели.
Источник