Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Если нужно поделиться своим проектом и вручную архивировать папку проекта, то в неё попадёт много лишних папок и файлов, которые генерируются студией. Гораздо проще воспользоваться готовым решением - File | Export to Zip File.... Далее в диалоговом окне выбираете место на диске и файл проекта готов для распространения.
После обновлений студии в папке \Users\вашаУчётка могут остаться папки .AndroidStudio3.0, .AndroidStudio3.1, .AndroidStudio3.2 и т.д.
Если вы успешно обновились и экспортировали настройки, то можете удалить лишние папки, которые занимают порой больше гигабайта. Для страховки можете не трогать предыдущую версию, а удалять более старую версию. Например, при текущей версии 3.2 я удалил версию 3.0.
Upd.: В версии 3.3 появилось диалоговое окно, в котором можно выбрать директории для удаления. Видимо, прочитали мой совет и поняли, что нужно это дело автоматизировать.
Если нужно поделиться исходником класса, метода и просто блока кода, то выделяем нужный кусок кода или щёлкаем в свободном месте в редакторе кода правой кнопкой мыши и выбираем пункт Create Gist.... В диалоговом окне выбираем нужные значения. Если у вас нет учётной записи на Гитхабе, то выбирайте анонимный вариант.
Код класса или кусок кода будет размещён на сайте. Вы можете дать ссылку на код нужным людям.
В студии можно задать цвет для каждого типа сообщений, выводимых в LogCat. Заходим в File | Settings... | Editor | Colors & Fonts | Android LogCat.
Чтобы не сбивать встроенные настройки, сначала нажимаем кнопку Save as... и сохраняемся под другим именем, например, Cat. Далее снимаем флажок Use inherited attributes, чтобы появилась возможность редактирования свойств.
Дальнейшие шаги уже понятны. Выбираем тип сообщения, например, Info и выбираем цвет Foreground щелчком по цветному прямоугольнику.
Цветные сообщения удобнее просматривать, чем однотонные.
На экране приветствия появилась возможность кастомизации некоторых настроек. Первая настройка касается упорядочения проектов. Если их слишком много и вы хотите часть из них сгруппировать, то такая возможность появилась в Android Studio 2.0. Допустим, вы хотите объединить проекты, связанные с котами в отдельную группу Cats. Щёлкаем правой кнопкой мыши на проектах и выбираем пункт New Project Group.
В следующем окне выбираем название.
У вас появится новая группа. Теперь достаточно выбрать нужные вам проекты и через контекстное меню выбрать пункт Move To Group, далее выбираем нужную группу.
Теперь у нас порядок, проекты с котиками хранятся в одном месте.
Следующая кастомизациия касается значка проекта. По умолчанию, на экране приветствия вы не видите никаких значков у проектов. Снова вызываем контекстное меню и выбираем пункт Change Icon.
В следующем окне вы увидите стандартные значки студии для проекта. Нажимаем на ссылку Change... и выбираем свой значок для проекта. Можно выбрать значки для стандартной и тёмной темы студии.
Теперь вам будет проще найти свой проект по значку.
Студия умеет самостоятельно генерировать так называемые геттеры и сеттеры класса на основе полей класса. Если вы используете правильный стиль кодирования, то сначала требуется небольшая доработка настроек для распознавания префикса m (member) в названии переменных. Откройте окно настроек Android Studio File | Settings... и выберите раздел Editor | Code Style | Java. Перейдите на вкладку Code Generation. В таблице Naming найдите строку Field и в поле Naming Prefix введите префикс m для полей. Затем добавьте префикс s для статических полей в строке Static field.
Подобная настройка научит студию генерировать методы для поля, опуская префикс. Например, для поля mCatName будет создан метод setCatName() вместо setMCatName().
Теперь в файле класса с полями щёлкните правой кнопкой мыши после конструктора и выберите команду Generate…| Getter And Setter, выберите поля класса и щёлкните на кнопке OK, чтобы сгенерировать get- и set-метод для каждой переменной.
В Android используется кодировка UTF-8. Студия по умолчанию использует системную кодировку и у многих это win-1251. Этом может вызвать проблемы при выводе строковых сообщений. В правом нижнем углу можно быстро поменять кодировку для файла проекта.
Для глобального изменения настроек для будущих проектов идём File | Settings | Editor | File Encodings и меняем IDE Encoding и Project Encoding.
Идём в File | Setting... и выбираем Editor | Tools | External Tools. Нажимаем на значок с плюсом и добавляем путь к исполняемой программе или сценарию bat, cmd и т.п.
Студия поставляется с тремя предустановленными темами: IntelliJ, Darcula, Windows. По умолчанию, используется тема IntelliJ с светлым фоном. Тема Windows тоже используется светлый фон.
Особый интерес представляет тема с чёрным фоном Darcula. Для тех, кто слишком быстро читает, читаю название темы по слогам: Дар-ку-ла, а не Дракула. Здесь обыгрывается игра слов "dark".
Чтоб переключиться в тёмную тему, открываем окно настроек File | Setting (Ctrl+Alt+S), в диалоговом окне раскрываем категории Appearance & Behavior | Appearance и меняем тему в выпадающем списке Theme.
Вы также можете скачать другие темы по адресу ideacolorthemes.org.
Также мы можете доработать под себя предустановленную тему. Для этого откройте в тех же Настройках раздел Editor | Colors & Fonts, внесите требуемые изменения и сохраните свою тему под нужным именем через кнопку Save As....
В студии есть свой продвинутый буфер обмена. Скопируйте несколько раз разные участки кода. Перед вставкой нажмите комбинацию Ctrl+Shift+V. Появится диалоговое окно с историей скопированных строк. Выберите нужный вариант и нажмите OK.
Настройки буфера обмена можно найти в File | Settings... | Editor | General в блоке Limits. По умолчанию у настройки Maximum Number of Contents to Keep in Clipboard используется значение 5.
Если вы используете Eclipse и студию, то возможно вы уже раньше устанавливали JDK и SDK до студии. Нет необходимости скачивать и устанавливать их по новой. Зайдите в меню File | Project Structure и в пункте SDK Location укажите расположение папок.
Забыли параметры метода? Не беда, поместите курсор в скобки и нажмите комбинацию клавиш Ctrl+P. Подсказка поможет вам сообразить.
По умолчанию редактор кода открывает один активный документ. Если вы хотите видеть сразу два документа (или даже один документ в двух отдельных вкладках), то щёлкните правой кнопкой мыши на вкладке документа и выберите из контекстного меню вариант Split Vertically или Split Horizontally.
Если вы уберёте флажок с пункта "Show Tips on Startup", то всегда можете вернуть всё назад, вызвав это окно через меню Help | Tip of the Day.
В советах иногда попадаются коты! Вот скриншот.
В Eclipse в меню был пункт создания Javadoc. В студии нет комбинации клавиш для этой операции. Можно сгенерировать код автодополнением. Набираете команду /** и нажимаете Enter. Будет сгенерирован комментарий Javadoc.
/**
* @param a
* @param b
*
/
public void add(int a, int b)
{
//code here
}
Чтобы получить документацию на основе созданных комментариев, выбираем меню Tools | Generate JavaDoc.... В диалоговом окне выбираем нужные настройки и получаем на выходе набор html-файлов и других сопутствующих документов.
По умолчанию всплывающая подсказка не появляется при подведении указателя мыши к имени класса, метода и т.д. Я сначала расстроился, но кот сказал, что горю можно помочь. Нужно открыть меню File | Settings | Editor | General и поставить флажок у пункта Show quick doc on mouse move. И откуда кот это узнал?
По умолчанию нумерация строк отключена. Чтобы включить нумерацию, идём в File | Settings | и выбираем Editor | General | Appearance и ставим флажок у пункта Show line numbers. Впрочем, включить её можно прямо из редактора кода. Щелкните правой кнопкой мыши на серой области слева от кода и в контекстом меню выберите пункт Show Line Numbers.
Изучая настройки IDE, наткнулся на удобную опцию включения разделительной черты между методами. Очень удобно для меня, сразу видно, где заканчивается один метод и начинается другой. Очень не хватало такой функциональности, теперь код как на ладони.
Идём в File | Settings | Editor | General | Appearance и ставим флажок у пункта Show method separators.
Я привык, что в редакторе изменённые, но не сохранённые файлы на вкладках помечаются звёздочкой. Так работает в Eclipse, Notepad++ и многих других редакторах. А в Студии почему-то по умолчанию настройка отключена.
Идём в File | Settings | Editor | General | Editor Tabs и ставим флажок у пункта Mark modified tabs with asterisk.
Очень удобная настройка, позволяющая автоматически импортировать нужный класс при написании кода или вставке фрагмента кода из других источников. Я себе включил.
Идём в File | Settings | Editor | General | Auto Import и ставим флажок у пункта Add unambiguous imports on the fly.
Нередко бывают ситуации, когда строчку кода надо поместить в условие, цикл и т.п. (if, if/else, while, for, try/catch). Можно немного автоматизировать эту операцию, если установить курсор на нужной строке или выделить фрагмент кода и нажать комбинацию клавиш Ctrl+Alt+T или через меню Code | Surround With.
Нажмите комбинацию Ctrl+D (дублирование), чтобы быстро создать копию строки кода под указателем мыши.
Чтобы удалить строку, её нужно выделить и нажать кнопку Delete, а можно сразу нажать комбинацию Ctrl+Y (Win) или cmd+backspace(mac).
Нажмите клавишу Ctrl и левую кнопку мыши, когда курсор находится на имени класса, метода, поля класса или имени переменной - вы автоматически перенесётесь в место, где находятся их определения. Также можно использовать горячие клавише Ctrl+B.
Для быстрого набора переменной можно использовать первую и заглавные буквы в имени метода, класса, переменной. Например, можно набрать sst вместо setStatusText(). Это удобно, когда есть много похожих названий. Такой способ набора позволяет быстрее выбрать нужное имя.
Используйте горячие клавиши Alt+↓ для перехода к следующему методу, и Alt+↑ для перехода к предыдущему методу.
"Живые шаблоны" - специальное сочетание символов, которые могут преобразоваться в блок кода. Если вы не помните сокращение, то нажмите Ctrl+J (команда Code | Insert Live Template), чтобы увидеть список сокращений.
Если вы помните, то всё намного проще. Например, набираем ifn и нажимаем клавишу пробела. Данные символы преобразуются в код
Cat cat;
// напечатали ifn
if (cat == null) {
}
Живые шаблоны могут работать, как простые сокращатели (например, St превращается в String), а могут учитывать контекст. В нашем примере перед вводом шаблона был объявлен какой-то объект. Поэтому студия автоматически подставила в условие if подходящий объект по смыслу. Можете попробовать данный пример в разных местах вашей программы, чтобы увидеть, как это действует.
Рассмотрим пример использования живого шаблона на практике. Допустим, мы создали некий метод с использованием массива.
public void showSample(String args[]){
}
Введите внутри метода слово itar, от сокращённого "iteray array". В данном случае даже необязательно прибегать к горячим клавишам, так как студия сама покажет нужную подсказку, остаётся только нажать клавишу Enter. Живой шаблон видит, что метод использует массив, поэтому предложит следующий вариант.
public void showSample(String args[]){
for (int i = 0; i < args.length; i++) {
String arg = args[i];
}
}
Также можно задать массив внутри метода и по контексту шаблон развернёт код на основе этой информации.
Настройки шаблонов находятся в Settings... | Editor | Live Templates.
Наиболее интересными мне показались шаблоны для создания ссылок к компонентам find и toast.
Теперь можно написать:
Button button = find
После применения шаблона код автоматически развернётся в
Button button = (Button) findViewById(R.id.);
Осталось только добавить имя ресурса.
С toast и так всё понятно. После ввода этого шаблона получаем.
Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
Шаблон работает по контексту и подставляет имя вашей активности. Я заменил на свой вариант. Вместо:
Toast.makeText($className$.this, "$text$", Toast.LENGTH_SHORT).show();
Я использую
Toast.makeText(getApplicationContext(), "$text$", Toast.LENGTH_SHORT).show();
Видео о том, как создать собственный живой шаблон.