.9资源是啥?

.9图是一种可以拉伸的图片格式,当你把它用作背景图时,android系统会根据实际情况来拉伸图片资源。比如按钮的背景必须根据上面显示文字的长短作拉伸。NinePatch就是额外包含了一个像素边界的PNG图片,用.9.png来标识,并且存放在应用的res/drawable下。上边界和左边界定义了.9图的拉伸规则和静态不变的区域,两条线的交集为一个矩形,这个矩形内的像素可以自由拉伸;右边界和下边界定义了内容的位置,可以理解为pading。

可以利用sdk/tool/里的Draw 9-patch工具根据具体需求在png图四周加特定的像素描边生成。

怎么引用相对路径资源

protected Bitmap getBitmapByResourceName(String string) {
InputStreaminputStream = getClass().getResourceAsStream(string);
return BitmapFactory.decodeStream(inputStream);
}

String=”image/button_ok_normal.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从而取得资源。

使用系统自带资源的手法可以查阅资源应用

SDK使用NinePatch(.9)资源的更多相关文章

  1. Kinect for Windows SDK开发学习相关资源

    Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即 ...

  2. Android SDK 在线更新镜像服务器资源

    本文转自:http://blog.kuoruan.com/24.html.感谢原作者. 什么是Android SDK SDK:(software development kit)软件开发工具包.被软件 ...

  3. 开发常用镜像资源替换为国内开源镜像(yum,compose,maven,docker,android sdk,npm,国内开源镜像汇总)

    一.国内开源镜像站点汇总 阿里云开源镜像站 (http://mirrors.aliyun.com/)网易开源镜像站 (http://mirrors.163.com/)中国科学技术大学开源镜像站 (ht ...

  4. Android-自己定义图像资源的使用(1)

    Android-自己定义图像资源的使用 2014年4月28日 周一 天气晴朗 心情平静 本篇博文给大家介绍一下,在Android开发中经经常使用到的一些图像资源,具体内容麻烦请各位认真查看官网,下面附 ...

  5. Android <Android应用开发实战> 资源类型<一>

    1.字符串资源>>1.普通字符串>>2.字符串数组 <resources> <string-array name="planets_array&qu ...

  6. A008-drawable资源

    关于drawable资源笔者之前有写过两篇文章: Android-自己定义图像资源的使用(1) Android-自己定义图像资源的使用(2) 这里笔者就不做过多的赘述.我们从实际开发的角度去理解这个知 ...

  7. iOS开发之App间账号共享与SDK封装

    上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...

  8. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  9. Android SDK Manager中不显示未下载的api解决方案

    Android SDK 在线更新镜像服务器资源用户评价:  / 14 Android SDK 在线更新镜像服务器资源:大连东软信息学院镜像服务器地址:http://mirrors.neusoft.ed ...

随机推荐

  1. C++基础-类和对象

    本文为 C++ 学习笔记,参考<Sams Teach Yourself C++ in One Hour a Day>第 8 版.<C++ Primer>第 5 版.<代码 ...

  2. Thinkphp设置PC和手机端模板

    <?php // 判断手机端 function ismobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X ...

  3. Docker 镜像的常用操作

    镜像作为 Docker 三大核心概念中,最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录 一 Docker 下载镜像 1.1 下 ...

  4. ajax实现异步请求模态登陆

    ajax实现模态登陆 j2ee课程项目实现   Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),是指一种创 ...

  5. SCUT - 484 - 平面上的点 - 数据结构

    https://scut.online/p/484 一开始想的是按固定斜率的直线从无穷扫下来,但是一直都WA,不知道是哪里错了还是精度问题? #include<bits/stdc++.h> ...

  6. 移动前端不得不了解的Meta标签

    http://ghmagical.com/article/page/id/PSeJR0rPd34k

  7. selectTree 改造

    需求 把select改为selectTree,后台给的数据也进行了改造,数据里面多了children字段,包裹子集 代码 //import import { Row , Col , Select , ...

  8. Dva框架从初识到上手

    引言 最近工作需要用dva框架,同事帮我培训了一下,有一点点认识,在此总结. 当然,以后对dva可能会了解更透彻,文章会不断更新的.   初识 开始看架构代码,没有看文档的时候,不知道里面的几个关键字 ...

  9. linux MySql 主从异步复制

    [root@localhost ~]# hostname master.allentuns ###SLAVE 执行 [root@localhost ~]# sed -i 's@\(HOSTNAME=\ ...

  10. nsswitch.conf - 系统数据库及名字服务开关配置文件

    DESCRIPTION C 程序库里很多函数都需要配置以便能在本地环境正常工作, 习惯上是使用文件(例如`/etc/passwd') 来完成这一任务. 但别的名字服务, 如网络信息服务NIS, 还有域 ...