編輯:Android開發實例
大家都知道Android項目中的res目錄中的資源eclipse插件會在gen中自動生成相應的id應用,這樣就統一了資源管理
那麼這種自動生成的id就是寫死的東西了 這就導致了不容易做修改
項目中需要將現有的組件打成jar包 這樣打包後類文件當然是肯定沒問題 但是資源文件就不行了。這個地方的id不能在新建的項目中被應用了
所以資源文件不能被打到res目錄中,這種情況下就必須要打到assets目錄中
這樣就會出現問題了 一般情況下我們應用資源文件是通過int型的id來引用的, 這裡就不能直接應用了 我們需要手動讀取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("btn_zoomin2.png")));
- StateListDrawable bgzoomin = new StateListDrawable();
- bgzoomin.addState(View.PRESSED_ENABLED_STATE_SET, selectedzoomin);
- bgzoomin.addState(View.ENABLED_FOCUSED_STATE_SET, selectedzoomin);
- bgzoomin.addState(View.ENABLED_STATE_SET, normalzoomin);
- bgzoomin.addState(View.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這些文件也不能打包
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
本文實例講述了Android編程實現ImageView圖片拋物線動畫效果的方法。分享給大家供大家參考,具體如下: 想實現拋物線動畫,必須知道拋物線的方程,這時候數
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