Android Studio中9Path图片小探究

今天,在为项目嵌入一个SDK的时候,出现了如下一个运行失败的情况,错误如下:

Information:Gradle tasks [:app:assembleDebug]
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
Information:BUILD FAILED

先前没有遇到类似的错误,于是,Google、百度一下,发现原来是刚嵌入的SDK里面的.9图片有问题,万恶的SDK开发商,不提供专门的Android Studio的aar库或者module嵌入方式也就算了,居然还犯这种错误,没有进行过SDK在Android Studio开发环境的测试!!!对于.9图片,一直以来,都只是知道是做什么的,也知道怎么用,也知道一些关于.9图片的处理方式,就是打开Android SDK提供的9Path绘图工具,然后描点,划黑线,完事……然而,关于.9图片的一些知识,还是缺乏的。因此,这里也做了一下小小的探究。

不了解不知道,一了解真的是吓一跳。原来9Path图片还有这么多学问。什么左边框控制水平方向,上边框控制垂直方向,而右边框及下边框控制的居然是内容填充区域。哇,之前真的只是了解了上下左右的拉伸而已。还有很多需要了解的,这里引用下另一篇别人已经总结过的文章(安卓9Patch图详解)这篇文章,关于9Path图片的很多要点,都已经做了详尽的描述了,这里就不再做赘述了,我们这里主要还是要解决上面出现的那个问题。

为什么会出现这个错误呢?按道理来说,SDK开发商应该都已经测试过的了。然后我就去问他们使用的开发工具,Eclipse!!!Eclipse不出现此问题,而Android Studio出现了该问题,那我是不是可以判定Android Studio关于.9图片的检查更加严格呢?现在,由于SDK中嵌入了多张.9图片,而我目前无法确定是哪一张图片出现了异常情况,或者是哪一张图片的处理方式不符合规则,从而导致了上面那个错误的出现。那我就用一个最笨的方法,来解决这个问题,我先留下一张.9图片,然后把其他的.9图片都标记并去掉.9后缀,改成了png图片,然后一张张调试来观察这个错误。当然,我们可能观察的第一张.9图片就出现这个问题,也有可能直到最后一张.9图片,才观察到这个问题的出现。

观察观察再观察……

Bingo,出现上述那个错误了,SDK中这张.9图片处于如下情况时在Android Studio报错。
Android Studio中9Path图片小探究_第1张图片
呃,这,这特么太不要脸了吧,这哪里是.9图片啊,说好的描点呢,一个都么有。

不过这也刚好,这是一个非常不错的测试对象,先开始分析下.9图片的左边框及上边框,我就在左边框或者上边框加一个描点或一段描点,看看还会不会出现错误。
Android Studio中9Path图片小探究_第2张图片 Android Studio中9Path图片小探究_第3张图片
依然出现了上述错误。那如果,左边框跟上边框都加上描点呢?
Android Studio中9Path图片小探究_第4张图片
哎哟,不错哦,现在没有报这个错误了。这证明了,在Android Studio中,.9图片需要符合规范,既然是.9图片,就应该符合可以垂直方向或水平方向都可以正常拉伸,不然怎么好意思叫.9图片呢?虽然不加描点也可以拉伸,但是,你看看,这拉伸后的图片还能用么吗?
Android Studio中9Path图片小探究_第5张图片
我相信,这种不符合规范的.9图片,在实际项目中拉伸的效果将会更加惨不忍睹。
关于.9图片的左边框及上边框,还有另一种情况,就是左边框及上边框里面描点及描点段的数量,是否还会出现上述那个错误?
Android Studio中9Path图片小探究_第6张图片
经测试,.9图片左边框及上边框描点或者描点段数量多少,并不会导致出现上述错误。

分析完.9图片左边框及上边框,再来分析下.9图片的右边框及下边框。
首先,我们在图片的右边框或下边框加上一段描点,如下:
Android Studio中9Path图片小探究_第7张图片 Android Studio中9Path图片小探究_第8张图片
测试正常

右边框及下边框都加上描点呢?如下:
Android Studio中9Path图片小探究_第9张图片
测试正常

最后,再来测试一下右边框或下边框多个描点或描点段的情况,如下:
Android Studio中9Path图片小探究_第10张图片 Android Studio中9Path图片小探究_第11张图片
呃,那该死的错误又出现了…

那右边框及上边框同时有多个描点或描点段 的情况?
Android Studio中9Path图片小探究_第12张图片
结果还是一样的,错误出现了…

看来,.9图片的右边框或下边框都是不允许有多个描点或描点段的。哦,想起来了,.9图片的左边框上边框是控制图片的拉伸,而右边框及下边框则是控制图片的内容区域,内容区域内容区域(内容区域不知道是啥的,请看安卓9Patch图详解),那就能理解了,内容区域肯定是要连续的啊,内容总不能切分为多块吧?

现在,我们大概来总结下关于Android Studio里面.9图片的正确使用。

  • 左边框、上边框一定要有描点或描点段(垂直方向及水平方向 拉伸区域);
  • 左边框、上边框的描点或描点段 可以有多个 ;
  • 右边框、下边框可以不需要有描点或描点段(可以不设置内容填充区域)
  • 右边框、下边框如果设置了描点或描点段,只能有一个。

你可能感兴趣的:(Android小知识点)