- Пространство имён 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/»
- Что такое «инструменты: контекст» в файлах макета Android?
- Context — контекст в android — что это, как получить и зачем использовать
- Инструменты Android-разработчика: скрытые возможности
- 1. Tools Attributes
- К атрибутам Lint относятся:
- Design attributes включают:
- 2. Support Annotations
- Аннотации делятся на:
- 3. Cut&Slice me
- 4. LeakCanary
- Подпишитесь
Пространство имён 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-файл следующего содержания.
Можете обращаться к созданному файлу через атрибуты:
Источник
Что такое «инструменты: контекст» в файлах макета Android?
Начиная с недавней новой версии ADT, я заметил этот новый атрибут в файлах XML макета, например:
Для чего используется «инструменты: контекст»?
Откуда он знает точный путь к деятельности, которая там написана? Это смотрит на пакет приложения, внутри манифеста?
Это ограничено классами, которые расширяют Контекст или только действия? Это можно использовать для элементов ListView и т. Д.?
Это действие, которое инструменты редактора пользовательского интерфейса используют для визуализации предварительного просмотра макета. Это задокументировано здесь :
Этот атрибут объявляет, с каким действием этот макет связан по умолчанию. Это позволяет использовать функции в редакторе или предварительном просмотре макета, которые требуют знания действия, например, какой должна быть тема макета в предварительном просмотре и куда вставлять обработчики onClick при создании из быстрого исправления.
Этим атрибутом является в основном постоянство для выбора «Связанное действие» над макетом. Во время выполнения макет всегда связан с действием. Конечно, это может быть связано с более чем одним, но по крайней мере с одним. В инструменте нам нужно знать об этом отображении (которое во время выполнения происходит в другом направлении; действие может вызывать setContentView (layout) для отображения макета) для управления определенными функциями.
Прямо сейчас мы используем его только для одной цели: выбор правильной темы для показа для макета (поскольку файл манифеста может регистрировать темы для использования в действии , и как только мы узнаем действие, связанное с макетом, мы можем выбрать правильная тема, чтобы показать для макета). В будущем мы будем использовать это для добавления дополнительных функций, таких как отображение панели действий (связанной с действием), места для добавления обработчиков onClick и т. Д.
Причина, по которой это атрибут tools: namespace, заключается в том, что это только отображение времени разработки для использования инструментом. Сам макет может использоваться несколькими действиями / фрагментами и т. Д. Мы просто хотим дать вам способ выбрать привязку времени разработки, чтобы мы могли, например, показать правильную тему; Вы можете изменить его в любое время, так же, как вы можете изменить наш список, привязки фрагментов и т. д.
(Вот полный набор изменений, который имеет более подробную информацию об этом )
И да, ссылка Николая, указанная выше, показывает, как выглядит и работает новая программа выбора конфигурации.
Еще одна вещь: пространство имен «инструменты» является особенным. Инструмент упаковки Android знает, что его игнорировать, поэтому ни один из этих атрибутов не будет упакован в APK. Мы используем его для дополнительных метаданных в макете. Здесь также хранятся, например, атрибуты для подавления предупреждений lint — как инструменты: игнорировать.
Источник
Context — контекст в android — что это, как получить и зачем использовать
Контекст (Context) – это базовый абстрактный класс, реализация которого обеспечивается системой Android. Этот класс имеет методы для доступа к специфичным для конкретного приложения ресурсам и классам и служит для выполнения операций на уровне приложения, таких, как запуск активностей, отправка широковещательных сообщений, получение намерений и прочее. От класса Context наследуются такие крупные и важные классы, как Application, Activity и Service, поэтому все его методы доступны из этих классов.
Получить контекст внутри кода можно одним из следующих методов:
- getBaseContext(получить ссылку на базовый контекст)
- getApplicationContext(получить ссылку на объект приложения)
- getContext (внутри активности или сервиса получить ссылку на этот объект)
- this(то же, что и getContext)
- MainActivity.this (внутри вложенного класса или метода получить ссылку на объект MainActivity)
- getActivity(внутри фрагмента получить ссылку на объект родительской активности)
Контекст (Context) – это базовый абстрактный класс, реализация которого обеспечивается системой Android. Этот класс имеет методы для доступа к специфичным для конкретного приложения ресурсам и классам и служит для выполнения операций на уровне приложения, таких, как запуск активностей, отправка широковещательных сообщений, получение намерений и прочее. От класса Context наследуются такие крупные и важные классы, как Application, Activity и Service, поэтому все его методы доступны из этих классов. Источник
Получить контекст внутри кода можно одним из следующих методов:
Источник
Инструменты Android-разработчика: скрытые возможности
Время чтения: 5 минут
Отправим вам статью на:
Разработка мобильных приложений – длительный и трудоёмкий процесс. При этом бизнес заинтересован, чтобы приложение увидело свет как можно скорее. В распоряжении мобильных разработчиков всегда есть масса полезных инструментов для ускорения работы.
С выходом новых версий мобильных платформ набор инструментов для разработчиков обновляется и пополняется. Тем не менее, уследить за всеми нововведениями трудно. Что уж говорить о дополнительных функциях, которые не анонсируются отдельно, хотя и могут быть полезны при выполнении привычных действий.
В частности, во время создания мобильного приложения каждому Android-разработчику приходится решать ряд проблем. Например:
- Проверять, как визуально будет выглядеть лейаут на этапе разработки, до его запуска на мобильном устройстве;
- Усиливать средства проверки кода, такие, как Lint; находить в коде сложно выявляемые ошибки перед этапом компиляции;
- Подбирать варианты растровой графики под все разрешения экрана, для всех желаемых состояний (enabled, disabled, pressed и других), и экспортировать их в различные цифровые устройства;
- Выявлять утечки памяти на этапе разработки в дебаг–сборках приложения.
Опытный специалист без труда справится с перечисленными задачами. Однако не для всех очевидны способы эффективного и быстрого разрешения острых вопросов. Рассмотрим некоторые из них подробно.
1. Tools Attributes
Решение: Tools Attributes помогают управлять Android Studio, задействуя новое пространство имён так, что среда разработки не переносит рабочие варианты атрибутов в финальную сборку приложения.
Казалось бы, у Android-разработчика есть только один путь проверить, насколько хорошо выполнен лейаут – запустить его на мобильном девайсе. На деле есть замечательная возможность использовать Tools Attributes, которые встроены в среду разработки, в нашем случае в Android Studio.
Условно выделяют две основные категории:
- Lint attributes
- Design attributes
Lint – это инструмент статистического анализа, который применяется во многих языках программирования и программных платформах. Использование Lint attributes позволяет координировать работу инструмента Lint, когда это необходимо.
К атрибутам Lint относятся:
• tools:ignore
Атрибут tools:ignore позволяет настроить инструмент Lint таким образом, чтобы он не обращал внимания на определенный атрибут в XML-файле. Например,
– @SupressWarning для XML.
• tools:targetApi
Атрибут tools:targetApi действует по аналогии с аннотацией @TargetApi и показывает минимальную версию API, к которой будет обращаться приложение. Например, вы используете Android KitKat, а минимальный уровень API в вашем проекте равен 21. Тогда вы просто прописываете в коде атрибут tools:targetAPI с той версией, которая вас устраивает. Это помогает подавить предупреждения от Lint.
• tools:locale
Этот атрибут поможет вам настроить язык и отключить предупреждения о неправильном правописании. Например, ваши строки содержат только испанский текст, тогда вы делаете настройку «испанский по умолчанию»:
– по умолчанию испанский + spell checking
Что касается Design attributes, то они способны существенно помочь вам при создании лейаутов в XML в вашей среде разработки.
Design attributes включают:
• tools:context
Tools:context используется, чтобы показать среде разработки, в каком классе активности будет реализован лейаут. С помощью этого атрибута Android Studio автоматически выбирает нужную тему для отображения в окне предварительного просмотра (preview).
• tools:showIn
Использование этого атрибута помогает указать, какая конкретно разметка предназначена для вывода в окне предварительного просмотра. Например,
— для include layout. Так разработчик может посмотреть, как будет выглядеть его представление в конкретном layout.
• tools:listitem, listheader, listfooter
Настроить внешний вид компонентов будет проще, указав соответствующую разметку для отдельных элементов списка, заголовка и футера. Например,
tools:listitem, listheader, listfooter=»@android:layout/simple_list_item_2″
• tools:layout
Атрибут tools:layout позволяет отобразить макет фрагмента на экран активности. Например,
В целом, с Tools Attributes разработчик может не волноваться, что однажды забудет удалить из кода временный текст.
2. Support Annotations
Решение: аннотации из Android Support Library помогают Android Studio улучшить код. Это работает начиная с версии Android studio 1.3.0, иначе необходимо подключать отдельно.
Библиотека Android Support Annotations помогает находить баги в разрабатываемых приложениях. Добавляя аннотации в свой проект, разработчик существенно облегчает себе задачу сохранения чистого кода.
Аннотации делятся на:
• Нулевой тип
@Nullable, @NonNull
Это аннотации, допускающие или, наоборот, не допускающие нулевое значение. Могут применяться для полей кода, для параметров и для методов. Важно понимать главное различие с полным отсутствием аннотаций – аннотации нулевого типа только определяют, равно ли значение параметра нулю или нет.
• Ресурсный тип
@StringRes, @DrawableRes, @ColorRes
При написании кода разработчики часто обращаются к ресурсам строк, изображений и другим. Использование аннотаций ресурсного типа помогает усилить введенный текст. Например, добавляя аннотацию @ColorRes, вы получите предупреждение от среды разработки, если попытаетесь ввести код цвета, а не ссылку на ID из ресурсов. Без аннотации IDE не будет “ругаться”, т.к. и код, и ссылка на ID ресурса являются int.
• Для задания цвета
@ColorInt
@ColorInt является противоположностью аннотации @ColorRes. В данном случае вы определяете, что метод должен обращаться не к ID ресурса, а к конкретному цвету. Установив аннотацию @ColorInt, вы легко обнаружите ошибку, если метод будет обращаться к ID цветового ресурса.
• Для потоков
@UiThread, @MainThread, @WorkerThread, @BinderThread
Специальные аннотации для указания потоков позволяют определить связь потока с методом.
• Для задания промежутка значений
@Size(min = 5), @IntRange(from = 0, to = 12), @FloatRange(…)
Практически невозможно использовать только нормальные значения параметров при написании кода. Чтобы задать промежутки возможных значений, достаточно прописать аннотации @IntRange или @FloatRange. Чтобы установить ограничения в размерах и длине строк в массивах данных, коллекциях или потоках, подойдет аннотация @Size.
• Для получения разрешений
@RequestPremission(Manifest.permission.ACCESS_FINE_LOCATION)
Вы можете определить одно разрешение или целый список разрешений, чтобы при обращении к методу было понятно, что ваше приложение должно иметь этот список разрешений. Если разрешения не будет, то разработчик легко обнаружит ошибку в коде.
• Для вызова суперкласса
@CallSuper
Эта аннотация используется, когда необходимо вызвать метод родительского класса.
• IntDef and StringDef
С таким типом аннотаций мы можем использовать обобщающие понятия для замены отдельных перечисленных постоянных значений. Например, у нас есть IceCreamFlavourManager class, который включает 3 возможных модели для использования: VANILLA, CHOCOLATE и STRAWBERRY. С помощью @IntDef мы можем создать новую аннотацию под названием @Flavour и обозначить ее отдельные значения.
3. Cut&Slice me
Решение: плагин Photoshop Cut&Slice me позволяет в одно нажатие генерировать нарезку растровой графики под все разрешения экрана, для всех интересующих нас состояний (enabled, disabled, pressed…). Ресурсы раскладываются в нужные папки автоматически для Android (drawable-xxhdpi, drawable-xhdpi, ..), для iOS создаются корректные префиксы имён (@2x, @3x).
Мы активно используем плагин Cut&Slice me с 2013 года. При этом он актуален не только для Android, но и для iOS-разработчиков.
4. LeakCanary
Решение: библиотека LeakCanary помогает разработчику обнаружить утечку в памяти в runtime режиме, на этапе разработки в дебаг-сборках.
Обычно разработчики вынуждены искать утечки памяти фактически вручную. Сначала выявляют ошибки OutOfMemoryError. Затем пытаются на различных девайсах воспроизвести проблему, которая привела к ошибке. При этом стараются отследить последовательность действий, приводящих к утечке. Создают дамп памяти и изучают его, чтобы обнаружить объекты, которые должен был утилизировать сборщик мусора. Ищут короткие пути ссылок от объектов до корней сборщика мусора и, наконец, находят ссылку, появление которой спровоцировало утечку памяти.
LeakCanary позволяет автоматизировать все стадии поиска и помогает оперативно найти все утечки. Дополнительным преимуществом являются опции отправки данных об утечках на сервер и исключение рефлекшн-ссылок и определенных действий из метода.
Подводя итоги, можно сказать, что в распоряжении Android-разработчиков есть множество инструментов, которые существенно упрощают процесс разработки приложений. В частности, существует ряд доступных решений, которые многие игнорируют или даже не знают о них: Tools Attributes, Support Annotations, Cut&Slice me, LeakCanary и системы багрепортинга. О последних мы расскажем в следующей статье.
Выбор набора рабочих инструментов, как правило, ограничивается личными предпочтениями разработчиков или особенностями проекта. Если вы хотите рассказать о своих must-have, вы можете делиться ими в комментариях. Мы будем рады узнать ваше мнение и пополнить нашу копилку полезных инструментов.
Чистого кода и успешных проектов!
- Поделиться в Facebook
- Share on Linkedin
- Запостить в Twitter
- Сохранить в Pocket
- 0 Репосты
—>
Подпишитесь
Оставьте адрес, и каждый месяц мы будем высылать свежую статью
о новых трендах в разработке програмного обеспечения.
Источник