Drawable学习之---NinePatchDrawable(.9图片的制作)

一、创建NinePatchDrawable

一个NinePatch也是一个PNG的图片,不过不同的是可以为这种格式的图片定义可伸缩的区域,当某个视图的内容超过了正常的尺寸的时候,这种格式的图片会自动拉伸以适应不同的尺寸。一般这种图片是作为视图的背景,并且视图至少有一个尺寸(layout_width或者layout_height)是设置为"warp_content"。当视图自增长来适应内容的时候,Nine-Patch格式的图片也会相应的进行缩放来匹配视图的尺寸。


NinePatchDrawable的创建方式几乎和BitmapDrawable一模一样,使用方式也没有多大的区别。只是在xml创建的时候,没有那么多的属性。

[java] view plain copy
  1. <nine-patch xmlns:android="http://schemas.android.com/apk/res/android"   
  2.     android:src=""  
  3.     android:dither=""/>  

它只有这三个属性。

二、制作.9图片

     1,用一张干净的png图片放在mipmap里面。(jpg类型或者gif类型的不行)

      2,点击图片右键最后一项,create 9-patch file保存在drawable目录。(.9类型的图片只能放在drawable文件夹下)

      3,对drawable里面生成的.9图进行划线,(注意:左和上划就可以,右边和下边不要划),直接鼠标左键划黑线,不要摁着ctrl划红线(因为这个               错误耽搁好久)。



       创建完成在进行画线的时候勾选下面的show bad patches时候会有红线,需要将红线完全去掉,不然在打包的时候会报错

     4,保存并删除mipmap里面的图片,在xml里面使用。

 三、.9图片造成的错误修改

报的错误是:Error:Java.lang.RuntimeException: Some file crunching failed, see logs for details ?

      出现这个错误的原因是一般有以下几种情况:

  一、构建Gradle的时候,Gradle会去检查一下是否修改过文件的后缀名。一般大多数是出现在图片上,.jpg修改成了.png就会出现这个问题;

  如果是这个问题导致的,可以在build.gradle文件里添加以下代码,然后点击右上角的sync now同步一下即可。

这个的意思是关掉AndroidStudio对PNG图片的合法性检验。

aaptOptions {

       cruncherEnabled = false

     useNewCruncher = false

}


  二、点9(.9)图片有问题也可能出现这个问题,原因是AndroidStudio对图片的审核非常严格,在ECLIPSE上没有问题, 到了AS上就通过不了。所以此问题多见于Eclipse项目导入AndroidStudio时。我出现这个问题就是因为.9图片导致的,并且我也是自己摸索出来的如何修改,网上好多说的不明不白的…………唉。

  另外有一点要注意一下,点9图片必须放在drawable文件夹下,不能放在mipmap文件夹下。

  如果是因为.9图片导致的,构建工程时在错误日志里可能会有相关的提示,告诉你可能出问题的.9图片的位置,此时你只要双击提示的文本,即可自动打开有问题的.9图片。在AndroidStudio中可以直接编辑点9图片,此是其强大的一个缩影而已。大概错误如下截图:

  还有一种关于.9图片的错误,就是

  Error:java.lang.RuntimeException: Crunching Cruncher bg_titlebar_shadow.9.png failed, see logs

  这个错误也是需要用到下文中的方法从新编辑修改下点9图片即可解决。(重新编辑)


原文地址:https://www.cnblogs.com/vegetate/p/9997215.html