基于插件式的Android換膚框架:ChangeSkin
基于插件式的Android換膚框架,支持app內和或者外部插件式提供資源的換膚方案,無需重啟Activity。
Demo運行
下載night_plugin.apk里面包含資源文件,放到手機或者模擬器SdCard的根目錄。
然后import project,運行app。
運行效果圖:
無需重啟Activity,無縫換膚,資源均來自插件apk中。
使用
只需要按規則定義下資源名稱,然后幾行代碼就完成了換膚。
下載changeskin,作為module依賴至主項目,例如:
dependencies { compile project(':changeskin') }
或者直接添加依賴:
dependencies { compile 'com.zhy:changeskin:1.0.0' }
1、Application中初始化
在你的Application中,去初始化SkinManager,例如:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); SkinManager.getInstance().init(this); } }
別忘了注冊。
2、繼承BaseSkinActivity
讓所有的需要換膚的界面的Activity,繼承自com.zhy.changeskin.base.BaseSkinActivity。
3、對于需要換膚的資源命名使用skin開頭
比如你的某個控件的背景需要換膚:
<android.support.v4.widget.DrawerLayout android:background="@drawable/skin_main_bg" ... />
字體顏色:
<TextView android:id="@+id/id_tv_title" android:textColor="@color/skin_item_text_color" />
其他的類似。
然后,單獨準備一份插件apk,其實就是普通的項目,僅僅準備需要包含用到的資源即可。
例如:
搞成apk就不用說了吧。
4、換膚API
準備完成資源后,調用:
SkinManager.getInstance().changeSkin( mSkinPkgPath, "com.zhy.plugin", new ISkinChangingCallback() { @Override public void onStart() { } @Override public void onError(Exception e) { Toast.makeText(MainActivity.this, "換膚失敗", Toast.LENGTH_SHORT).show(); } @Override public void onComplete() { Toast.makeText(MainActivity.this, "換膚成功", Toast.LENGTH_SHORT).show(); } });
即可完成換膚。第一個參數為插件apk的路徑,第二個參數為插件apk的packageName.
記得設置讀取存儲卡權限。
當然你也可以調用
SkinManager.getInstance().removeAnySkin();
重置為初始狀態。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!