Alex SandrovДальше было сложнее: надо было это как-то отображать. Тут мне пришла в голову идея: юзер берёт заранее нарисованную картинку с кнопками, которые на картинке по месту положения соответствуют контролам, и просто рисует это на окно. Для выпендрежа я сделал небольшую прослойку для подсветки этих мест по
То есть прозрачные контролы накладывать на PNG картинку, что ли? Я не поня
A F
fgЛюбой новый фреймворк требует изучения и разбирательства
Вот хотелось это по максимуму упростить. Потому что да, на моей памяти, ЛЮБОЙ вопрос или упоминание темы GUI вызывает вот такие длинные дискуссионные эпосы, которые где-то скатываются в "Qt vs wxWidgets", и там ещё есть один человек, который говорит, что всё легко можно и на GDI сделать 🥲
fgИ что вы будете делать на Android с этой вашей структурой окна, например? Его там ни подвинуть, ни развернуть, ни пёрнуть - ничего нельзя сделать, что обычно можно сделать с тем, что принято окном называть)
ммм, прошу прощения? попап с нотификацией сейчас на Андроиде полноценное окно (можно двигать, закрывать), миниатюра с текущим видео из плеера - аналогично (специально для СДВГ), плюс есть топ-модели с несколькими поверхностями (аналог нескольких мониторов)
D Окна в ведроиде разные. Пресловутая миниатюра с видео из плеера - это вообще PiP, он может быть единственным и требует специальной обработки в приложении. Ближе всего в понятию окна - Freeform. И ресайз поддерживают не все приложения. Отдельно стоят вирт дисплеи, которые (особенно в лаунчерах) любят называть картинкой в картинке, но это вообще отдельная сущность со своими приколами (экземпляры приложений, DPI, проброс ввода и жестов), которые с каждой версией ОС потихоньку улучшаютсяF Я не знаю, работали вы со спецификой Android или нет, но давайте разберём что обычно разработчики подразумевают под термином "окно" (особенно если мы говорим о разработке кроссплатформенного GUI фреймворка. Окно это некий абстрактный графический контейнер (чаще всего в форме прямоугольника) с какими-то координатами, в котором мы можем рисовать всякую шляпу. Окно у каждого графического приложения обычно своё со своим графическим буфером, которые композитор (оконный менеджер) собирает в единую картинку. При разработке кроссплатформенного GUI фреймворка придётся написать абстракцию над оконной системой целевой платформы для обработки инпутов и композиции своего окна (ресайзинг, движение, etc). Теперь о специфике Android: окна в Android есть, также есть композитный оконный менеджер. Вроде всё зашибись, да? Вот у нас же окно SystemUI со строкой состояния компонуется с нашим приложением! А вот и нет! Потому что, оказывается, в Android есть понятия Task и Activity, нас интересует только последнее, потому что конкретно с ним работают пользовательские Android приложения. Именно Activity хостит UI контент приложения и диспатчит инпуты. Activity обычно привязывается к Window (интерфейс, который реализует класс PhoneWindow). "Ну и что ты тогда мозги трахаешь, вот же Activity это просто обёртка над Window", - можете подумать вы. Но только вот у Activity может быть несколько окон (например, когда приложение показывает какой-нибудь диалог или тост). Также Activity не умеет обрабатывать координаты и размер своего прямоугольника - за это отвечает упомянутый ранее Task, управление которым инкапсулировано в компоненте system_server под названием ActivityTaskManagerService (ранее ActivityManagerService, потом отделили), публичного доступа к которому нет (нужны специальные привилегии, без рута/кастомной прошивки которые не получить), Получается, что не "Окна в ведроиде разные", как вам сказали выше, а окно в Android это фиг поймёшь что такое, потому что проектировали это в порыве нарко
Alex SandrovЧто нужно было сделать. Концептуальную структуру из окон-контролов на плюсах, тут проблем нет, любой человек запилит такую платформу.
А вот дальше надо было это связать с операционкой... и в результате всегда получается очередное Qt
Я попробовал упростить. В результате у меня получилось со стороны с
Ну, я так понимаю, ты сам уже штук 5 таких платформ запилил...