我的Android应用程序要求通过从服务器端检索新的颜色和图像来定制图形上的部件.这些图像中的一些是九个补丁图像.
我找不到创建和显示这些九个补丁图像(已通过网络检索)的方法.
检索九个补丁图像并将其作为位图保存在应用程序中.要创建NinePatchDrawable,您需要相应的NinePatch或NinePatch的chunk(byte[]).无法从资源中加载NinePatch,因为图像不存在/res/drawable/.此外,为了创建NinePatch,您需要NinePatch的大块.所以,这一切都深入到大块.
那么问题是,如何从现有的Bitmap(包含NinePatch信息)格式化/生成块?
我搜索了Android源代码和Web,我似乎无法找到任何这方面的例子.更糟糕的是,NinePatch资源的所有解码似乎都是本地完成的.
有没有人有这种问题的经验?
我的目标是API级别4,如果这很重要的话.
我使用Brian Griffey提供的优秀要点(在此处找到),在Android 3.0+上成功构建了一个9patch drawable .
基本上我从网络加载原始(无补丁)图形文件,文件名包含我需要使用的上限,以便相应地缩放图像.然后我使用这些值与上面找到的类,并应用该图像作为背景的各种元件(如TextView,ImageButton,Button,ViewGroup,等等).
这可以完美地工作,你可以在这里看到:

但是,在Android 2.3.x上运行相同的代码会产生结果:

我查看了Android中使用的源代码来解析9patch图像(此处和此处),但没有找到使其正常工作的方法.我已经尝试了几乎所有我可以抛出的东西都无济于事.
为了记录,9patch由每个轴上的三列组成,一个固定,一个可伸缩,一个固定.
这里希望别人之前解决过这个问题.
提前致谢.
编辑我只对在Android 2.3及更高版本上复制此行为感兴趣(我最初有2.x).
编辑#2这个要点准确描述了我正在尝试做的事情 +源图像:
编辑#3图像的大小为22px/58px(宽度/高度),插图为14/6/14/6(上/左/下/右).