valerken писал(а): ↑Вт дек 03, 2019 10:18 pm
Для меня не совсем удобно, потому что часть сцен у меня для планшета/смартфона в книжной ориентации, а часть - для альбомной. Ваше приложение с этим справляется весьма успешно. Ну, а виджет... Придется делать специальные сцены для вывода в виджете.
Совершенно верно вы все поняли.
Вполне возможно, что я просто неточно донес данную мысль в своих пояснениях и FAQах...
Что касается геометрии
Тут мы, к сожалению, натыкаемся на особенности самого Android, у которого ячейка виджета испокон веков квадратная!
и принята константой 40х40 dpi.
Как вы наверняка замечали, при размещении виджета, экран делится на ячейки, и виджет занимает одну или несколько из этих ячеек по ширине и высоте. Поэтому, по мере развития экранов и разных хотелок производителей, они изобрели формулу. Чтобы конвертнуть ячейки в dpi, используется формула 70 * n – 30, где n – это количество ячеек. Т.е. если мы, например, хотим, чтобы виджет занимал 2 ячейки в ширину и 1 в высоту, мы высчитываем ширину = 70 * 2 – 30 = 110 dpi и высоту = 70 * 1 – 30 = 40 dpi. А вовсе не 80х40 !
Думаю, понятно, что на современных экранах с разрешениями 380...420 dpi с таким подходом очень быстро набегают "лишние" ячейки.
Но посколкьу в виджетах почти все используют вовсе не картинку в виде фона, а текстовую информацию и прочие контейнеры, позиционируемые друг относительно друга (как в html), то это редко кого парит.
А мы по факту имеем разные искажения на разных девайсах. А сверху на этот ужас еще накладывается портретная или альбомная ориентация... И получаем полный пипец.
А на девайсах, например, Galaxy TAB 10" с бешеными разрешениеми экрана 2,5...3К , вообще изначальный размер виджета вовсе не 1х1 ячейка, а 2х1. А на экране она выглядит при этом почти квадратной!
...сами понимаете, что потом получится, когда в нее вставляешь прямоугольную картинку?
Соответственно, мне ничего другого не оставалось, как в виджетах пойти самым простым путем - растягиваю скриншот страницы до границ виджета. Чтобы это хоть как-то приемлемо смотрелось в большинстве ситуаций на подавляющем большинстве устройств - это самый простой способ, чтобы хоть как-то продвинуться в данном направлении и выпустить хотя бы первый релиз виджетов.
Можно попробовать добавить настройку "сохранять пропорции страницы" и включить математику, вписывая картинку по наименьшей стороне. Но тогда возможны ситуации, что прочие элементы виджета (время обновления, шестеренка и т.п.) - повиснут где-то в воздухе в отдалении от изображения страницы.
- ---------.png (595.88 КБ) 2936 просмотров
Зато получаем нормальную геометрию, без искажений.
Я и думаю, это реально надо добавить как возможность. В ряде случаев это весьма оправдано!
Ну а висящие элементы... их можно просто скрыть.
По крайней мере при таком подходе можно уже не рисовать "кастомную" геометрию html для подгонки под свои девайсы.
Как я уже писал выше - можно попробовать добавить виджету "полезных настроек", позволящих поиграться с конкретными ситуациями и выбрать подходящее отображение. Но тут главное не перегнуть, чтобы простые люди, далекие от "верстки" и "dpi" не начали вешаться...