標籤:android activity打包供第三方使用
做項目需要將程式打包成jar檔案供第三方使用項目要求(將圖片文字資源寫到到jar包中,第三方調用時,僅需要在AndroidManifest.xml配置下相應的Activity通過StartActivity方式拉起Activity):在網上找了好久,並依靠查看Android源碼最終解決了問題
一:需要明白知識:
1.APK中的Res目錄無法通過Eclipse的Export方式匯入到jar包中而Assert可以
2.Android程式在編譯成APK時需要通過aapt將Res目錄下的資源產生對應的Id而Assert目錄下的資源不會在R檔案中產生Id
對XML資源學習:
1.AssetManager中提供XmlResourceParseropenXmlResourceParser(String fileName)這個方法可以講編譯後的XML檔案產生一個資源遍曆對象通過該對象可以擷取一個整個布局的View樹
2.通過 setContentView(view)可以設定在Oncrea方法中設定Activity的布局
對圖片資源學習:
1.將非.9圖片放入到Assert目錄下通過擷取檔案資源去產生Drawable對象 Button等其他空間的點擊效果可以通過StateListDrawable來實現
2.對.9圖片進行處理讓需要先編譯去除掉上下左右的黑色的展開地區顯示地區的標記使用方法與非.9圖一致
對字元學習
1將字元寫在Java檔案中,寫到一個靜態Map中,通過kay_value可以再全域都擷取到
二:具體操作過程:
1.先使用普通的方式在XML檔案中設定你的布局並在運行Activity查看介面效果
2.刪除你在XML檔案中設定的圖片,字型資源的屬性,因為Res目錄無法匯入到Jar包中,無法在R檔案中產生對應資源的Id,所以通過android:src="@drawable/uac_logo"此類方式設定的圖片資源均不會被找到,在第三方擷取編譯後的XMLlayou檔案時會拋出資源沒有被照到的異常
2.取出bin目錄下已經編譯好的APK檔案,解壓縮取出編譯好的XML檔案圖片資源放入到Assert目錄下
3.在Activity的onCreat方法中使用XmlResourceParseropenXmlResourceParser(String fileName)方式擷取Layout檔案通過setContentView(view)設定為整個Activity的布局 使用其中的控制項(ButtonTextView等)時仍可以通過R.id.XX的方式擷取此時通過解析XML檔案,系統以及擷取到你這個XMl中各個控制項Id(此時的Id是否會與第三方資源Id衝突這個問題我覺得不會發生,畢竟findViewById()給出的定義是尋找該XML下的控制項的Id有哪位對這個畢竟清楚請教下?)
4.擷取到控制項之後,可以通過setTextsetBackground setImageDrawable等方法設定文字背景前景資源。
Android 將Activity打成jar包 供第三方使用 徹底解決XML 圖片 文字資源不可悲打入到jar包的問題!