как писать приложения для андроид на python

Полноценное Python приложение на Android

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.

Начну рассказ пожалуй с самого приложения и завершу рассказам о том как оно делалось.

isortViewer

Мне как фотографу приходится тратить много времени на сортировку и отбор фотографий. Не всегда хочется сидеть за рабочим компьютером, когда под рукой есть ноутбук, смартфон или планшет, но копировать туда десятки гигабайт raw или jpeg файлов, а потом синхронизировать с рабочим компьютером — сомнительное удовольствие. Именно поэтому я создал программы isortManager и isortViewer, которые значительно облегчили мне работу по сортировке и отбору фотографий. Теперь заниматься отбором и сортировкой фотографий я могу лежа на пляже диване или скучая в пробке 🙂

Копипаст описания и пара скриншотов:
isortViewer — программа для фотографов, которая позволяет легко и быстрой отбирать и сортировать тысячи фотографий (raw или jpg) с фотосессий на ваших android смартфонах и планшетах. При этом, нет необходимости копировать десятки гигабайт jpg или raw файлов на устройство. Просто воспользуйтесь бесплатной программой isortManager для компьютера, которая сохранит все в один небольшой файл проекта:
1. Скачайте и запустите isortManager с официального сайта;
2. Создайте проект и добавьте папки с фотографиями. Поддерживаются форматы: jpg и raw (cr2, nef, orf и т.д.). В итоге у вас получится небольшой файл проекта (примерно 150 мб на несколько тысяч фотографий, будь то jpg или raw формат);
3. Скопируйте на ваше android устройство файл проекта, откройте в isortViewer. Вы можете помечать фотографии «на удаление», а так же, ставить рейтинги от 1 до 5 звезд;
4. После этого, скопируйте файл проекта обратно и примените изменения в isortManager. Кроме удаления выбранных фотографий, вы можете копировать или перемещать отмеченные фотографии. Например, фотографии с «5 звезд» можно скопировать в папку «шедевры», а «1 звезда» переместить в папку «хлам».

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Приложение абсолютно бесплатно и доступно на google.play, однако донейты приветствуются.

Исходники доступны на официальном сайте!

Как это делалось

Так как python лучший язык программирования в мире кроме python я ничего не знаю, решено было написать приложение на python.

isortManager

С isortManager для PC проблем не возникло, создание GUI сборки под windows уже давно обкатано и работает он очень просто: с помощью dcraw выдирает jpg превьюшки из raw файлов, ресайзит из с помощью PIL и складывает в один файл с достаточно простой структурой. Был изобретен свой весолипед с контейнером для хранения фотографий и метаданных (полный путь к фотографии, отметка «на удаление» и отметка рейтинга), так как, например, zip или tar формат, не могут изменять один файл в архиве (метаданные), требую перепаковки всех файлов. Файлы просто пишутся один за другим подряд и в блоке метаданных (обычный repr питоновского словаря) в конце сохраняется смещения начала файлов, плюс в конце файла пишется размер блока метаданных. GUI написано на Tkinter (люблю я его за быстроту написания и за малый размер итоговой сборки), вот собственно скриншот:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

И да, все это работает и на linux, и даже быстрее чем на windows )

isortViewer для android

Всего я нашел два способа заставить python приложение работать как полноценное приложение на android, это pygame for android и проект kivy.
Pygame — более низкоуровневый, все UI пришлось бы рисовать вручную, что отняло бы много времени, поэтому был выбран фреймворк kivy. Итак:

Это замечательный фрейморк для написания приложение для windows, linux, MacOS, android и iOS. Поддерживается мультитач, UI рисутется через OpenGL, значит должно работать аппаратное ускорение. Увидеть работу виджетов можно установив демонстрационное приложение Kivy Showcase. Есть возможность использования некоторых платформо специфичных функций, например, вибро или акселерометр, с помощью модуля android.

Для разработки я бы рекомендовал использовать linux, тем более, apk собираются именно в этой OS.

Hello World выглядит так:

Причем этот код будет работать на всех заявленных платформах. Пропадает необходимость в тестировании приложения в эмуляторе. Достаточно запустить скрипт на исполнение в своей любимой IDE и увидеть результат на экране компьютера, без задержек на компиляцию, запуск эмулятора и пр. Если вы все же хотите увидеть как это будет выглядеть непосредственно на устройстве, просто установите Kivy Launcher, скопируйте файлы проекта на карту памяти и запустите. Дебажить при этом можно при помощи adb logcat.
Если вы используете библиотеку android, которой нет на PC, но хочется запускать приложение не только на android, воспользуйте такой конструкцией:

