SDK使用NinePatch(.9)资源
来源:互联网 发布:艾薇软件下载 编辑:程序博客网 时间:2024/06/05 11:53
.9资源是啥?
.9图是一种可以拉伸的图片格式,当你把它用作背景图时,android系统会根据实际情况来拉伸图片资源。比如按钮的背景必须根据上面显示文字的长短作拉伸。NinePatch就是额外包含了一个像素边界的PNG图片,用.9.png来标识,并且存放在应用的res/drawable下。上边界和左边界定义了.9图的拉伸规则和静态不变的区域,两条线的交集为一个矩形,这个矩形内的像素可以自由拉伸;右边界和下边界定义了内容的位置,可以理解为pading。
可以利用sdk/tool/里的Draw 9-patch工具根据具体需求在png图四周加特定的像素描边生成。
怎么引用相对路径资源
.setBackgroundDrawable(getNinePatchDrawable(getBitmapByResourceName("image/headwindows_bg2.9.png")))ImageView imageView = new ImageView(getContext());imageView.setImageBitmap(getBitmapByResourceName("image/logo01.png"));
protected Bitmap getBitmapByResourceName(String string) { InputStreaminputStream = getClass().getResourceAsStream(string); return BitmapFactory.decodeStream(inputStream); }
String=”image/headwindows_bg2.9.png”为目标资源相对于当前class文件的路径。
相对路径引用.9资源
protected Drawable getNinePatchDrawable(Bitmap bitmap) { byte[] chunk =bitmap.getNinePatchChunk(); NinePatchDrawableninePatchDrawable = new NinePatchDrawable(getContext().getResources(), bitmap, chunk, new Rect(), null); return ninePatchDrawable; }
Tips:.9资源分两种,一种是未编译的源文件在应用源码的res/drawable下;另一种是在apk包中已经编译过的资源。区别是编译后的.9图里面多了chunk信息用来描述那个拉伸的像素边框。我们这里使用的.9图是要编译后的资源。
应用场景
在开发一个对外开放sdk的jar包时需要弹一些自定义的对话框和按钮,但jar包只是一个压缩包,无法像标准android应用那样使用resource来获取资源,只能通过相对路径使用文件流来解析资源文件。所以提出这种方案来满足这种需求,另外还有一种方法是使用系统默认的资源或者让调用sdk的应用自带这些资源然后通过三方应用传入的Context获取到resource从而取得资源。
注:UI资源存放的相对位置:
使用系统自带资源的手法可以查阅资源应用。
- SDK使用NinePatch(.9)资源
- NinePatch 9Patch 绘制
- ninepatch
- NinePatch
- 非典型的NinePatch使用模式
- Android开发——NinePatch的使用
- NinePatch使用教程--创建优美的背景图片
- 点9图 NinePatch chunk解析
- Ninepatch为什么要叫9宫图
- OPhone NinePatch使用教程--创建优美的背景图片
- android NinePatch使用教程--创建优美的背景图片
- Android使用NinePatch图片实现大小可变的Button
- android NinePatch使用教程--创建优美的背景图片
- 使用Android Studio制作NinePatch图片(9.png)
- Android-NinePatch PNG文件(点九图)的使用
- 从非资源文件中构建NinePatchDrawable对象(android – Create a NinePatch/NinePatchDrawable in runtime
- Windows SDK笔记(六):使用对话框资源建立窗口
- Windows SDK笔记(六):使用对话框资源建立窗口
- 解MyEclipse10 安装Spket 1.6.23(支持Extjs4.1.1及jQuery1.8)
- 九度oj 题目1035:找出直系亲属
- Bone Collector -01背包
- Codeforces Round #229 (Div. 2) 解题报告
- id,rowid,rownum 区别
- SDK使用NinePatch(.9)资源
- 如何借助PageSpeed,为Nginx网站服务器提速?
- 九度OJ 1124 Digital Roots -- 数位拆解
- 吼吼吼
- Preparedstatement和statement 区别
- 互联网产品血拼,免费更是大势所趋?
- Spring MVC 中的基于注解的 Controller
- 【10.2移动新特性】揭秘ArcGIS 10.2移动产品的离线功能【上:桌面模式】
- 使用AD Gallery制作强大的相册画廊