В общем, я обучаюсь по книге "Head First программирование под Android", почему по ней? А потому что она новая, и рассчитывал на то, что я избегу многие неприятности с "устаревшими" приёмами, библиотеками и т.д. Но не тут то было, по книге мне надо создать ListActivity(нужен макет со списком напитков), а как я понял, он уже устарел, т.к. теперь там много других активностей и из них более мене подходит Master/Detail Flow, но он создает много активностей и макетов, что никак не вписывается в задачу. Подскажите, что в этом случае делать?
У меня все проекты создаются дэфолтно с расширением класса appcompatactivity, а в моей книге просто Activity, это как то связано с обновлениями? Может кто подробно про это рассказать?
Ответ
Начнем с того, что Java вы начали изучать скорее всего не с того, что сразу начали GUI писать в JavaFX и организовывать клиент-серверное взаимодействие, а с самых основ и простейших примеров в консоли. При обучении разработки под Android вам стоит поступить так же - делать простейшие примеры, постепенно усложняя задачи. Фактически фреймворк Android отдельная эко-система, которая только использует язык Java для написания кода и все это требует отдельного обучения "с нуля".
Учиться я бы вам посоветовал по книге от BigNerdRanch: Б.Харди - "Android. Программирование для профессионалов" - 2015 (2-ое издание) - это, пожалуй, единственная достойная книга на русском языке для новичка. Обучение построено на том, что ставится конкретная задача (какое-то приложение) и последовательно, шаг за шагом, с подробными объяснениями, эта задача реализуется. В результате вы напишите реальное работающее приложение (всего их пять, если мне не изменяет память, исходники всех приложений доступны на GitHub и легко находятся по названию) и даже будете понимать, как это делать самому. Так же эта книга даст вам целостное представление об устройстве приложения и взаимодействии его частей, в отличие от книг-справочников или уроков в интернете, где дается разрозненная информация о отдельных элементах, оставляя самому думать о том, как все это соеденить в работающее и не пугающее остальных, кто увидит код, приложение :) При небольшом усердии можно найти бесплатную электронную копию этой книги.
Насчет устаревших классов и или наследников. То, что в реальной разработке использовать ListActivity вам вряд-ли придется, не зависимо от ее устаревшести, так как она наименее гибкая в реализации списка, мы здесь опустим.
Дело вот в чем - базовый класс экрана Android-приложения - класс Activity. Используя только этот класс вы безусловно можете реализовать весь необходимый функционал. Наследующиеся же от базового Activity классы лишь добавляют немного какой то функциональности, например, ListActivity реализует слушатель и упрощает подключение разметки, в основном - это делается и в обычной активити в несколько строчек кода. Что касается AppCompatActivity - она создана для того, чтобы поддерживать Material Design на устройствах с API < 21 (до Android 5.0, где этот дизайн по дефолту) вместе с библиотекой поддержки AppCompat и обеспечить взаимодействие ActionBar с этой библиотекой поддержки. Не думаю, что дизайнерские изыски первоочередная задача при начале обучения, главное для вас - научиться работать с фреймворком, украсить вы всегда успеете. Так же стоит заметить, что если вы не собираетесь распространять свои уроки, то беспокоится об обратной совместимости вообще нет нужды.
При начале обучения не стоит обращать внимание на "устаревшесть" информации или классов - принципы в базе остаются неизменными и ничего кардинально нового "новые" классы не несут. Напротив, понимание работы с "устаревшими" классами облегчат использование "новых", так как вам нужно будет только понять, что (и зачем) добавилось. В случае с AppCompatActivity вообще можно с некоторыми незначительными оговорками считать ее за Activity, то есть использовать равнозначно.
Таким образом в обучающих проектах вы можете с полной уверенностью использовать класс Activity, ListActivity и любой другой, который требуется для понимания задания, не обращая внимание на его устаревшесть. Когда вы будете понимать принципы работы с фреймворком достаточно, чтобы писать собственное приложение, вы без труда сможете определиться, какой именно тип активити вам нужен для каждого отдельного экрана, не стоит сейчас на этом заморачиваться. Если вас смущает дефолтное создание активити , то просто удалите первых девять букв (оставив extends Activity) и измените тему приложения с AppCompat, на какую-нибудь из Holo, либо не обращайте на это внимание вовсе - AppCompatActivity естественно реализует все базовые методы Activity и на работу примера это никак не повлияет, как правило.
Насчет шаблонов - единственный шаблон, который стоит использовать - Blank Activity, для чего остальные остается тайной за семью печатями :) - новичок не сможет их осилить ввиду крайней перегруженности, человек опытный реализует все самостоятельно, как ему нужно для конкретной задачи, это проще, чем адаптировать чужую заготовку под свое решение. Все эти шаблоны крайне избыточны и неоправданно запутаны.
Насчет уровня знания Java. Владение базовыми возможностями языка на хорошем уровне вполне достаточно для написания полноценного приложения. Наиболее актуально знание самого фреймворка, его классов, структуры приложений, взаимодействие с системой, принципы верстки макетов и тп. В частности жизненный цикл вызывает много непониманий в начале.
Гугл создал очень хороший портал разработчика Android, который включает как полное описание API, так и множество гайдов, примеров и инструкций. Кроме того, здесь вы всегда получите самую актуальную информацию, в частности об отличиях AppCompatActivity от базовой Activity (краткое описание и какие методы добавились к наследуемым и кстати, обратите внимание на цепочку наследования). Приятным бонусом будет то, что портал активно переводится на русский язык и многие статьи можно прочесть на родном языке. Советую вам очень внимательно изучить его после прочтения книги выше и обретения начального понимания принципов разработки под этим фреймворком. Начать можно отсюда
Ну и здесь есть огромное количество как готовых ответов, так же как и людей, всегда готовых ответить на хороший новый вопрос.
PS: если какие то моменты не достаточно понятны, пишите в комментариях, дополню ответ.
Комментариев нет:
Отправить комментарий