Сборка apk достаточно проста и описана на этой странице. После сборки релиза, достаточно подписать свое приложение (я использовал этот мануал) и выложить в google play.

В следующей своей статье, я расскажу более подробно о процессе написания приложения «с нуля», расжевывая каждую строчку кода.

Хотелось бы сразу пресечь холивары на тему «для android только java, python не нужен». Я считаю, не важно, какие технологии «под капотом», главное чтоб приложение было качественным.
Сфера применения kivy может быть огромной. Сейчас на моем счету несколько приложений, написанных под заказ, где python с фремворком kivy показал себя с хорошей стороны. Например, ровно за один час, было написано приложение, для сети сервисных центров. Приложение работает в режиме киоска и установлено на дешевые китайские планшеты, которые висят в холле. Клиент набирает номер заказа, далее по WiFi планшет соединяется с сервером и сообщает статус заказа.

Источник

Мобильное приложение на Python c kivy/buildozer. Лекция в Яндексе

Не факт, что вам потребуется написать серьёзное приложение на Python. А вот быстро собрать работающий сервис, чтобы «продать» его заказчику, — почему нет? Python универсален, и опыт создания мобильного софта на этом языке может оказаться полезным. Владислав Шашков из Сбербанка рассказал о том, как строится разработка с помощью фреймворка kivy.

— Добрый день. Меня зовут Владислав Шашков, я работаю в Сбербанке и вообще-то я продуктовик, не разработчик. Именно этим может быть интересен мой доклад, потому что он наглядно покажет, что сделать мобильное приложение на Python достаточно несложно.

Kivy — все-таки он «Киви», потому что образно его изображают на обложках книжек в виде фрукта, и на русском ближе будет произношение «Киви». Фреймворк развивается с 2011 года. По сути, это графическая UI-библиотека для создания кроссплатформенных приложений, не только на мобильных платформах. Ее особенностью является язык KV, это язык разметки. Если образно попробовать описать что такое язык KV, получится, что так бы выглядел HTML, будь он написан на Python.

Также мы поговорим о библиотеке KivyMD, которая представляет из себя набор виджетов в стиле Material Design. KivyMD позволяет создавать дружелюбный гугловый интерфейс, с которым можно работать над пользовательским опытом.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Здесь на видео показано, как пролистываются все виджеты, которые есть в библиотеке. Как вы можете видеть, это достаточно богатый набор элементов. Это и закладки, и кнопки, и прогресс-бары, и всплывашки. В принципе, есть все необходимое, чтобы реализовать нужный вам клиентский опыт. Если надо будет собрать сборку на iOS, то выглядеть она будет точно так же. Тот же Material Design. В принципе, такое приложение можно опубликовать в App Store, хоть оно и будет похожее на Google.

Kivy без KivyMD имеет очень аскетичный дизайн. Его даже клиентам показывать не стоит. Похожие на убунтовские простые кнопки, простые диалоги, не адаптированные к мобильному опыту, к мобильным пользователям. А KivyMD молодцы, все красиво сделано.

Есть плохая новость. Исполняемые пакеты приложения собирает специальная утилита — buildozer. И плохая новость заключается в том, что начать пользоваться, сделать первую сборку с ее помощью совсем не просто. Как и, наверное, с любым опенсорсным ПО, чтобы все получилось, чтобы в итоге дойти до цели и получить APK, нужно пройти определенной «тропой», не сворачивая по сторонам.

На этом слайде подробно описано, что нужно делать, как пройти по «тропе» и не сделать лишнего. Не надо пытаться обновить сам kivy или какие-то другие библиотеки в образе. Все что нужно, указано на слайде, остальное само подтянется и будет работать.

Дальше немного расскажу о структуре проекта Kivy. На слайдах размещены QR-коды, где закодированы ссылки на GitHub, чтобы вы могли их сейчас считать и непосредственно проследить примеры, о которых я буду рассказывать. (Первая ссылка — прим. ред.)

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

На экране представлен файл buildozer spec, это спецификация на проект. Самое важное здесь: есть строка, в которой перечисляются requirements, то есть библиотеки, которые необходимы для сборки, и в ней указывать надо Kivy, KivyMD, запись там есть, и на GitHub она тоже доступна.

