坑一:自己創(chuàng)建新的demo項(xiàng)目,測(cè)試基礎(chǔ)控件換膚功能僚祷,發(fā)現(xiàn)無(wú)論如何都換膚不成功佛致,皮膚使用下載的night.skin
按照githut上面的步驟執(zhí)行添加之后你會(huì)發(fā)現(xiàn)贮缕,仍然無(wú)法實(shí)現(xiàn)換膚辙谜,在監(jiān)聽(tīng)里面一直提示資源獲取失敗。
????????????????? 先說(shuō)說(shuō)github上面的步驟(實(shí)現(xiàn)最簡(jiǎn)單的換膚功能)
1:導(dǎo)入依賴: compile 'skin.support:skin-support:2.2.3' 感昼,這是導(dǎo)入基礎(chǔ)控件的換膚
2:導(dǎo)入皮膚包装哆,我最開(kāi)始是用放在應(yīng)用里面的方法,即將皮膚包放在app/assets/skins下面定嗓,一定要放在skins下面
3:自定義Application蜕琴,在onCreate中初始化換膚的管理類(SkinCompatManager)
4:將要換膚的activity繼承SkinCompatActivity,在要換膚的地方調(diào)用換膚方法宵溅,
SkinCompatManager.getInstance().loadSkin("night.skin")凌简;
入?yún)⒖梢宰约翰榭矗梢詫?shí)現(xiàn)監(jiān)聽(tīng)等
這些是githut上面說(shuō)明的方法恃逻,但是但是不行雏搂,我在這兒坑了好久藕施,最后發(fā)現(xiàn)需要添加權(quán)限,就沒(méi)想到還要添加讀寫(xiě)外部存儲(chǔ)權(quán)限凸郑。
?? 坑二:當(dāng)上面成功之后裳食,你覺(jué)得自己已經(jīng)實(shí)現(xiàn)換膚功能了,但是當(dāng)自己制作皮膚包時(shí)又被坑了一把芙沥。
? ? ? ? 還是github上面已給出的方法诲祸。
? ? ? ? 1:新建Android Application,皮膚工程包名不能和宿主包名相同而昨,就這一步一直有疑問(wèn)救氯,開(kāi)始不知道具體創(chuàng)建哪個(gè)module;
? ? ? ? 1.1(補(bǔ)充):module必須與app在同一個(gè)Application/Library name:下否則打包時(shí)找不到module
? ? ? ? 2:修改對(duì)應(yīng)資源
3:打包生成APK歌憨,這步是最坑的径密,剛開(kāi)始以為直接將對(duì)應(yīng)module Run就OK的,然后會(huì)出現(xiàn)沒(méi)有默認(rèn)activity問(wèn)題躺孝,這個(gè)百度了下就解決了享扔,然后就這樣生成了apk了,改名放入assets中發(fā)現(xiàn)無(wú)效植袍,同樣找了好久問(wèn)題惧眠。
對(duì)應(yīng)新建哪個(gè)module的問(wèn)題,需要新建Phone & Table Module 這個(gè)于个,選擇無(wú)activity
對(duì)于打包問(wèn)題氛魁,需要用到studio下面的Terminal命令行來(lái)編譯: ./gradlew :skin3:assembleDebug? skin3就是對(duì)應(yīng)皮膚包名。
打包完的apk路徑:/work/demos/soarosLauncher/skin/Skins/skin3/build/outputs/apk/debug厅篓。
?? 坑三:如果想將皮膚包放到sdCard中秀存,不能指定存放位置,固定需要寫(xiě)入:/Android/data/你的應(yīng)用包名/cache/skins/
??????? 我發(fā)現(xiàn)放在assets下面的皮膚包也會(huì)被放置到上面的路徑下面羽氮,然后在執(zhí)行換膚或链,所以第一條里面的讀寫(xiě)權(quán)限
以上原文出處鏈接:http://www.reibang.com/p/366dc3bee6c8
在下個(gè)人補(bǔ)充一點(diǎn)坑?
1.應(yīng)用內(nèi)換膚找不到res-night
? ? 要把res-night文件夾的信息添加到app的gradle中
sourceSets {
????????main {
????????????????????res.srcDirs = ['src/main/res','src/main/res-night']
????????????????}
????}
寫(xiě)在android{}之內(nèi)
2.應(yīng)用內(nèi)換膚時(shí)所有的資源文件都要加上后綴 _night?
包括 xml文件 layout文件 drawable文件 圖片資源?