gitextract_gfdlk8qj/ ├── .gitignore ├── .idea/ │ ├── compiler.xml │ ├── copyright/ │ │ └── profiles_settings.xml │ ├── encodings.xml │ ├── gradle.xml │ ├── misc.xml │ ├── modules.xml │ └── runConfigurations.xml ├── QSkinLoaderlib/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── org/ │ │ └── qcode/ │ │ └── qskinloader/ │ │ ├── IActivitySkinEventHandler.java │ │ ├── ILoadSkinListener.java │ │ ├── IResourceLoader.java │ │ ├── IResourceManager.java │ │ ├── ISkinActivity.java │ │ ├── ISkinAttrHandler.java │ │ ├── ISkinAttributeParser.java │ │ ├── ISkinManager.java │ │ ├── ISkinViewHelper.java │ │ ├── IViewCreateListener.java │ │ ├── IWindowViewManager.java │ │ ├── SkinManager.java │ │ ├── attrhandler/ │ │ │ ├── BackgroundAttrHandler.java │ │ │ ├── DividerAttrHandler.java │ │ │ ├── DrawableLeftAttrHandler.java │ │ │ ├── ListSelectorAttrHandler.java │ │ │ ├── RecyclerViewClearSubAttrHandler.java │ │ │ ├── ShadowAttrHandler.java │ │ │ ├── SkinAttrFactory.java │ │ │ ├── SkinAttrUtils.java │ │ │ ├── SrcAttrHandler.java │ │ │ ├── TextColorAttrHandler.java │ │ │ └── TextColorHintAttrHandler.java │ │ ├── base/ │ │ │ ├── observable/ │ │ │ │ ├── INotifyUpdate.java │ │ │ │ ├── IObservable.java │ │ │ │ └── Observable.java │ │ │ └── utils/ │ │ │ ├── CollectionUtils.java │ │ │ ├── HashMapCache.java │ │ │ ├── Logging.java │ │ │ ├── ReflectUtils.java │ │ │ ├── StringUtils.java │ │ │ └── WeakReferenceHelper.java │ │ ├── entity/ │ │ │ ├── DynamicAttr.java │ │ │ ├── SkinAttr.java │ │ │ ├── SkinAttrName.java │ │ │ ├── SkinAttrSet.java │ │ │ └── SkinConstant.java │ │ ├── impl/ │ │ │ ├── ActivitySkinEventHandlerImpl.java │ │ │ ├── SkinAttributeParser.java │ │ │ ├── SkinInflaterFactoryImpl.java │ │ │ ├── SkinManagerImpl.java │ │ │ ├── SkinViewHelperImpl.java │ │ │ ├── ViewSkinTagHelper.java │ │ │ └── WindowViewManager.java │ │ ├── resourceloader/ │ │ │ ├── ILoadResourceCallback.java │ │ │ ├── ResourceManager.java │ │ │ └── impl/ │ │ │ ├── APKResourceLoader.java │ │ │ ├── APKResourceManager.java │ │ │ ├── ConfigChangeResourceLoader.java │ │ │ ├── ConfigChangeResourceManager.java │ │ │ ├── SuffixResourceLoader.java │ │ │ └── SuffixResourceManager.java │ │ └── view/ │ │ └── ShadowImageView.java │ └── res/ │ └── values/ │ ├── skin_attrs.xml │ ├── skin_ids.xml │ └── strings.xml ├── README.md ├── SkinProject/ │ ├── .gitignore │ ├── app/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── org/ │ │ │ └── qcode/ │ │ │ └── skinproject/ │ │ │ └── MainActivity.java │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── btn_bg.xml │ │ │ ├── drawable_float_view.xml │ │ │ └── news_item_selector.xml │ │ └── values/ │ │ └── colors.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ └── nightMode.skin │ ├── java/ │ │ └── org/ │ │ └── qcode/ │ │ └── demo/ │ │ ├── BaseActivity.java │ │ ├── MainActivity.java │ │ ├── SkinChangeSwitchView.java │ │ ├── SkinDemoApp.java │ │ ├── base/ │ │ │ └── Settings.java │ │ ├── skin/ │ │ │ ├── SkinChangeHelper.java │ │ │ ├── SkinConfigHelper.java │ │ │ ├── SkinConstant.java │ │ │ └── SkinUtils.java │ │ ├── ui/ │ │ │ ├── customattr/ │ │ │ │ ├── CustomAttrViewActivity.java │ │ │ │ ├── CustomTextView.java │ │ │ │ ├── DefBackgroundAttrHandler.java │ │ │ │ └── DefTextColorAttrHandler.java │ │ │ ├── dynamicaddview/ │ │ │ │ └── DynamicAddViewActivity.java │ │ │ ├── gridview/ │ │ │ │ └── GridViewActivity.java │ │ │ ├── otherscene/ │ │ │ │ ├── CustomDialog.java │ │ │ │ ├── FloatView.java │ │ │ │ ├── OtherSceneActivity.java │ │ │ │ ├── SpannableSkinAttr.java │ │ │ │ └── SpannableSkinAttrHandler.java │ │ │ ├── recyclerview/ │ │ │ │ ├── DataRecyclerViewAdapter.java │ │ │ │ └── RecyclerViewActivity.java │ │ │ └── viewpageandlistview/ │ │ │ ├── DataListAdapter.java │ │ │ ├── NewsPageAdapter.java │ │ │ ├── RecyclablePageAdapter.java │ │ │ └── ViewPagerAndListViewActivity.java │ │ └── utils/ │ │ ├── FileUtils.java │ │ ├── UITaskRunner.java │ │ └── UIUtil.java │ └── res/ │ ├── drawable/ │ │ ├── btn_bg.xml │ │ ├── btn_bg_night.xml │ │ ├── drawable_float_view.xml │ │ ├── drawable_float_view_night.xml │ │ ├── news_item_selector.xml │ │ └── news_item_selector_night.xml │ ├── drawable-night/ │ │ ├── btn_bg.xml │ │ ├── drawable_float_view.xml │ │ └── news_item_selector.xml │ ├── layout/ │ │ ├── activity_base_activity.xml │ │ ├── activity_custom_attr_test.xml │ │ ├── activity_dynamic_add_view.xml │ │ ├── activity_grid_view.xml │ │ ├── activity_main.xml │ │ ├── activity_other_scene.xml │ │ ├── activity_recycler_view.xml │ │ ├── activity_viewpager_listview.xml │ │ ├── grid_item_view.xml │ │ ├── layout_dialog_custom.xml │ │ ├── layout_popwindow.xml │ │ └── list_item_view.xml │ ├── values/ │ │ ├── colors.xml │ │ ├── colors_night.xml │ │ ├── dimens.xml │ │ ├── news_attr.xml │ │ ├── strings.xml │ │ └── styles.xml │ ├── values-night/ │ │ └── colors_night.xml │ └── values-w820dp/ │ └── dimens.xml ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat └── settings.gradle