Важный раздел, он закомментирован, касается андроидовских NDK, SDK, его трогать не надо. Значения по умолчанию будут работать.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Немного про UI и UX. В языке разметки KV есть два понятия: виджеты и лэйауты. Виджеты — видимые элементы, кнопочки, поля ввода и тому подобное. Виджеты получают события и могут их обрабатывать. А лэйауты — это объекты, которые позволяют позиционировать виджеты, их есть несколько видов, чтобы выстроить виджеты в рядок или наоборот, как-то произвольно позиционировать. В общем-то, этот подход стандартный для визуальных UI, UX, и в других библиотеках он тоже используется.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Здесь пример языка KV (ссылка — прим. ред.). Как мы видим, вначале за решеткой идет импорт библиотек, затем в угловых скобках… Неправильно говорить «корневой», просто начальный лэйаут, которому в коде будет сопоставлен класс. Один в один названия должны совпадать. Таким образом происходит сопоставление разметки и класса в коде. Дальше через отступы идут вложенные виджеты, внутри виджетов, опять отступом идут property и события, они в одном списке идут. Вот пример кода.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Вверху класс — класс лэйаута. Дальше идет класс приложения, и внизу две строчки для загрузки константы разметки, и запуска приложения. Знаю, что аудитория, наверное, не очень знакома с мобильной разработкой, поэтому расскажу о дальнейших шагах, что конкретно надо сделать на телефоне, чтобы запустить и отладить свой APK.

Первым делом надо на телефоне включить решим разработчика. Он достаточно хитро включается. Обычно это секретная последовательность нажатий пунктов меню в режиме настроек телефона. В презентации приведена одна из распространенных последовательностей, но на вашем телефоне она может не работать. После выполнения этой последовательности действий появится режим для разработчика, и можно уже устанавливать APK, отлаживать и дальше действовать.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Buildozer запускается в виртуальной машине, виртуальную машину надо обновить, чтобы она была посвежее. После этого появиться интеграция с USB, тогда можно будет подключить телефон к виртуальной машине.

Признак того, что у вас произошло подключение — телефон спросит разрешения на отладку. Каталог проекта создается в папке /BUILD. Чтобы собрать проект, необходимо в каталоге проекта выполнить команду buildozer android debug. Установка APK на телефон выполняется утилитой из Android Studio, которая уже есть в образе, командой adb install.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

И фраза success говорит, что пока все хорошо, выполнена загрузка на телефон.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Отладка кода выполняется следующим образом. Надо запустить сбор отладочной информации командой adb logcat, чтобы параллельно с приложением работал сборщик. Ваше приложение после первого запуска «с высокой долей вероятности» упадет, после чего можно останавливать отладку и идти читать файлик логов.

Как искать сообщение об ошибке? По ключевому слову python. Самая последняя запись c ключевым словом python, как правило, расскажет вам, что пошло не так.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Про то, что можно сделать на телефоне. Мобильная платформа позволяет сделать не просто кнопочки, которые к API ходят, а поработать с большим разнообразием датчиков гаджета. Для работы с мобильной периферией есть стандартная библиотека plyer. Она платформенно-независимая, то есть все, что на ней будет написано, пересоберется с Android на iOS. На слайде перечислены все доступные опции. Там и GPS, и батарея, и камера… Но с камерой plyer позволяет сделать только статический снимок.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

А следующий пример как раз расширяет эту возможность. Ссылка на GitHub, пример, который позволяет получать видеопоток в приложении. У меня была бизнес-задача QR-код распознать с картинки. Также этот пример может работать с распознаванием видео, дополненной реальностью и т. п.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Еще у kivy есть пространство для пользовательских аддонов — Garden. Любой может делать виджеты и тому подобное. Полезный виджет, который я использовал, это работа с картами. Он активный, можно масштабировать, покрутить карту. Здесь показан пример, как его подключать. В Garden есть много других виджетов.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Когда я работал над своим проектом, то проводил коридорное тестирование с коллегами, чтобы собрать обратную связь об использовании приложения. И получил такие замечательные возражения, как «я левые APK не буду ставить», «мама не разрешает», «я только телефон купил». Чтобы продолжить тестирование клиентского опыта по существу, мне пришлось пройти путь создания мобильного приложения до конца, а именно сделать релиз в Google Play. На слайде он описан. Основные моменты заключаются в том, что надо с ключами повозиться, и публикация в Google Play не бесплатная. Чтобы зарегистрироваться разработчиком, надо приготовить 25 долларов. И это еще очень демократично, потому что Apple просит 99 долларов.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

