传统UI开发中,如果背景的大小不一样,一般需要为每种大小都制作一张图片,这在button中尤为明显。当然我们也可以一小块一小块水平重复的画,也可以垂直的话。在android中专门有一种叫nine patch图片(以 9.png结尾)来解决背景大小不一样时,只用一张背景图片。
在android sdk的目录下,tools文件夹里头draw9patch.bat的专门处理9patch的工具。
打开一张png图片,我们可以在png图片最外面的空格画一个像素宽的黑线。图片左边黑线的高度决定了垂直拉升时的扩展区域,也即当垂直拉伸时,只有这个区域的图片会被拉伸。同理图片上边的黑线长度决定了水平拉升时的扩展区域。图片右边的黑线可以不画,默认是指可以压扁到0px,画上黑线后,垂直方向就只可以压扁到右边黑线的高度了。图片下方的情况也一样。
从中我们也可以理解为什么叫 nine patch,相当于把一张png图分成了9个部分,分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的状态,而2条水平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样。
一般配置好环境后,使用自带的draw9patch.bat都会遇上dos窗口一闪便消失的情况,使用命令行运行该批处理后,看到跑出以下异常
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
at com.android.draw9patch.Application$1.run(Application.java:48)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.jdesktop.swingworker.SwingWorker
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 9 more
这是因为Android在更新SDK之后并没有自动将它依赖的SwingWorker的lib文件下载回来,所以需要我们手动下载,然后放到指定位置,应该是在<您的sdk所在目录>/tools/lib/目录下,就OK啦,swing-worker-1.1.jar见附件:
分享到:
相关推荐
2. **导入图片**:将需要处理的PNG图片拖放到Draw9Patch工具的左侧区域,或者通过菜单选择文件进行导入。 3. **绘制拉伸区域**:使用顶部和右侧的黑色条来定义拉伸区域。这些黑色条中的每个像素代表一个区域边界。...
Draw9Patch工具是Android SDK的一部分,用于编辑和生成`.9.png`文件。该工具会在原始PNG图片的边缘添加黑色像素条,用以标记可拉伸和不可拉伸的部分。左侧和上侧的像素条定义水平和垂直方向上的拉伸区域,而右侧和下...
Draw9Patch精简版是一个轻量级的工具,它允许开发者在不安装整个Android SDK的情况下,单独处理9-patch图。这个版本特别适合于那些只对9-patch图编辑有需求,而不需要其他SDK功能的场合,或者在没有安装Android ...
描述中的"制作.9.png图片,draw9-patch教程及draw9-patch"进一步强调了这个教程会指导用户如何创建和理解9-patch图像,并通过使用draw9-patch工具来实现这一目标。 标签"android、9-patch、9.png"分别代表了这个...
draw9patch.bat运行报错,将下载的文件放入你的android sdk\tools\lib里面。
在Android开发中,9-patch文件通常使用`.9.png`的扩展名,它可以被Android Studio和Android SDK中的`draw9patch`工具处理。但如果你在Mac上工作,可能需要使用第三方工具,如这个安装包提供的工具,因为默认的`draw9...
标题提到的“安卓SDK点9图片制作工具”可能是为了解决这个问题,它可能是一个独立的、模拟旧版`draw9patch`工具功能的第三方应用或脚本,允许用户在不使用AS的情况下编辑.9.png文件。 `draw9patch.bat`很可能是运行...
在Android应用开发中,Draw9Patch是一种强大的图像处理工具,它允许开发者创建可伸缩的图片资源,以适应不同屏幕尺寸和设备分辨率的需求。本文将深入探讨Draw9Patch的工作原理、使用方法以及在实际项目中的应用。 ...
5. **使用draw9patch.jar**:打开工具后,你可以加载普通的PNG图片,然后使用顶部和右侧的黑色虚线来标记可拉伸区域。绿色像素表示图像的固定大小区域,黑色像素表示可拉伸区域,而灰色像素表示可填充但不可拉伸的...
9patch工具是Android SDK提供的一种图形编辑工具,它允许开发者定义图片的可拉伸区域和不变区域,以确保在不同尺寸的屏幕上正确显示。以下是对9patch工具使用的详细讲解和Demo源码分析。 1. 9patch文件结构: 9...
9PNG编辑器是一款专为处理9-patch图(也称为draw9patch)设计的专业工具。在Android开发中,9-patch图是一种特殊的PNG图像格式,它允许开发者指定图像的拉伸区域和不变区域,以便在不同尺寸的屏幕上正确地自适应布局...
下面将详细介绍9-patch图像的工作原理、制作过程以及draw9patch工具的使用方法。 9-patch图像是一个PNG图片,它在图像的两侧和顶部添加了一条额外的像素区域,这些区域标记了哪些部分应该在拉伸时保持不变,哪些...
`Draw9Patch`是Android SDK提供的一款工具,专门用来创建和编辑9.png图片。通过这款软件,开发者可以清晰地看到图像的拉伸网格,并可以精确地指定哪些部分应该拉伸,哪些部分应保持不变。Draw9Patch界面简洁直观,...