[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ] |
|
Форум Инфо веб мастеру Учебник Создание приложения в стиле Android! |
Создание приложения в стиле Android! |
Часто, интерфейс даже очень популярных Android-приложений спроектирован кое-как и складывается впечатление, что большинство разработчиков даже не слышало о User Interface Guidelines. Но следование рекомендациям не очень сложно, а иногда даже позволяет экономить время на разработку. Для того, чтобы показать, что это действительно так, я предлагаю пройтись по нескольким ключевым элементам проектирования интерфейса приложения на примере слегка продвинутого «Hello World».
Статья расчитана на начинающих Android-разработчиков. Исходный код можно скачать по ссылке в конце, а пояснения будут касаться: * Создания всплывающего меню * Проектирования окна настроек * Работы с Nine-patch graphics Предварительная подготовка 1. Создаем приложение AdvancedHelloWorld. Для программ, которые не используют спецефическую функциональность определенной версии ОС, я предпочитаю ставить BuildTarget — Android 1.6, а Min SDK Version — 3. В этом случае будет работать разделение ресурсов по плотности экрана (на hdpi, mdpi, ldpi), но и пользователи Android 1.5 не останутся в стороне. Об Android Asset Studio Open source онлайн проект, ценность которого сложно переоценить. Позволяет быстро создавать иконки приложения (launcher icons), иконки меню, закладок и оповещения. Для работы он просит Chrome 6, в других браузерах некоторые элементы не работают. Ссылка в конце статьи. Замечание по поводу ресурсов На мой взгляд, наиболее рациональный выбор — это использование отдельного набора графики для hdpi-устройств и отдельного — для всех остальных, в разрешении, адаптированном под mdpi. Да, мы не используем возможность адаптации под ldpi, но этих устройств сравнительно немного и можно оставить полную адаптацию на «закуску», когда все графическое оформление уже устоялось. В любом случае, поскольку мы задекларировали поддержку Android 1.5, в папке drawable должны быть все испльзуемые графические элементы. Остальное — по желанию. Всплывающее меню Меню описываются, как не сложно догадаться, в xml файлах. Сделаем один такой файл для нашего главного окна: resmenumain_menu.xml Два момента: При создании меню первым делом стоит поискать иконки в стандартном наборе. Все они есть в установленном SDK — android-sdk-windowsplatformsandroid-1.6dataresdrawableic_menu_*.png Фактическое создание пунктов меню происходит в onCreateOptionsMenu: Обработка нажатий — в onOptionsItemSelected: @Override Проектирование окна настроек И снова, основная работа в xml. В resxml создем settings.xml: Набор поддерживаемых настроек не очень широкий, но основные потребности он покроет. Устанавливая флаг «persistent» нам даже не придется кодировать сохранение/загрузку. Достаточно прочитать нужное значение из SharedPreferences: SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); В качестве дополнительных приятных моментов можно отметить зависимости (android:dependency), которые позволяют «включать» определенные пункты только в случае отмеченного «ведущего» элемента, а также простую работу с вложенными наборами, которые в приложении выглядят как отдельные окна. PreferenceActivity плохо поддается стилизации. Можно, конечно, для соответствующего тэга в AndroidManifest.xml добавить android:theme="@android:style/Theme.Light", но для вложенных настроек получится каша. Обсуждение этой проблемы на Stackoverflow сводится к мысли, что, в общем случае, лучше оставлять все как есть, на черном фоне. Работа с Nine-patch graphics Nine-patch — это стандартный метод, позволяющий сделать графику в Android-приложении независимой от разрешения и размера экрана. По сути, это обычное изображение в формате png с однописксельной служебной рамкой. Для правильной работы с этой рамкой в состав SDK входит специальная утилита draw9patch. Черной линией толщиной в 1 пиксель сверху и слева отмечается область, которая будет дублироваться при увеличении изображения. Линии справа и снизу определяют «рабочую область». Для обычной кнопки, например, это место для текста. |
| |||
| |||