На данном слайде приведены ссылка на пример приложения, можно посмотреть мой проект. Это все еще альфа-прототип, поэтому прошу не судить строго, если приложение будет падать. Ссылка на актуальную документацию свежая, мне представляется, что она хорошая. Есть комьюнити, группа ВКонтакте, ее админ на Хабре периодически статьи выпускает.

Источник

Kivy — Создание мобильных приложений на Python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

В наши дни каждый разработчик может столкнуться с необходимостью работы над мобильным или веб-приложением на Python. В Python нет встроенных инструментов для мобильных устройств, тем не менее существуют пакеты, которые можно использовать для создания мобильных приложений. Это Kivy, PyQt и даже библиотека Toga от Beeware.

Содержание

Библиотеки являются основными элементами мобильного мира Python. Однако, говоря о Kivy, нельзя игнорировать преимущества данного фреймворка при работе с мобильными приложениями. Внешний вид приложения автоматически подстраивается под все платформы, разработчику при этом не нужно компилировать код после каждой поправки. Кроме того, здесь для создания приложений можно использовать чистый синтаксис Python.

В руководстве будут разобраны следующие темы:

Разбор данного руководства предполагает, что читатель знаком с объектно-ориентированным программированием. Для введения в курс дела можете просмотреть статью об Объектно-ориентированном программировании (ООП) в Python 3.

Принципы работы фреймворка Kivy Python

Kivy был создан в 2011 году. Данный кросс-платформенный фреймворк Python работает на Windows, Mac, Linux и Raspberry Pi. В дополнение к стандартному вводу через клавиатуру и мышь он поддерживает мультитач. Kivy даже поддерживает ускорение GPU своей графики, что во многом является следствием использования OpenGL ES2. У проекта есть лицензия MIT, поэтому библиотеку можно использовать бесплатно и вкупе с коммерческим программным обеспечением.

Во время разработки приложения через Kivy создается интуитивно понятный интерфейс (Natural user Interface), или NUI. Его главная идея в том, чтобы пользователь мог легко и быстро приспособиться к программному обеспечению без чтения инструкций.

Kivy не задействует нативные элементы управления, или виджеты. Все его виджеты настраиваются. Это значит, что приложения Kivy будут выглядеть одинаково на всех платформах. Тем не менее, это также предполагает, что внешний вид вашего приложения будет отличаться от нативных приложений пользователя. Это может стать как преимуществом, так и недостатком, все зависит от аудитории.

Установка Kivy

У Kivy есть множество зависимостей, поэтому лучше устанавливать его в виртуальную среду Python. Можно использовать встроенную библиотеку Python venv или же пакет virtualenv.

Виртуальная среда Python создается следующим образом:

Источник

Разработка мобильных приложений на Python. Библиотека KivyMD

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Приветствую! Сегодня речь снова пойдет о библиотеке KivyMD — наборе виджетов для кроссплатформенной разработки на Python в стиле Material Design. В этой статье я сделаю не обзор виджетов KivyMD, как в недавней статье, а, скорее, это будет материал больше о позиционировании виджетов. Что-то похожего на туториал по разработке мобильных приложений на Python для новичков здесь не будет, так что если впервые слышите о фреймворке Kivy, вряд ли вам будет все это интересно. Ну, а мы погнали под кат!

На днях скачал из Google Play демонстрационное приложение Flutter UIKit:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Некоторые элементы UI отличаются, не в силу каких-то технических особенностей, из-за которых нельзя было получить идентичный результат, а просто я посчитал, что так будет более органичней (например, черный Toolbar, по моему мнению, совсем не смотрится).

Итак! Что бросается в глаза, глядя на экран, который мы будем воспроизводить? Прозрачный фон переднего layout. В Kivy такую возможность предоставляет FloatLayout, который позволяет размещать в себе виджеты и контроллы один над другим следующим образом:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Схематично наш экран будет выглядеть так:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Разметка этого экрана довольно простая:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Почему я говорю о FloatLayout, если наш экран унаследован от Screen?

Все виджеты во FloatLayout позиционируются от нижнего левого угла, то есть, на экране им автоматически присваивается позиция (0, 0). В разметке не сложно проследить порядок добавления элементов на экран сверху вниз:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Если кто-то обратил внимание, то позицию мы указали только одному виджету:

Каждому виджету в Kivy помимо конкретных координат (x, y) можно указать подсказку позиции:

Так вот, нижнее фоновое изображение…

