前段时间,项目需要做聊天气泡的需求。要求从服务器上获取气泡图,但是从服务器上获取.9图片的话,.9图片会失效。在我苦思冥想中终于发现解决办法。我想可能是.9图片在打包成aok的时候,对图片进行了处理。果不其然,的确是这。但是我们出服务器上获取的.9图片为什么就不行了呢。接下来我将告诉大家一个巧妙的解决办法。
1.对.9图片进行处理
1)将画好线的点9图放在任意一个Android工程中
2)从Android工程bin目录下拷贝apk
3)将apk后缀名修改为zip等可解压的文件,并对其解压
4)解压后你会发现,对应的res文件夹下有我们之前放的点9图片
5)将处理后的点9图片放到服务器上,这样我们就可以使用啦
**说明:处理后的点9图片你会发现我们这前画好的黑线没有了,这证明看我之前的猜想是正确的
2.代码处理
之前处理的图片你会发现一样不能使用
我们只需要将图片在进行以下代码处理即可
private Drawable getNinePatchDrawable(Bitmap bitmap,Context context) {
byte[] chunk =bitmap.getNinePatchChunk();
NinePatchDrawable ninePatchDrawable = null;
if(NinePatch.isNinePatchChunk(chunk))
{
ninePatchDrawable = new NinePatchDrawable(context.getResources(), bitmap, chunk,
new Rect(), null);
}
return ninePatchDrawable;
byte[] chunk =bitmap.getNinePatchChunk();
NinePatchDrawable ninePatchDrawable = null;
if(NinePatch.isNinePatchChunk(chunk))
{
ninePatchDrawable = new NinePatchDrawable(context.getResources(), bitmap, chunk,
new Rect(), null);
}
return ninePatchDrawable;
**说明:即使这样,你会发现点9的右线和低线的文字区域还是不管用,不过这已经不影响我们使用啦。
}