大家都知道Android項目中的res目錄中的資源eclipse插件會在gen中自動生成相應(yīng)的id應(yīng)用,這樣就統(tǒng)一了資源管理
那么這種自動生成的id就是寫死的東西了 這就導(dǎo)致了不容易做修改
項目中需要將現(xiàn)有的組件打成jar包 這樣打包后類文件當(dāng)然是肯定沒問題 但是資源文件就不行了。這個地方的id不能在新建的項目中被應(yīng)用了
所以資源文件不能被打到res目錄中,這種情況下就必須要打到assets目錄中
這樣就會出現(xiàn)問題了 一般情況下我們應(yīng)用資源文件是通過int型的id來引用的, 這里就不能直接應(yīng)用了 我們需要手動讀取Assert目錄下的資源
Android提供了AssetManager來管理資源
讀取就很簡單了只需要 在Acitivity中
Context.getAssets().open(“sample.png”)
可以直接獲取相應(yīng)的Inpustream 根據(jù)需要可以通過包裝來獲得需要的流 來解析一些XML TXT等文件
獲得Bitmap : BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomout.png"))
獲得Drawable: new BitmapDrawable(BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomout.png")))
一般我們用到Button的時候會使用selector來得到一些點擊(pressed)、焦點(focused)的一些效果,但當(dāng)把selector的XML文件放到Assert文件中后 我試了N種的方法包括反射都用上了。發(fā)現(xiàn)都是解析不了 看源碼也沒找到具體什么原因 始終找不到為什么StateListDrawable 不能解析出來,
實在沒辦法了。。但問題還是得解決啊。 換了個思路
既然XML類型的StateListDrawable解析不了 我可以手動創(chuàng)建一個StateListDrawable對象啊,這個真是簡單啊
白白花了那么多時間去看源碼試方法鉆牛角尖,換了個角度才豁然開朗,
這樣就實現(xiàn)功能了,還有就是要注意最后要關(guān)閉流 這個最好是統(tǒng)一管理起來,
上面是打jar包時的文件目錄 需要選擇java代碼 然后和assets目錄 像gen和res就不要打到包里了,當(dāng)然manifest這些文件也不能打包
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