… благодаря виджету FitImage (библиотека KivyMD), автоматически растягивается на все выделенное ему пространство с сохранением пропорций изображения:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

По умолчанию каждому виджету и лайоуту в Kivy предоставляется 100 % пространства, если не указанно иное. Например, если вы захотите добавить на экран одну кнопку, вы, очевидно сделаете следующее:

И получите результат:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Кнопка заняла 100 % пространства. Чтобы разместить кнопку по центру экрана, нужно, во-первых, задать ей необходимый размер и, во-вторых, указать, где она будет находится:

Теперь картина изменилась:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Также можно указать свойство size_hint, от 0 до 1, (эквивалент 0-100%), то есть, подсказка размера:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Или тоже самое, но подсказка ширины (size_hint_x):

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

MDToolbar имеет высоту в 56dp, не может занимать все пространство, и если ему не подсказать, что его место сверху, то он автоматически прилипнет к нижней части экрана:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Список карточек — OrderProductLayout (о нем мы поговорим ниже) — это ScrollView с элементами MDCard и он занимает всю высоту экрана, но благодаря padding (значения отступов в лайоутах) кажется, что он находится чуть выше центра экрана. Ну а MDBottomAppBar по умолчанию кидает якорь к нижней границе экрана. Поэтому только MDToolbar мы указали, где его место.

Теперь давайте посмотрим, что представляет из себя виджет OrderProductLayout:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Как видим, это четыре карточки, вложенные в ScrillView. В отличие от родительского экрана, который унаследован от FloatLayout, здесь все виджеты читаются сверху вниз.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Это очень удобно, поскольку прослеживается четкая иерархия виджетов, древовидная структура и с одного взгляда понятно, какой виджет/контролл какому лайоуту принадлежит. В Kivy наиболее частым используемым лайоутом является BoxLayout — коробка, которая позволяет размещать в себе виджеты по вертикали либо по горизонтали (по умолчанию — последнее):

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Более наглядно это видно из следующей схемы, где используется BoxLayout горизонтальной ориентации:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Мы запретили BoxLayout использовать 100% пространства — size_hint_y: None и сказали — твоя высота будет ровно такой, какой будет высота самого высокого элемента, вложенного в тебя — height: self.minimum_height.

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Если бы мы захотели использовать вертикальную прокрутку списка, нам нужно было бы изменить GridLayout следующим образом:

Заменить строки (rows) на столбцы (cols) и указать в minimum не ширину, а высоту:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Следующие карты — выбор цвета и размера (они практически идентичны):

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Отличительной особенностью языка разметки Kv Language является не только четкая структура виджетов, но и то, что этот язык поддерживает некоторые возможности языка Python. А именно: вызов методов, создание/изменение переменных, логические, I/O и математические операции…

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Вычисление значения value, объявленного в Label

… происходит непосредственно в самой разметке:

И я никогда не поверю, что вот это (код Flutter)…

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

… логичнее и читабельнее кода Kv Language:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Вчера меня спрашивали, как у Kivy обстоят дела со средой разработки, есть ли автокомплиты, хотрелоад и прочие прелести? С автокомплитами все отлично, если пользоваться PyCharm:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Насчет хотрелоад… Python — интерпретируемый язык. Kivy использует Python. Соответственно, чтобы увидеть результат, не нужна компиляция кода, запустил — увидел/протестирвал. Как я уже говорил, Kivy не использует нативные API для рендера UI, поэтому позволяет эмулировать различные модели устройств и платформ с помощью модуля screen. Достаточно запустить ваш проект с нужными параметрами, чтобы на компьютере открылось окно тестируемого приложения так, как если бы оно было запущено на реальном устройстве. Звучит странно, но поскольку Kivy абстрагируется от платформы в отрисовке UI, это позволяет не использовать тяжелые и медленные эмуляторы для тестов. Это касается только UI. Например, тестовое приложение, описываемое в этой статье тестировалось с параметрами -m screen:droid2, portrait, scale=.75.

Слева — запущено на мобильном устройстве, справа — на компьютере:

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

как писать приложения для андроид на python. Смотреть фото как писать приложения для андроид на python. Смотреть картинку как писать приложения для андроид на python. Картинка про как писать приложения для андроид на python. Фото как писать приложения для андроид на python

Ну, и, наконец, финальный результат — запуск на мобильном устройстве…

Единственное, что огорчает, это скорость запуска. У того же Flutter она просто феноменальная!

Надеюсь, был кому-то полезен, до новых встреч!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *