
Эта статья, хотя нет, даже не статья, так заметка, о первом опыте написания приложения под андроид на Python.
Не так давно начал интересоваться, как обстоят дела с Python на андроид. Первым
делом пособирал, почитал информацию в сети (которой, к сожалению, на данный
момент не так много) . В результате поисков наткнулся на книгу посвященную
разработке на питон при помощи sl4a(книга на английском. В
принципе все понятно будет людям и со средним знанием английского языка),
прочитал ее, поглядел примеры. Вывод – отличное пособие для тех кто хочет
пользоваться sl4a и в частности python на своем андроид
смартфоне.
делом пособирал, почитал информацию в сети (которой, к сожалению, на данный
момент не так много) . В результате поисков наткнулся на книгу посвященную
разработке на питон при помощи sl4a(книга на английском. В
принципе все понятно будет людям и со средним знанием английского языка),
прочитал ее, поглядел примеры. Вывод – отличное пособие для тех кто хочет
пользоваться sl4a и в частности python на своем андроид
смартфоне.
Итак, рассмотрим слегка, что мы имеем. Для доступа к api андроидa есть один
модуль – android. Из него мы тянем функционал библиотеки бионик. Не так много нам доступно для создания интерфейса как хотелось бы. Небольшие окна ввода текста, даты, времени, что то на подобии листбокса, чекбоксы, прозрачные информационные окна, алерты. Однако если писать приложение,
используя чисто питон – смотрится все это, мягко говоря, убого. Но выход есть. Так как в андроиде полнофункциональный вебкид движок и он доступен из питона то весь интерфейс мы можем писать на html страничках с использованием ява-скрипта и стилей css.Потихоньку стал писать для себя небольшую программу. Сначала на чистом питоне, затем переписал интерфейс на html.
модуль – android. Из него мы тянем функционал библиотеки бионик. Не так много нам доступно для создания интерфейса как хотелось бы. Небольшие окна ввода текста, даты, времени, что то на подобии листбокса, чекбоксы, прозрачные информационные окна, алерты. Однако если писать приложение,
используя чисто питон – смотрится все это, мягко говоря, убого. Но выход есть. Так как в андроиде полнофункциональный вебкид движок и он доступен из питона то весь интерфейс мы можем писать на html страничках с использованием ява-скрипта и стилей css.Потихоньку стал писать для себя небольшую программу. Сначала на чистом питоне, затем переписал интерфейс на html.

1.основное меню

2.список по тапу на
пункте.
пункте.

3.небольшое окно
ввода.
ввода.
Вот так изменился интерфейс уже после

Для верстки интерфейса нам понадобятся хотя бы начальные знания html,js.Лично я в глубокие дебри html не лез. По молодости увлекался созданием простеньких сайтов, вот остались навыки, которые сейчас мне пригодились.
Общение html части с питон кодом осуществляется при помощи эвентов(событий). Для ввода
текста в html я использовал формы. Функция создающая эвенты выглядит так- droid.eventPost("say",document.getElementById("say").value) . Это функция будет вызываться при выполнении droid.eventPost('say', None) в python части. (eventPost("name”,data.где name- имя функции а data –передаваемые ей данные, в моем случае текст из строки ввода.).В питон коде функция обработки эвента в цикле пишем функцию-droid.eventWaitFor("say”) .ниже функция которую мы хотим выполнить после того как будет нажата кнопка.
текста в html я использовал формы. Функция создающая эвенты выглядит так- droid.eventPost("say",document.getElementById("say").value) . Это функция будет вызываться при выполнении droid.eventPost('say', None) в python части. (eventPost("name”,data.где name- имя функции а data –передаваемые ей данные, в моем случае текст из строки ввода.).В питон коде функция обработки эвента в цикле пишем функцию-droid.eventWaitFor("say”) .ниже функция которую мы хотим выполнить после того как будет нажата кнопка.
Немного мудрено конечно, надеюсь, в будущем придумают что-нибудь поуниверсальней на чистом питоне. У такова метода есть и свои недостатки- после сворачивания программы сервис sl4a остается висеть в фоне о чем нам говорит значок в панели уведомлений. Топаем по нему и останавливаем наш скрипт (не совсем удобно.). выход есть – после обработки евента закрывать сервис командой sys.exit(). У себя сделал именно так.но это конечно подойдет не всем.
Я тоже очень надеюсь на развитие гуя в android
ОтветитьУдалитьв андроид много методов для построения интерфейса. половину хотя бы прикрутить к питону.
ОтветитьУдалить