建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

永樂國際f6601cm:Android進階:打jar包獲取assets中的資源 解決selector XML文件不能解析的問題

?

大年夜家都知道Android項目中的res目錄中的資本eclipse插件會在gen中自動天生響應的id利用,這樣就統一了資本治理

那么這種自動天生的id便是寫逝世的器械了 這就導致了不輕易永樂國際f6601cm做改動

項目中必要將現有的組件打成jar包 這樣打包后類文件當然是肯定沒問題 然則資本文件就不可了。這個地方的id不能在新建的項目中被利用了

以是資本文件不能被打到res目錄中,這種環境下就必須要打到assets目錄中

這樣就會呈現問題了 一樣平常環境下我們利用資本文件是經由過程int型的id來引用的, 這里就不永樂國際f6601cm能直接利用了 我們必要手動讀取Assert目錄下的資本

Android供給了AssetManager來治理資本

讀取就很簡單了只必要 在Acitivity中

Context.getAssets().open(“sample.png”)

可以直接獲取響應的Inpustream 根據必要可以經由過程包裝來得到必要的流 來解析一些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)的一些效果,但當把selector的XML文件放到Assert文件中后 我試了N種的措施包括反射都用上了。發明都是解析不了 看源碼也沒找到詳細什么緣故原由 始終找不到為什么StateListDrawable 不能解析出來,

其實沒法子了。。但問題照樣得辦理啊。 換了個思路

既然XML類型的StateListDrawable解析不了 我可以手動創建一個StateListDrawable工具啊,這個真是簡單啊

白白花了那么多光陰去看源碼試措施鉆牛角尖,換了個角度才豁然豁達,

normalzoomin = new BitmapDrawable(BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomin.png")));

selectedzoomin = new BitmapDrawable(BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomin1.png")));disablezoomin = new BitmapDrawable(BitmapFactory.decodeStream(mapActivity.getAssets().open("永樂國際f6601cmbtn_zoomin2.png")));

StateListDrawable bgzoomin = new StateListDrawable();bgzoomin.addState(View.PRESSED_ENABLED_STATE_SET, selectedzoomin);

bgzoomin.addState(View.ENABLED_FOCUSED_STATE_SET, s永樂國際f6601cmelectedzoomin);bgzoomin.addState(View.ENABLED_STATE_SET, normalzoomin);

bgzoomin.addState(永樂國際f6601cmView.FOCUSED_STATE_SET, selectedzoomin);bgzoomin.addState(View.EMPTY_STATE_SET, disablezoomin);

btnZoomIn.setBackgroundDrawable(bgzoomin);btnZoomIn.setMinimumWidth(BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomin.png")).getWidth());

btnZoomIn.setMinimumHeight(BitmapFactory.decodeStream(mapActivity.getAssets().open("btn_zoomin.png")).getHeight());

這樣就實現功能了,還有便是要留意著末要關閉流 這個最好是統一治理起來,

上面是打jar包時的文件目錄 必要選擇java代碼 然后和assets目錄 像gen和res就不要打到包里了,當然manifest這些文件也不能打包

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
代理公司赚钱吗 足彩即时比分 未来零元的投资赚钱 排三818组选前后关系 码报2016 北京快乐8 新11选5 广西快三遗漏期 天津11选5手机号码测吉凶 郑州彩票大奖