android获取编译之后的点9图片
今天要给桌面做一个功能,给一个View加个背景,该背景图为点9图片,但是图片的位置不在我们的apk。
于是我先写接口,将图片放到res/drawable的目录下,无论是使用View.setBackgroundResource(resID)还是使用View.setBackgroundDrawable(drawable)都可以显示正常,于是我信心满满的就以为大功告成了,整个人都飘起来了呢。
然而,当我使用从外部引入的点9图片时(反正就是不在项目内,从外部以流的形式得到一个bitmap),看到bitmap我就很高兴了,因为我可以很熟练的使用new 一个BitmapDrawable来设置一个View的背景,可是好戏一般都在后头,我得到的这个bitmap居然是将原本的3*3的图片平铺了,也就是说本来只要最中间一个部位的,结果9个宫格的值都给取上了。问了同事才知道外部的点9图片需要编译之后才能被识别,那么怎么编译呢?
就我个人而言,只知道两种:
一、通过编译程序,解压apk
1、将你的点9图片放到项目的res/drawable-**目录下;
2、得到加好图片之后的apk(eclipse右击运行,或者eclipse右击->Android Tools->Export ...或者使用独 有的编译环境编译,反正得到apk即可)
3、用解压软件解压apk文件,解压之后即可找到对应的res/drawable/你所需要的点9图片
此时可以发现我原本3*3的图片变成了1*1的图片了,而且size也变小了很多。
二、通过android build tools aapt
该功能是谷歌已经准备好了的,就在sdk/build-tools/android-***目录下(Windows环境下,步骤):
1、cd到自己的sdk/build-tools/android-***目录下,如我的:C:\1.eclipseWithSDK\adt-bundle-windows-x86-20140702\sdk\build-tools\android-4.4W 可以看到里面有个文件是aapt.exe
2、准备好你要编译的文件,最好将所有的要编译的都放到一个文件夹下,如我的放在F:\test目录下,该目录下有一张点9图“gn_launcher_main_menu_bg.9.png”
3、创建一个你要存放目标文件的目录,例如F:\test2 (实践证明,这个文件夹必须在运行编译之前建好);
4、编译:aapt.exe c -v -S F:\test -C F:\test2
之后便可以看到test中的需要编译的图片都编译到test2中了,而且大小尺寸都有改变