У меня есть приложение appwidget, и я хочу, чтобы пользователи могли создавать скины, которые можно применять во время выполнения. Мое предпочтительное решение состоит в том, чтобы использовать apk-файлы с девятью патч-изображениями png, которые растягиваются, чтобы соответствовать виджету виджета ImageView, однако начинает казаться, что мне, возможно, придется использовать другой метод упаковки (например, zip-файлы).
Что я пробовал:
Импортируем девять ресурсов патчей как Drawable с context.getResourcesForApplication (my.app) .getResources ..., преобразуем их в растровые изображения с помощью canvas и устанавливаем растровое изображение в RemoteView с помощью setImageViewBitap.
Это не сработало, потому что мне нужно было указать размер результирующего представления (myBitmap.setBounds (.., ..)) во время преобразования, а некоторые ширины / высоты в моем appwidget не исправлены. Возможно, есть способ получить высоту и т. Д., Которые я пропустил.
Импорт ресурсов непосредственно в RemoteView с помощью setImageViewUri ()
Это не работает, потому что функция, кажется, больше не читает android.resource: // Uri's (я искал в источнике ImageView, и кажется, что он только читает пути к файлам и контент: // Uri's)
Импорт ресурсов непосредственно в RemoteView с помощью setImageViewResource (), который не работал, поскольку идентификатор, полученный из внешнего пакета, очевидно, не включает ссылку на пакет.
Чего я пытаюсь избежать, так это жесткого кодирования ширины и высоты всего моего приложения, или использования отдельной схемы упаковки.
Кто-нибудь реализовал скины appwidget и хочет поделиться своими знаниями? С другой стороны, в моей логике может быть дыра, на которую можно указать.
Я могу предоставить код, если требуется, хотя у меня его сейчас нет.