我有一个 appwidget 应用程序,希望用户能够创建可以在运行时应用的皮肤。我首选的解决方案是使用带有九个补丁 png 图像的 apk 文件,这些图像可以拉伸以适合 ImageView 的小部件,但是它开始看起来我可能不得不使用另一种打包技术(例如 zip 文件)。
我尝试过:使用 context.getResourcesForApplication(my.app).getResources... 将九个补丁资源作为 Drawable 导入,使用画布将它们转换为位图,并使用 setImageViewBitap 将位图设置为 RemoteView。这不起作用,因为我需要在转换期间指定结果视图 (myBitmap.setBounds(..,..)) 的大小,并且我的 appwidget 中的某些宽度/高度不固定。也许有一种方法可以获得我错过的高度等。
使用 setImageViewUri() 将资源直接导入 RemoteView 这不起作用,因为该函数似乎不再读取 android.resource:// Uri 的(我在 ImageView 源中四处寻找,它似乎只读取文件路径和内容:// 乌里的)
使用 setImageViewResource() 将资源直接导入 RemoteView 不起作用,因为从外部包检索的 id 显然不包含包引用。
我要避免的是对我所有的 appwidget 宽度和高度进行硬编码,或者使用单独的打包方案。
有没有人很好地实现了 appwidget 皮肤并想分享知识?或者,我的逻辑中可能存在一个可以指出的漏洞。
如果需要,我可以提供代码,尽管我现在没有任何代码。