日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android中layout、drawable及styles的xml文件加载探索

發布時間:2024/4/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android中layout、drawable及styles的xml文件加载探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 最近搞一個SDK項目,既然提供給用戶那么就不能太復雜。而android如果不用xml就會很復雜,比如布局,那么怎么辦?

??????? 關于布局別人提供了一個方法,xml解析。具體做法將xml文件以數據文件的形式放在文件夾下,比如assets,用XmlPullParser解析xml文件,再用LayoutInterflater的inflate方法獲取到layout,這樣就可以在代碼中利用了。

??????? 后來又遇到了一個問題,其他的xml呢?自己的項目中要用到drawable和styles,這倆個怎么辦?

??????? 經過查找發現,drawable也是可以用解析的方式載入的,同樣用XmlPullParser解析xml文件,然后用Drawable的createFromXml方法來得到drawable,這樣就可以在代碼中使用了。

??????? 那么styles呢?樣式主題中很多都有對應的方法,可以在代碼中直接設置,但是有些還是不知道怎么解決的。(也許有方法,作為菜鳥的我不知道。。。)

??????? 比如android:backgroundDimEnabled,窗口之外依然是半透明的,這樣很多效果就不好看,就必須設置這個android:backgroundDimEnabled。但又不能使用xml文件,最終還是在網上找到了解決方法window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)和window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND),看來還要多研究下api,不過本人外語水平不咋地,所以看著頭大。同時也有dimAmount的相關方法(設置背景透明度)

??????? WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.alpha=1.0f; getWindow().setAttributes(lp); <br/>

??????? 但是在自己研究的過程中發現了一個小問題,同時也深入的探索了一下,具體情況如下。

??????? 在styles中寫好了theme,在AndroidManifest.xml中載入沒有問題。但是在Activity中的onCreate方法中用setTheme載入,即使在stayles中設置了android:backgroundDimEnabled一樣沒有顯示效果。。。而且放在super.onCreate前后也是有差異的。

??????? 個人覺得造成這樣的原因是因為在AndroidManifest.xml中設置theme后,這個樣式是在acticity的onCreate方法調用前就裝載了。那么到底是不是?繼續在源碼中探索吧。

??????? Activity的onCreate方法其實并不是真正的入口,真正的入口是ActivityThread,這就是所謂的主線程,這里有個main方法。Acticity就是在這個類里創建出來的運行的,有關theme的代碼如下:

??????? int theme = r.activityInfo.getThemeResource(); if (theme != 0) { activity.setTheme(theme); } activity.mCalled = false; mInstrumentation.callActivityOnCreate(activity, r.state);

??????? 可以看的setTheme后有個callActivityOnCreate,這時才會調用Activity的onCreate方法。所以AndroidManifest.xml中載入沒有問題,在代碼中就出現了問題,個人認為是有些設置是在onCreate時回復默認了,具體原因就沒有繼續探索下去。

??????? 寫這個呢主要是記錄自己的一次學習過程,以后遇到類似的情況可以借鑒一下,因為自己的記性實在太差了,免得之后再重新研究一遍。。。。

?

總結

以上是生活随笔為你收集整理的android中layout、drawable及styles的xml文件加载探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。