категории | RSS

Создание и управление интерфейсом на Android с Python. Часть 5.



Всем привет! После долгого перерыва связанным решил продолжить серию статей, посвященных разработке интерфейса под платформу Android на языке программирования Python.
И сегодня мы, как всегда, будем опровергать распространенное мнение, что якобы до сих пор в проектах Python for Android (далее P4A) не построить приличного интерфейса, кроме как общение с пользователем посредством диалоговых окон. Так считают те, кто просто не умеет и, главное, не хочет учится и развиваться в этом направлении.
На самом деле, в построении интерфейса P4A нет ничего сложного и, лично для меня, его программирование значительно проще и удобнее, чем на, ныне мертвой, платформе Symbian.
Собственно, сегодняшняя статья и примеры в ней, в отличие от предыдущих, будут не демонстративно-показательны, а максимально приближены к работе реального приложения. Мы рассмотрим переключение layout-ов в приложениях P4A на примере разрабатываемого мною клиента "HeaTDV4A" для нашего сайта и заодно протестуем работу модуля pySetting (подробнее об эксплуатации модуля читайте в документации самого модуля).

Ранее, функцией fullShow("путь к макету") я подключал различные интерфейсы в одном скрипте. На моем старом устройстве это приводило к тому, что на секунду первый макет интерфейса исчезал, как будто бы приложение закрылось, и через секунду появлялся второй вызваный макет. Это было неприемлемо и эстетически некрасиво. Тогда я попробовал помещать подключение новых layout-oв в отдельные модули, после чего данная проблема была решена. На новом девайсе подобных траблов, связанных с миганием дисплея, я не замечал, однако с тех пор приучил себя разбивать вызовы макетов интерфейса на модули. Во-первых, это делает код намного читабельней и понятней как для других программистов, так и для вас самих. Во-вторых, если вы вызвали функцию fullShow и открыли второй макет интерфейса, чтобы вернуться к первому экрану, вам придется либо заново "рисовать" главный экран поверх второго, либо вызвать функцию fullDismiss. Во втором случае вы закроете все вызваные функцией fullShow макеты интерфейса, что, согласитесь, нам не нужно.

Итак, от слов к делу! Давайте "нарисуем" два макета интерфейса и попробуем вывести на экран сначала первый, а затем второй при условии, что второй макет находится в отдельном модуле.

Файл program.py
 Показать / Скрыть текст

Запустив пример, мы увидим следующее:
 Показать / Скрыть текст

Теперь если выбрать "Меню/Настройки" нам откроется новый экран с пунктами настроек программы:
 Показать / Скрыть текст

Нажав клавишу "Возврат" мы благополучно попадем в экран первого макета.

На этом пока все. Вот ссылка на архив примера. Распаковать папку P4A в папку sl4a.

Автор: Иванов Юрий, aka HeaTTheatR

HeaTTheatR
2014-07-30T00:36:37Z

Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 3

#3   HeaTTheatR    

nur87, Никакой черной магии. Можно писать и result = response[\"which\"]. Код взят из моего модуля, и данная строка предотвращает ошибку KeyError, которая, как раз-таки, магическим образом иногда вылазит.


* редактировал(а) HeaTTheatR 01:17 15 авг 2014

0 ответить

#3   nur87    

result = response[response.keys()[0]]


тут зарыта черная магия smile


0 ответить

#3   Zaterehniy    

жаль что из сл4а не достать до preferences. экран настроек не пришлось бы рисовать самому. спасибо за статью.


* редактировал(а) Zaterehniy 06:49 31 июл 2014

1 ответить

Яндекс.Метрика