Android程序员对NinePatch文件一定很熟悉,因为它的应用实在是太广泛了,当图像需要拉伸或收缩时,一定会首先考虑到它,而由于Android设备那五花八门的分辨率,图像的拉伸收缩几乎是不可避免的....
Google已经为我们安排好了一个简单有效的NinePatch使用模式:
- 创建图像文件
- 使用sdk/tools/draw9patch工具,选择图像的拉伸收缩区域,以及内容显示区域(可选)
- 将draw9patch生成的*.9.png文件复制到res/drawable目录中
- 在UI文件或者程序代码中,直接使用文件对应的Drawable
通常情况下,这种模式工作得很好,但有时候,我们还想要更多....比如,我们的图像来源于互联网,而不是编译到App中固定的图像
那就要我们自己创建新的应用模式了:
- (同上)创建图像文件
- (同上)使用sdk/tools/draw9patch工具,选择图像的拉伸收缩区域,以及内容显示区域(可选)
- 将draw9patch生成的*.9.png编译为Android特有的格式(还是可正常显示的png文件,但是将draw9patch中生成的上下左右4条边裁掉了,相关信息生成chunk数据嵌入png文件中)
- 使用BitmapFactory载入编译后的NinePatch图像文件,获得Bitmap对象bmp
- 确认Bitmap是合法的NinePatch文件:NinePatch.isNinePatchChunk(bmp.getNinePatchChunk())
- 生成NinePatchDrawable对象:new NinePatchDrawable(getResources(), bmp, chunk, new Rect(), null);
关于上面的步骤3:编译*.9.png文件,我还没有找到更简单的方法,目前的方法是,先创建一个傀儡App,将需要编译的9.png放入这个App并生成APK,再unzip这个APK文件并从res/drawable目录下取出编译后的*.9.png文件。另外,也有人做了命令行工具abrc可以编译*.9.png文件(
http://forum.xda-developers.com/showthread.php?t=785012)
另外,如果图像定义了内容显示区(NinePatch图像的右下黑边),我们需要从chunk数据中解出其上下左右的padding数据,上面的步骤6需要修改一下才能在NinePatchDrawable中获得正确的padding rect,具体代码可参考这里:
http://stackoverflow.com/questions/11065996/ninepatchdrawable-does-not-get-padding-from-chunk
分享到:
相关推荐
ninepatch-editor-1.25
Android NinePatch 技术
1. 加载NinePatch资源:使用`android.graphics.NinePatch`类加载NinePatch图,这个类可以解析额外的边框信息。 2. 设置NinePatch视图:在XML布局文件中,可以使用`android:background`属性为View设置NinePatch背景。...
如果要使用交互式查看器,请阅读“交互式查看器”下的其他安装说明。 $ pip install ninepatch Python用法 from ninepatch import Ninepatch ninepatch = Ninepatch('ninepatch_bubble.9.png') print(ninepatch....
在 RecyclerViewDecoration 中使用 Ninepatch 图片,开发者可以创建出动态适应屏幕大小的装饰元素,如分割线或背景,使应用界面更具专业感和统一性。 使用 RecyclerViewDecoration,你可以实现以下功能: 1. 添加...
2. 手动编辑:对于熟练的开发者,也可以使用像素编辑器(如Photoshop)手动在图片边缘添加黑色像素来创建NinePatch文件。但是这种方法需要较高的精确度,且容易出错。 三、NinePatch的优点 1. 适应性:NinePatch...
在安卓开发中,图片的展示方式对于用户...总结,Android开发中处理GIF和图片展现模式需要理解Android提供的原生支持和第三方库的使用。合理选择图片展现模式,结合性能优化策略,可以提升应用的视觉效果和运行效率。
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
- 使用Photoshop进行初步切图,然后使用如Dreamweaver等网页编辑软件进行进一步的页面制作。通常需要重新制作或调整由Photoshop导出的HTML文件,以便添加动态内容或适应实际需求。 总的来说,Photoshop切图教程是...
本篇将深入探讨如何在Android中使用NinePatchDrawable读取非资源路径的点9图片。 首先,让我们理解NinePatchDrawable的基本概念。一个点9图片(.9.png)是由普通的PNG图片和额外的像素边界组成,这些边界包含了拉伸...
用于装饰RecyclerView的通用工具类,支持ninepatch图像。 文档在这里 您可以使用gradle或maven导入此lib,因为它存在于JCenter中。 lib中将显示更多可扩展的有用方法。 该库将合并到ExpandRecyclerView lib中。 ...
npm install @koreez/phaser3-ninepatch --save 用法 加载插件 您仍然需要在游戏中加载插件。 就像Phaser3中的任何其他全局插件一样,此操作也可以完成。 因此,要加载该插件,请将其包含在Phaser游戏配置中。 { ...
- **Drawable**: Android中的图片资源类,可以表示多种类型的图像,如位图(Bitmap)、九宫格(NinePatch)等。开发者可以通过`setImageResource()`、`setImageBitmap()`等方法将Drawable对象设置到ImageView中。 ...
在Android开发中,点九图片的使用极大地提高了用户体验和应用的视觉质量。 Nine-Patch的制作通常需要专业的图像编辑软件,如Adobe Photoshop或Android Studio内置的Nine-Patch绘制工具。然而,对于不熟悉这些工具的...
5. **易用性**:通常,这些组件都提供了简单的API供开发者集成到自己的项目中,降低了学习和使用的门槛。 在Swing9patch-master文件夹中,你可能会找到以下内容: - 源代码:项目的Java源码,包括Swing组件的实现...
在Android应用开发中,使用9点切图有以下几个关键点: 1. **减少资源数量**:9点切图可以适应多种屏幕尺寸,避免了为每个分辨率创建单独的图片资源,简化了资源管理。 2. **保证显示质量**:通过正确设置拉伸区域,...
但如果你在Mac上工作,可能需要使用第三方工具,如这个安装包提供的工具,因为默认的`draw9patch`工具是基于Java的,可能不支持所有macOS版本。 安装9patch mac版工具后,开发者可以打开PNG图像,然后使用工具的...
4. **颜色模式转换**:Bitmap的inPreferredConfig参数可以设置颜色模式,如ARGB_8888(每个像素4字节),RGB_565(每个像素2字节),以平衡色彩质量和内存使用。 5. **位图池**:Android 3.0及更高版本引入了位图池...
例如,你可以创建一个NinePatch图片来定义进度条的外观,或者使用Shape Drawable来创建具有渐变色、边框等效果的进度条。 五、动画效果 通过使用Animation或者ObjectAnimator,开发者可以为ProgressBar添加动画效果...
同时,考虑到性能优化,可以考虑在构造函数中使用BitmapShader或者NinePatch来避免每次绘制时的额外计算。 总之,通过使用Xfermode和自定义View,我们可以轻松实现圆角图片的效果。这个过程涉及到Android图形系统的...