├── app ├── gradlew ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── drawable-xxhdpi │ │ │ └── icon_android.png │ │ └── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── ic_launcher-playstore.png │ │ ├── assets │ │ └── therouter │ │ │ └── routeMap.json │ │ └── java │ │ └── com │ │ └── hjl │ │ └── lwanandroid │ │ ├── WanBaseActivity.kt │ │ └── skin │ │ └── SkinResourceAcquirer.java └── proguard-rules.pro ├── commonlib ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── drawable-xxhdpi │ │ │ ├── common_loading.jpg │ │ │ ├── common_icon_back.png │ │ │ ├── view_icon_delete.png │ │ │ ├── common_bg_popover.9.png │ │ │ ├── common_icon_close.png │ │ │ ├── common_icon_folding.png │ │ │ ├── common_ic_no_content.png │ │ │ ├── common_ic_no_network.png │ │ │ ├── view_icon_search_gray.png │ │ │ ├── common_video_border_tag.png │ │ │ ├── view_icon_search_white.png │ │ │ ├── common_ic_no_content_gray.png │ │ │ ├── view_icon_arrow_back_black.png │ │ │ └── view_icon_arrow_right_black.png │ │ ├── drawable │ │ │ ├── common_bg_white_2t.xml │ │ │ ├── common_bg_white_7t.xml │ │ │ ├── common_bg_ios_white_8t.xml │ │ │ ├── common_bg_white_5t.xml │ │ │ ├── common_bg_white_8t.xml │ │ │ ├── common_bg_gray_3t.xml │ │ │ ├── common_tab_vertical_divider.xml │ │ │ ├── common_bg_edit_gray_4t.xml │ │ │ ├── common_bg_top_ioswhite_8t.xml │ │ │ ├── common_dialog_animator.xml │ │ │ ├── common_loading_animation.xml │ │ │ ├── common_bg_blue_2t.xml │ │ │ ├── common_bg_blue_4t.xml │ │ │ ├── common_bg_bottom_ioswhite_8t.xml │ │ │ ├── common_bg_floating_log.xml │ │ │ ├── common_bg_floating_bottom.xml │ │ │ ├── common_checkbox_selector.xml │ │ │ └── common_bag_blue_selector.xml │ │ ├── anim │ │ │ ├── common_ios_dialog_out.xml │ │ │ ├── common_ios_dialog_in.xml │ │ │ └── common_from_bottom_in.xml │ │ ├── layout │ │ │ ├── common_activity_base.xml │ │ │ ├── common_fragment_base_multiple.xml │ │ │ ├── common_activity_base_multiple.xml │ │ │ ├── common_custom_loading_view.xml │ │ │ ├── common_item_base_tv.xml │ │ │ └── common_custom_empty_view.xml │ │ └── values │ │ │ ├── attrs.xml │ │ │ └── dimens.xml │ │ ├── java │ │ └── com │ │ │ └── hjl │ │ │ └── commonlib │ │ │ ├── annotation │ │ │ └── TraceTime.java │ │ │ ├── base │ │ │ ├── IApplication.java │ │ │ ├── IResourceAcquirer.java │ │ │ └── BaseSingleton.kt │ │ │ ├── utils │ │ │ ├── Utils.java │ │ │ ├── AndroidUtils.kt │ │ │ ├── RxSchedulers.java │ │ │ ├── TaskDispatcher.kt │ │ │ ├── PinYinUtil.java │ │ │ ├── BitmapUtils.java │ │ │ ├── DensityUtil.java │ │ │ ├── CloseUtils.java │ │ │ ├── SpUtils.java │ │ │ └── StringUtils.java │ │ │ ├── network │ │ │ ├── interceptor │ │ │ │ ├── RetryInterceptor.java │ │ │ │ ├── RedirectInterceptor.java │ │ │ │ ├── CacheInterceptor.java │ │ │ │ └── CookieInterceptor.java │ │ │ ├── okhttp │ │ │ │ └── RequestParams.java │ │ │ └── retrofit │ │ │ │ └── BaseResponse.java │ │ │ ├── extend │ │ │ └── ActvityExt.kt │ │ │ ├── constant │ │ │ └── Constant.java │ │ │ └── adapter │ │ │ ├── LazyFragmentPagerAdapter.java │ │ │ └── HealthyFragmentPagerAdapter.java │ │ └── AndroidManifest.xml └── proguard-rules.pro ├── jetpacklib ├── .gitignore ├── consumer-rules.pro ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── hjl │ │ │ └── jetpacklib │ │ │ └── mvvm │ │ │ ├── exception │ │ │ ├── ApiException.kt │ │ │ └── Code.kt │ │ │ ├── BaseRepository.kt │ │ │ ├── recycleview │ │ │ ├── OnItemLongClickListener.java │ │ │ ├── OnItemChildClickListener.java │ │ │ ├── OnItemChildLongClickListener.java │ │ │ ├── ICustomView.java │ │ │ ├── OnItemClickListener.java │ │ │ └── SimpleTextAdapter.kt │ │ │ ├── NetworkStatus.kt │ │ │ ├── ViewModelFactory.kt │ │ │ ├── DataBindingHelper.kt │ │ │ ├── BaseDialog.kt │ │ │ ├── view │ │ │ ├── BaseMVVMFragment2.kt │ │ │ └── BasePagingSource.kt │ │ │ ├── DataBindingAdapter.kt │ │ │ ├── BaseViewModel.kt │ │ │ └── custom │ │ │ └── GsonRequestBodyConverter.java │ │ └── res │ │ └── layout │ │ └── base_item_simple_text.xml ├── proguard-rules.pro └── build.gradle.kts ├── module_base ├── .gitignore ├── consumer-rules.pro ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── hjl │ │ │ └── module_base │ │ │ ├── constants │ │ │ └── EventKey.java │ │ │ ├── router │ │ │ └── RouterName.java │ │ │ ├── datbase │ │ │ ├── DataCacheEntity.kt │ │ │ ├── DataCacheDao.kt │ │ │ └── WanDatabase.kt │ │ │ └── AndroidUtils.kt │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle.kts ├── module_core ├── .gitignore ├── consumer-rules.pro ├── src │ ├── moduledebug │ │ ├── res │ │ │ ├── values │ │ │ │ └── strings.xml │ │ │ └── layout │ │ │ │ ├── item_test_paging.xml │ │ │ │ └── activity_paging_test.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── hjl │ │ │ │ └── module_core │ │ │ │ ├── PagingRepository.kt │ │ │ │ ├── PagingViewModel.kt │ │ │ │ └── TestPagingSource.kt │ │ └── AndroidManifest.xml │ └── main │ │ ├── res │ │ ├── drawable-xxhdpi │ │ │ ├── core_icon_book.png │ │ │ ├── core_icon_exit.png │ │ │ ├── core_icon_home.png │ │ │ ├── core_icon_like.png │ │ │ ├── core_icon_mine.png │ │ │ ├── core_icon_skin.png │ │ │ ├── core_custom_pic.jpg │ │ │ ├── core_icon_maven.png │ │ │ ├── core_icon_unlike.png │ │ │ ├── core_icon_wenda.png │ │ │ ├── ic_launcher_round.png │ │ │ ├── core_icon_book_grey.png │ │ │ ├── core_icon_home_grey.png │ │ │ ├── core_icon_integral.png │ │ │ ├── core_icon_language.png │ │ │ ├── core_icon_like_red.png │ │ │ ├── core_icon_mine_grey.png │ │ │ ├── core_icon_history_gray.png │ │ │ ├── core_icon_login_blue.png │ │ │ ├── core_icon_login_gray.png │ │ │ ├── core_icon_menu_black.png │ │ │ ├── core_icon_wenda_gray.png │ │ │ ├── core_icon_password_blue.png │ │ │ ├── core_icon_password_gray.png │ │ │ ├── core_icon_arrow_left_circle.png │ │ │ ├── core_icon_arrow_right_circle.png │ │ │ └── core_icon_delete_circle_gray.png │ │ ├── anim │ │ │ ├── core_anim_top_to_bottom.xml │ │ │ ├── core_anim_to_invisiable.xml │ │ │ └── core_anim_bottom_to_top.xml │ │ ├── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── drawable │ │ │ ├── core_login_et_cursor.xml │ │ │ ├── core_bg_btn_press_blue_24t.xml │ │ │ ├── core_bg_btn_unpress_blue_24.xml │ │ │ ├── core_bg_search_white_24t.xml │ │ │ ├── core_bg_search_gray_24t.xml │ │ │ ├── core_bg_hot_key_blue_4t.xml │ │ │ ├── core_bg_blue_16t.xml │ │ │ ├── core_bg_gray_4t.xml │ │ │ ├── core_bg_btn_blue_selector.xml │ │ │ ├── core_bg_search_gray_tip.xml │ │ │ ├── core_bg_tab.xml │ │ │ ├── core_style_progress_hor.xml │ │ │ └── core_bg_search_gray_shadow.xml │ │ ├── layout │ │ │ ├── core_simple_img.xml │ │ │ ├── core_header_banner.xml │ │ │ ├── core_fragment_navigation.xml │ │ │ ├── core_fragment_system_detail.xml │ │ │ ├── core_fragment_home_system.xml │ │ │ ├── core_activity_main.xml │ │ │ ├── core_activity_collect_list.xml │ │ │ ├── core_activity_maven_search_result.xml │ │ │ ├── core_fragment_minus.xml │ │ │ ├── core_fragment_wenda.xml │ │ │ ├── core_item_system_article_detail.xml │ │ │ ├── core_fragment_main_tab.xml │ │ │ ├── core_item_hot_search.xml │ │ │ ├── core_item_commonly_web.xml │ │ │ ├── core_item_maven_group.xml │ │ │ ├── core_fragment_main.xml │ │ │ ├── core_fragment_home.xml │ │ │ ├── core_fragment_system_main.xml │ │ │ ├── core_activity_system_article_detail.xml │ │ │ └── core_item_home_system.xml │ │ └── menu │ │ │ └── core_simple_web_menu.xml │ │ ├── java │ │ └── com │ │ │ └── hjl │ │ │ └── core │ │ │ ├── utils │ │ │ ├── ReflectUtils.kt │ │ │ ├── Utils.kt │ │ │ ├── CacheConstant.kt │ │ │ ├── DataBindingAdapter.kt │ │ │ ├── Constant.kt │ │ │ └── SpUtils.kt │ │ │ ├── net │ │ │ ├── bean │ │ │ │ ├── SimpleStringBean.kt │ │ │ │ ├── MineItemBean.java │ │ │ │ └── HomeSearchHotKeyBean.java │ │ │ └── BaseResponse.kt │ │ │ ├── repository │ │ │ ├── RepositoryModule.kt │ │ │ ├── UserRepository.kt │ │ │ ├── MavenRepository.kt │ │ │ ├── HomeSearchRepository.kt │ │ │ └── paging │ │ │ │ ├── CollectArticlePagingSource.kt │ │ │ │ ├── SquareArticlePagingSource.kt │ │ │ │ ├── HomeWendaPagingSource.kt │ │ │ │ ├── HomeSearchResultPagingSource.kt │ │ │ │ └── HomeSystemPagingSource.kt │ │ │ ├── base │ │ │ ├── HeadViewHolder.java │ │ │ ├── BindingHolder.kt │ │ │ └── PagingDataViewHolder.kt │ │ │ ├── adpter │ │ │ ├── MineItemAdapter.kt │ │ │ ├── HomeWebCommonlyAdapter.kt │ │ │ ├── HomeSearchHotKeyAdapter.kt │ │ │ ├── HomeSearchHistoryAdapter.kt │ │ │ ├── MavenVersionAdapter.kt │ │ │ ├── SystemArticleAdapter.kt │ │ │ ├── NaviArticleAdapter.kt │ │ │ ├── CollectListAdapter.kt │ │ │ ├── SystemListAdapter.kt │ │ │ └── NaviListAdapter.kt │ │ │ └── ui │ │ │ └── system │ │ │ ├── SystemNavigationFragment.kt │ │ │ └── SystemListFragment.kt │ │ └── AndroidManifest.xml └── proguard-rules.pro ├── skin ├── skin-dark │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── core_icon_book.png │ │ │ │ ├── core_icon_exit.png │ │ │ │ ├── core_icon_home.png │ │ │ │ ├── core_icon_like.png │ │ │ │ ├── core_icon_mine.png │ │ │ │ ├── core_icon_skin.png │ │ │ │ ├── core_icon_maven.png │ │ │ │ ├── core_icon_wenda.png │ │ │ │ ├── core_icon_integral.png │ │ │ │ ├── core_icon_language.png │ │ │ │ ├── core_icon_arrow_left_circle.png │ │ │ │ └── core_icon_arrow_right_circle.png │ │ │ └── values │ │ │ │ └── colors.xml │ │ │ └── AndroidManifest.xml │ ├── proguard-rules.pro │ └── build.gradle.kts ├── skin-green │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── res │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── core_icon_book.png │ │ │ │ ├── core_icon_exit.png │ │ │ │ ├── core_icon_home.png │ │ │ │ ├── core_icon_like.png │ │ │ │ ├── core_icon_maven.png │ │ │ │ ├── core_icon_mine.png │ │ │ │ ├── core_icon_skin.png │ │ │ │ ├── core_icon_wenda.png │ │ │ │ ├── core_icon_integral.png │ │ │ │ ├── core_icon_language.png │ │ │ │ ├── core_icon_arrow_left_circle.png │ │ │ │ └── core_icon_arrow_right_circle.png │ │ │ └── values │ │ │ │ └── colors.xml │ │ │ └── AndroidManifest.xml │ ├── proguard-rules.pro │ └── build.gradle.kts └── skin-yellow │ ├── .gitignore │ ├── src │ └── main │ │ ├── res │ │ ├── drawable-xxhdpi │ │ │ ├── core_icon_book.png │ │ │ ├── core_icon_exit.png │ │ │ ├── core_icon_home.png │ │ │ ├── core_icon_like.png │ │ │ ├── core_icon_mine.png │ │ │ ├── core_icon_skin.png │ │ │ ├── core_icon_maven.png │ │ │ ├── core_icon_wenda.png │ │ │ ├── core_icon_integral.png │ │ │ ├── core_icon_language.png │ │ │ ├── core_icon_arrow_left_circle.png │ │ │ └── core_icon_arrow_right_circle.png │ │ └── values │ │ │ └── colors.xml │ │ └── AndroidManifest.xml │ ├── proguard-rules.pro │ └── build.gradle.kts ├── module_func ├── func_skin │ ├── .gitignore │ ├── src │ │ └── main │ │ │ ├── assets │ │ │ └── skins │ │ │ │ ├── dark.skin │ │ │ │ ├── green.skin │ │ │ │ ├── night.skin │ │ │ │ └── yellow.skin │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── hjl │ │ │ │ └── skin │ │ │ │ ├── SkinItemBean.kt │ │ │ │ └── SkinAdapter.kt │ │ │ └── res │ │ │ └── layout │ │ │ ├── skin_activity_skin.xml │ │ │ └── skin_item_skin_select.xml │ ├── proguard-rules.pro │ └── build.gradle.kts └── func_language │ ├── .gitignore │ ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ └── strings.xml │ │ └── layout │ │ │ ├── activity_language_setting.xml │ │ │ └── item_language.xml │ │ ├── java │ │ └── com │ │ │ └── hjl │ │ │ └── language │ │ │ ├── impl │ │ │ ├── LanguageBean.kt │ │ │ ├── LanguageItemAdapter.kt │ │ │ └── SPLanguageSetting.kt │ │ │ └── ILanguageSetting.kt │ │ └── AndroidManifest.xml │ ├── proguard-rules.pro │ └── build.gradle.kts ├── pic ├── home.jpg ├── mine.jpg ├── skin.jpg ├── square.jpg ├── system.jpg ├── framework.jpg ├── mine-black.jpg └── wenda-black.jpg ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── third_sdk └── poi │ ├── poi-3.12-android-a.jar │ └── poi-ooxml-schemas-3.12-20150511-a.jar ├── .gitignore ├── settings.gradle.kts ├── gradle.properties └── README.md /app/gradlew: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /commonlib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /jetpacklib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /jetpacklib/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /module_base/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /module_base/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /module_core/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /module_core/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skin/skin-dark/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin/skin-green/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /skin/skin-yellow/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /module_func/func_skin/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /module_func/func_language/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /jetpacklib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /module_func/func_language/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pic/home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/home.jpg -------------------------------------------------------------------------------- /pic/mine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/mine.jpg -------------------------------------------------------------------------------- /pic/skin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/skin.jpg -------------------------------------------------------------------------------- /module_core/src/moduledebug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /pic/square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/square.jpg -------------------------------------------------------------------------------- /pic/system.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/system.jpg -------------------------------------------------------------------------------- /pic/framework.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/framework.jpg -------------------------------------------------------------------------------- /pic/mine-black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/mine-black.jpg -------------------------------------------------------------------------------- /pic/wenda-black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/pic/wenda-black.jpg -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 玩安卓 3 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /third_sdk/poi/poi-3.12-android-a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/third_sdk/poi/poi-3.12-android-a.jar -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/drawable-xxhdpi/icon_android.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /third_sdk/poi/poi-ooxml-schemas-3.12-20150511-a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/third_sdk/poi/poi-ooxml-schemas-3.12-20150511-a.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /module_func/func_skin/src/main/assets/skins/dark.skin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_func/func_skin/src/main/assets/skins/dark.skin -------------------------------------------------------------------------------- /module_func/func_skin/src/main/assets/skins/green.skin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_func/func_skin/src/main/assets/skins/green.skin -------------------------------------------------------------------------------- /module_func/func_skin/src/main/assets/skins/night.skin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_func/func_skin/src/main/assets/skins/night.skin -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_loading.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_loading.jpg -------------------------------------------------------------------------------- /module_func/func_skin/src/main/assets/skins/yellow.skin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_func/func_skin/src/main/assets/skins/yellow.skin -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_icon_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_icon_back.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/view_icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/view_icon_delete.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_book.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_exit.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_home.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_like.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_mine.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_skin.png -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_bg_popover.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_bg_popover.9.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_icon_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_icon_close.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_icon_folding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_icon_folding.png -------------------------------------------------------------------------------- /module_core/src/main/res/anim/core_anim_top_to_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_custom_pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_custom_pic.jpg -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_maven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_maven.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_unlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_unlike.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_wenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_wenda.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /module_core/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #009A61 5 | 6 | 7 | -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_book.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_exit.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_home.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_like.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_mine.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_skin.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #2C2C2C 5 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_ic_no_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_ic_no_content.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_ic_no_network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_ic_no_network.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/view_icon_search_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/view_icon_search_gray.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_book_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_book_grey.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_home_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_home_grey.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_integral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_integral.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_language.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_like_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_like_red.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_mine_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_mine_grey.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_maven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_maven.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_wenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_wenda.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_book.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_exit.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_home.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_like.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_maven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_maven.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_mine.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_skin.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_wenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_wenda.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #C7EDCC 5 | -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_book.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_exit.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_home.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_like.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_mine.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_skin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_skin.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #D6D5B7 5 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_video_border_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_video_border_tag.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/view_icon_search_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/view_icon_search_white.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_history_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_history_gray.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_login_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_login_blue.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_login_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_login_gray.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_menu_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_menu_black.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_wenda_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_wenda_gray.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_integral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_integral.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_language.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_integral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_integral.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_language.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_maven.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_maven.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_wenda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_wenda.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/common_ic_no_content_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/common_ic_no_content_gray.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/view_icon_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/view_icon_arrow_back_black.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_password_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_password_blue.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_password_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_password_gray.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_integral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_integral.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_language.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_language.png -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable-xxhdpi/view_icon_arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/commonlib/src/main/res/drawable-xxhdpi/view_icon_arrow_right_black.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png -------------------------------------------------------------------------------- /module_core/src/main/res/drawable-xxhdpi/core_icon_delete_circle_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/module_core/src/main/res/drawable-xxhdpi/core_icon_delete_circle_gray.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png -------------------------------------------------------------------------------- /skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-dark/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png -------------------------------------------------------------------------------- /skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-green/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_arrow_left_circle.png -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HJunLong601/LWanAndroid/HEAD/skin/skin-yellow/src/main/res/drawable-xxhdpi/core_icon_arrow_right_circle.png -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/exception/ApiException.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.exception 2 | 3 | class ApiException(val errorCode: Int, val errorMessage: String) : RuntimeException(errorMessage) -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/ReflectUtils.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | /** 4 | * Author : long 5 | * Description : 6 | * Date : 2020/7/25 7 | */ 8 | class ReflectUtils { 9 | 10 | 11 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/net/bean/SimpleStringBean.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.net.bean 2 | 3 | /** 4 | * Author : long 5 | * Description : 6 | * Date : 2021/5/2 7 | */ 8 | data class SimpleStringBean(var data : String) -------------------------------------------------------------------------------- /skin/skin-dark/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin/skin-green/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /skin/skin-yellow/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /module_func/func_language/src/main/java/com/hjl/language/impl/LanguageBean.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.language.impl 2 | 3 | data class LanguageBean( 4 | val language: String, 5 | val name: String, 6 | var isSelect: Boolean = false 7 | ) -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #6200EE 4 | #3700B3 5 | #03DAC5 6 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/annotation/TraceTime.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.annotation; 2 | 3 | /** 4 | * author: long 5 | * description please add a description here 6 | * Date: 2021/9/30 7 | */ 8 | @interface TraceTime { 9 | } 10 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_login_et_cursor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/ 5 | .DS_Store 6 | /build 7 | /captures 8 | .cxx 9 | /output 10 | 11 | # Project exclude paths 12 | /buildSrc/build/ 13 | wankey.jks 14 | # Project exclude paths 15 | /gradle-plugin/skin-plugin/build/ -------------------------------------------------------------------------------- /module_func/func_skin/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_btn_press_blue_24t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_white_2t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_btn_unpress_blue_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/BaseRepository.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | /** 4 | * Description 网络请求基类 待拓展 5 | * Date 2020/3/3 11:08 6 | * created by long 7 | */ 8 | @Suppress("UNCHECKED_CAST") 9 | open class BaseRepository { 10 | 11 | 12 | } -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_search_white_24t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/OnItemLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview; 2 | 3 | import android.view.View; 4 | 5 | public interface OnItemLongClickListener { 6 | void onItemLongClick(int position, View view, T bean); 7 | } 8 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/net/BaseResponse.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.net 2 | 3 | /** 4 | * @author: long 5 | * @description BaseResponse for WanAndroid API 6 | * @Date: 2020/6/4 7 | */ 8 | data class BaseResponse(var data : T,var errorCode : Int = -1,var errorMsg : String = "") -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/OnItemChildClickListener.java: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview; 2 | 3 | import android.view.View; 4 | 5 | public interface OnItemChildClickListener { 6 | void onItemChildClick(int position, View view, T bean); 7 | } 8 | -------------------------------------------------------------------------------- /module_core/src/main/res/anim/core_anim_to_invisiable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /commonlib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_white_7t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/OnItemChildLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview; 2 | 3 | import android.view.View; 4 | 5 | public interface OnItemChildLongClickListener{ 6 | void onItemChildLongClick(int position, View view, T bean); 7 | } 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_ios_white_8t.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_white_5t.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_white_8t.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/constants/EventKey.java: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base.constants; 2 | 3 | /** 4 | * Author : long 5 | * Description : 6 | * Date : 2022/6/22 7 | */ 8 | public interface EventKey { 9 | 10 | String LOGIN_STATE_CHANGE = "login_state_change"; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_gray_3t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /module_core/src/main/res/anim/core_anim_bottom_to_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_search_gray_24t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_simple_img.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_hot_key_blue_4t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/anim/common_ios_dialog_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/base/IApplication.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.base; 2 | 3 | import android.app.Application; 4 | 5 | /** 6 | * Author : long 7 | * Description : 8 | * Date : 2020/8/30 9 | */ 10 | public interface IApplication { 11 | 12 | void initApp(Application application); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /commonlib/src/main/res/anim/common_ios_dialog_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /module_base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_tab_vertical_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_blue_16t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/NetworkStatus.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | /** 4 | * Description Enum class for Network status 5 | * Author long 6 | * Date 2020/6/13 20:34 7 | */ 8 | enum class NetworkStatus { 9 | 10 | FAILED, 11 | LOADING, 12 | LOADING_INITIAL, 13 | COMPLETE 14 | 15 | } -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_edit_gray_4t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_top_ioswhite_8t.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_dialog_animator.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/Utils.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | import com.hjl.commonlib.utils.SpUtils 4 | 5 | /** 6 | * Author : long 7 | * Description : 8 | * Date : 2020/9/6 9 | */ 10 | 11 | object Utils { 12 | 13 | fun hasCookie():Boolean{ 14 | return SpUtils.getCookie().isNotEmpty() 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_loading_animation.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_blue_2t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_blue_4t.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /module_func/func_language/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /commonlib/src/main/res/anim/common_from_bottom_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_bottom_ioswhite_8t.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_floating_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/router/RouterName.java: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base.router; 2 | 3 | /** 4 | * author: long 5 | * description 存放路由名字 6 | * Date: 2022/2/10 7 | */ 8 | public interface RouterName { 9 | String SKIN_SKIN_ACTIVITY = "/skin/SkinActivity"; 10 | String LANGUAGE_SETTING = "/language/LanguageSettingActivity"; 11 | } 12 | -------------------------------------------------------------------------------- /module_core/src/main/res/menu/core_simple_web_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_gray_4t.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Mar 29 11:59:42 CST 2021 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | # Use mirroring and download the full version to avoid time-consuming downloading elsewhere. 7 | distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.5-all.zip 8 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bg_floating_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/ICustomView.java: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview; 2 | 3 | import com.hjl.jetpacklib.mvvm.BaseViewModel; 4 | 5 | /** 6 | * Description TODO 7 | * Author long 8 | * Date 2020/3/30 17:09 9 | */ 10 | public interface ICustomView { 11 | 12 | void setData(S data); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * author: long 7 | * description please add a description here 8 | * Date: 2021/10/22 9 | */ 10 | public interface OnItemClickListener { 11 | void onItemClick(int position, View view, T bean); 12 | } 13 | -------------------------------------------------------------------------------- /module_core/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/Utils.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils; 2 | 3 | public class Utils { 4 | 5 | 6 | public static boolean isStringEmpty(String str){ 7 | return (str == null ||str.trim().length() == 0 || str.trim().equals("null") ); 8 | } 9 | 10 | public static String getSimpleTAG (Class cls){ 11 | return cls.getSimpleName(); 12 | } 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_checkbox_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/assets/therouter/routeMap.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "path": "/skin/SkinActivity", 4 | "className": "com.hjl.skin.SkinActivity", 5 | "action": "", 6 | "description": "", 7 | "params": {} 8 | }, 9 | { 10 | "path": "/language/LanguageSettingActivity", 11 | "className": "com.hjl.language.impl.LanguageSettingActivity", 12 | "action": "", 13 | "description": "", 14 | "params": {} 15 | } 16 | ] -------------------------------------------------------------------------------- /module_func/func_skin/src/main/java/com/hjl/skin/SkinItemBean.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.skin 2 | 3 | import android.graphics.Color 4 | 5 | /** 6 | * Author : long 7 | * Description : 8 | * Date : 2021/12/21 9 | */ 10 | data class SkinItemBean(val desc : String, 11 | val skinName : String, 12 | val backgroundRes : Int = -1, 13 | val backgroundColor : Int = Color.BLACK) 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_btn_blue_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_header_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /commonlib/src/main/res/layout/common_activity_base.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/CacheConstant.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | 4 | const val CACHE_BANNER = "banner" 5 | const val CACHE_ARTICLE_TOP = "article_top" 6 | const val CACHE_ARTICLE_PAGE = "article_page_" 7 | const val CACHE_COLLECT_LIST = "collect_list" 8 | const val CACHE_HOME_HOT_KEY = "home_search_hot_key" 9 | const val CACHE_HOME_WEB_COMMONLY = "home_search_web_commonly" 10 | const val CACHE_MAVEN_GOOGLE_PACKAGE_LIST = "google_maven_list" 11 | -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/datbase/DataCacheEntity.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base.datbase 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity(tableName = "dataCache") 8 | data class DataCacheEntity( 9 | @PrimaryKey val cacheKey : String, 10 | @ColumnInfo(name = "cacheContent") val cacheContent : String?, 11 | @ColumnInfo(name = "updateTime") val updateTime : String?) -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/RepositoryModule.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository 2 | 3 | import dagger.Module 4 | import dagger.Provides 5 | import dagger.hilt.InstallIn 6 | import dagger.hilt.components.SingletonComponent 7 | import javax.inject.Singleton 8 | 9 | 10 | @InstallIn(SingletonComponent::class) 11 | @Module 12 | object RepositoryModule { 13 | 14 | 15 | @Provides 16 | @Singleton 17 | fun provideMavenRepository() = MavenRepository() 18 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/base/IResourceAcquirer.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.base; 2 | 3 | import android.content.Context; 4 | import android.graphics.drawable.Drawable; 5 | 6 | /** 7 | * author: long 8 | * description please add a description here 9 | * Date: 2021/12/17 10 | */ 11 | public interface IResourceAcquirer { 12 | 13 | int getColor(Context context, int resId); 14 | 15 | Drawable getDrawable(Context context, int resId); 16 | 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /module_func/func_language/src/main/java/com/hjl/language/ILanguageSetting.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.language 2 | 3 | import android.content.Context 4 | import java.util.Locale 5 | 6 | /** 7 | * Author : long 8 | * Description : 语言设置保存的接口类 9 | * Date : 2024/3/7 10 | */ 11 | interface ILanguageSetting { 12 | 13 | fun init(context: Context) 14 | 15 | fun saveLanguageSetting(data: String) 16 | 17 | fun getLanguageSetting(): String 18 | 19 | fun getSetUpdLocale(): Locale 20 | 21 | 22 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/base/HeadViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.hjl.core.base; 2 | 3 | import android.view.View; 4 | 5 | import androidx.annotation.NonNull; 6 | import androidx.recyclerview.widget.RecyclerView; 7 | 8 | /** 9 | * author: long 10 | * description please add a description here 11 | * Date: 2020/8/19 12 | */ 13 | public class HeadViewHolder extends RecyclerView.ViewHolder { 14 | public HeadViewHolder(@NonNull View itemView) { 15 | super(itemView); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/base/BaseSingleton.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.base 2 | 3 | /** 4 | * Author : long 5 | * Description : 6 | * Date : 2022/10/26 7 | */ 8 | abstract class BaseSingleton { 9 | @Volatile 10 | private var instance: T? = null 11 | 12 | protected abstract val creator: (P) -> T 13 | 14 | fun getInstance(param: P): T = 15 | instance ?: synchronized(this) { 16 | instance ?: creator(param).also { instance = it } 17 | } 18 | 19 | 20 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/AndroidUtils.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils 2 | 3 | import android.annotation.SuppressLint 4 | import android.content.Context 5 | import android.location.Location 6 | 7 | 8 | 9 | /** 10 | * author: long 11 | * description please add a description here 12 | * Date: 2020/9/7 13 | */ 14 | 15 | object KTAndroidUtils{ 16 | 17 | 18 | @SuppressLint("MissingPermission") 19 | fun getLocation(context: Context,callback : (location : Location)-> Unit){ 20 | 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/DataBindingAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | import android.app.Activity 4 | import android.view.View 5 | import androidx.databinding.BindingAdapter 6 | import com.hjl.core.ui.SimpleWebActivity 7 | 8 | /** 9 | * author: long 10 | * description please add a description here 11 | * Date: 2021/4/19 12 | */ 13 | 14 | 15 | @BindingAdapter("linkUrl") 16 | fun jumpUrl(view: View, url : String){ 17 | view.setOnClickListener { SimpleWebActivity.loadUrl(view.context as Activity,url)} 18 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/RxSchedulers.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils; 2 | 3 | import io.reactivex.ObservableTransformer; 4 | import io.reactivex.android.schedulers.AndroidSchedulers; 5 | import io.reactivex.schedulers.Schedulers; 6 | 7 | public class RxSchedulers { 8 | 9 | public static ObservableTransformer io_main() { 10 | 11 | return upstream -> 12 | upstream.subscribeOn(Schedulers.io()) 13 | .observeOn(AndroidSchedulers.mainThread()); 14 | 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_search_gray_tip.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/Constant.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | /** 4 | * Author : long 5 | * Description : 6 | * Date : 2020/9/5 7 | */ 8 | object Constant { 9 | 10 | const val ACTION_RANK = "mine_rank" 11 | const val ACTION_COLLECT = "mine_collect" 12 | const val ACTION_EXIT = "mine_exit" 13 | const val ACTION_MAVEN = "mine_maven" 14 | const val ACTION_LANGUAGE = "mine_language" 15 | const val ACTION_SKIN = "mine_skin" 16 | 17 | 18 | const val SP_KEY_SEARCH_HISTORY = "sp_key_search_history" 19 | const val ITEM_SEPARATOR = "#" 20 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /module_core/src/moduledebug/res/layout/item_test_paging.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /commonlib/src/main/res/layout/common_fragment_base_multiple.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/UserRepository.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository 2 | 3 | import com.hjl.jetpacklib.mvvm.BaseRepository 4 | import com.hjl.core.net.await 5 | import com.hjl.core.net.coreApiServer 6 | 7 | /** 8 | * Author : long 9 | * Description : 10 | * Date : 2020/8/16 11 | */ 12 | class UserRepository : BaseRepository() { 13 | 14 | suspend fun login(username:String,password:String) = 15 | coreApiServer.login(username,password).await() 16 | 17 | suspend fun register(username:String,password:String,repassword:String) = 18 | coreApiServer.register(username, password, repassword).await() 19 | } -------------------------------------------------------------------------------- /commonlib/src/main/res/layout/common_activity_base_multiple.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_system_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /module_func/func_language/src/main/java/com/hjl/language/impl/LanguageItemAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.language.impl 2 | 3 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 4 | import com.hjl.language.R 5 | import com.hjl.language.databinding.ItemLanguageBinding 6 | 7 | class LanguageItemAdapter : BaseRecyclerViewAdapter() { 8 | override fun bindData(binding: ItemLanguageBinding?, data: LanguageBean) { 9 | binding?.tvLanguageName?.text = data.name 10 | binding?.cbLanguage?.isChecked = data.isSelect 11 | } 12 | 13 | override fun getLayoutId(): Int { 14 | return R.layout.item_language 15 | } 16 | } -------------------------------------------------------------------------------- /module_core/src/moduledebug/java/com/hjl/module_core/PagingRepository.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_core 2 | 3 | import androidx.paging.Pager 4 | import androidx.paging.PagingConfig 5 | import androidx.paging.PagingData 6 | import com.hjl.core.net.bean.HomeArticleBean 7 | import kotlinx.coroutines.flow.Flow 8 | 9 | /** 10 | * author: long 11 | * description please add a description here 12 | * Date: 2021/4/21 13 | */ 14 | class PagingRepository { 15 | 16 | fun getPagingData() : Flow>{ 17 | return Pager( 18 | config = PagingConfig(20), 19 | pagingSourceFactory = { TestPagingSource()} 20 | ).flow 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/datbase/DataCacheDao.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base.datbase 2 | 3 | import androidx.room.* 4 | 5 | @Dao 6 | interface DataCacheDao { 7 | 8 | @Query("SELECT * FROM dataCache") 9 | fun getAll() : List 10 | 11 | @Query("SELECT * FROM dataCache WHERE cacheKey = :key") 12 | fun findByID(key : String) : DataCacheEntity? 13 | 14 | @Insert 15 | fun insertEntity(entity: DataCacheEntity) 16 | 17 | @Insert 18 | fun insertAll(vararg entities : DataCacheEntity) 19 | 20 | @Delete 21 | fun deleteEntity(entity: DataCacheEntity) 22 | 23 | @Update 24 | fun updateEntity(vararg entity: DataCacheEntity) 25 | 26 | 27 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/MineItemAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | 4 | import com.hjl.core.R 5 | import com.hjl.core.databinding.CoreItemMineBinding 6 | import com.hjl.core.net.bean.MineItemBean 7 | 8 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 9 | 10 | /** 11 | * Author : long 12 | * Description : 13 | * Date : 2020/8/29 14 | */ 15 | class MineItemAdapter : BaseRecyclerViewAdapter() { 16 | override fun bindData(binding: CoreItemMineBinding?, data: MineItemBean?) { 17 | binding?.data = data 18 | } 19 | 20 | override fun getLayoutId(): Int { 21 | return R.layout.core_item_mine 22 | } 23 | } -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/ViewModelFactory.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | 4 | import androidx.lifecycle.ViewModel 5 | import androidx.lifecycle.ViewModelProvider 6 | 7 | /** 8 | * Description 初始化ViewModel 9 | * Date 2020/3/3 13:04 10 | * created by long 11 | */ 12 | 13 | /** 14 | * 在Activity中初始化viewModel 15 | */ 16 | fun initViewModel( 17 | vmClass: Class, 18 | rClass: Class 19 | ) = object : ViewModelProvider.NewInstanceFactory(){ 20 | override fun create(modelClass: Class): T { 21 | return vmClass.getConstructor(rClass).newInstance(rClass.newInstance()) as T 22 | }}.create(vmClass) 23 | -------------------------------------------------------------------------------- /module_core/src/moduledebug/java/com/hjl/module_core/PagingViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_core 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.viewModelScope 5 | import androidx.paging.PagingData 6 | import androidx.paging.cachedIn 7 | import com.hjl.core.net.bean.HomeArticleBean 8 | import kotlinx.coroutines.flow.Flow 9 | 10 | /** 11 | * author: long 12 | * description please add a description here 13 | * Date: 2021/4/21 14 | */ 15 | class PagingViewModel : ViewModel() { 16 | 17 | val repository = PagingRepository() 18 | 19 | fun getPagingData() : Flow>{ 20 | return repository.getPagingData().cachedIn(viewModelScope) 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /commonlib/src/main/res/drawable/common_bag_blue_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/MavenRepository.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository 2 | 3 | import com.hjl.core.net.await 4 | import com.hjl.core.net.coreApiServer 5 | import com.hjl.core.utils.CACHE_MAVEN_GOOGLE_PACKAGE_LIST 6 | import com.hjl.jetpacklib.mvvm.BaseRepository 7 | import javax.inject.Inject 8 | 9 | /** 10 | * author: long 11 | * description please add a description here 12 | * Date: 2021/5/14 13 | */ 14 | class MavenRepository @Inject constructor() : BaseRepository() { 15 | 16 | suspend fun getGoogleMavenPackage() = coreApiServer.getGoogleMavenPackage().await(CACHE_MAVEN_GOOGLE_PACKAGE_LIST) 17 | 18 | suspend fun searchGoogleMaven(key : String) = coreApiServer.searchGoogleMaven(key).await() 19 | 20 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_home_system.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/HomeWebCommonlyAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | import com.hjl.core.R 4 | import com.hjl.core.databinding.CoreItemCommonlyWebBinding 5 | import com.hjl.core.net.bean.CommonlyWebBean 6 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 7 | 8 | /** 9 | * Author : long 10 | * Description : 常用网站item 11 | * Date : 2021/5/2 12 | */ 13 | class HomeWebCommonlyAdapter : BaseRecyclerViewAdapter() { 14 | override fun bindData(binding: CoreItemCommonlyWebBinding?, data: CommonlyWebBean?) { 15 | binding?.data = data 16 | } 17 | 18 | override fun getLayoutId(): Int { 19 | return R.layout.core_item_commonly_web 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/hjl/lwanandroid/WanBaseActivity.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.lwanandroid 2 | 3 | import android.content.Context 4 | import com.hjl.language.MultiLanguage 5 | import com.hjl.lwanandroid.skin.SkinBaseActivity 6 | 7 | abstract class WanBaseActivity : SkinBaseActivity() { 8 | 9 | override fun attachBaseContext(newBase: Context?) { 10 | super.attachBaseContext(MultiLanguage.attachBaseContext(newBase!!)) 11 | } 12 | 13 | override fun onRequestPermissionsResult( 14 | requestCode: Int, 15 | permissions: Array, 16 | grantResults: IntArray 17 | ) { 18 | super.onRequestPermissionsResult(requestCode, permissions, grantResults) 19 | MultiLanguage.onRequestPermissionsResult(this) 20 | } 21 | } -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/recycleview/SimpleTextAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.recycleview 2 | 3 | import android.widget.TextView 4 | import androidx.databinding.ViewDataBinding 5 | import com.hjl.jetpacklib.R 6 | 7 | 8 | /** 9 | * author: long 10 | * description 通用的简单文本适配器 11 | * Date: 2021/10/21 12 | */ 13 | class SimpleTextAdapter(val customLayout : Int = R.layout.base_item_simple_text) : BaseRecyclerViewAdapter() { 14 | override fun bindData(binding: DB, data: String?) { 15 | val root = binding?.root?.findViewById(R.id.base_simple_text_tv) 16 | root?.text = data 17 | } 18 | 19 | override fun getLayoutId(): Int { 20 | return customLayout 21 | } 22 | } -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_tab.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_style_progress_hor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/DataBindingHelper.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | import android.app.Activity 4 | 5 | import android.view.View 6 | import androidx.annotation.LayoutRes 7 | import androidx.databinding.DataBindingUtil 8 | import androidx.databinding.ViewDataBinding 9 | 10 | 11 | /** 12 | * Author: shehuan 13 | * Date: 2019/12/17 13:18 14 | * Description: 15 | */ 16 | 17 | /** 18 | * 在Activity初始化DataBinding 19 | */ 20 | fun initDataBinding(activity: Activity, @LayoutRes layoutId: Int): VDB = 21 | DataBindingUtil.setContentView(activity, layoutId) 22 | 23 | 24 | /** 25 | * 在Fragment、Adapter初始化DataBinding 26 | */ 27 | fun initDataBinding(view: View): VDB = DataBindingUtil.bind(view)!! -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/HomeSearchHotKeyAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | 4 | import com.hjl.core.R 5 | import com.hjl.core.databinding.CoreItemHotSearchBinding 6 | import com.hjl.core.net.bean.HomeSearchHotKeyBean 7 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 8 | 9 | /** 10 | * author: long 11 | * description please add a description here 12 | * Date: 2020/9/30 13 | */ 14 | class HomeSearchHotKeyAdapter : BaseRecyclerViewAdapter() { 15 | override fun bindData(binding: CoreItemHotSearchBinding?, data: HomeSearchHotKeyBean?) { 16 | binding?.data = data 17 | } 18 | 19 | override fun getLayoutId(): Int { 20 | return R.layout.core_item_hot_search 21 | } 22 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/hjl/lwanandroid/skin/SkinResourceAcquirer.java: -------------------------------------------------------------------------------- 1 | package com.hjl.lwanandroid.skin; 2 | 3 | import android.content.Context; 4 | import android.graphics.drawable.Drawable; 5 | 6 | import com.hjl.commonlib.base.IResourceAcquirer; 7 | 8 | import skin.support.content.res.SkinCompatResources; 9 | 10 | /** 11 | * author: long 12 | * description please add a description here 13 | * Date: 2021/12/17 14 | */ 15 | public class SkinResourceAcquirer implements IResourceAcquirer { 16 | @Override 17 | public int getColor(Context context, int resId) { 18 | return SkinCompatResources.getColor(context, resId); 19 | } 20 | 21 | @Override 22 | public Drawable getDrawable(Context context, int resId) { 23 | return SkinCompatResources.getDrawable(context, resId); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/HomeSearchHistoryAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | import com.hjl.core.R 4 | import com.hjl.core.databinding.CoreItemSearchHistoryBinding 5 | import com.hjl.core.net.bean.SimpleStringBean 6 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 7 | 8 | /** 9 | * Author : long 10 | * Description : 11 | * Date : 2021/5/2 12 | */ 13 | class HomeSearchHistoryAdapter : 14 | BaseRecyclerViewAdapter() { 15 | override fun bindData(binding: CoreItemSearchHistoryBinding?, data: String?) { 16 | binding?.itemHistoryTv?.text = data 17 | addChildClick(R.id.item_history_delete_iv) 18 | } 19 | 20 | override fun getLayoutId(): Int { 21 | return R.layout.core_item_search_history 22 | } 23 | } -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle.kts. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /commonlib/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /commonlib/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /jetpacklib/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /module_base/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /module_core/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /skin/skin-dark/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /skin/skin-green/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /skin/skin-yellow/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /module_func/func_skin/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /module_core/src/moduledebug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /module_func/func_language/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_activity_collect_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 18 | 19 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/exception/Code.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.exception 2 | 3 | class Code { 4 | companion object { 5 | const val UNAUTHORIZED = 401 6 | const val FORBIDDEN = 403 7 | const val NOT_FOUND = 404 8 | const val REQUEST_TIMEOUT = 408 9 | const val INTERNAL_SERVER_ERROR = 500 10 | const val BAD_GATEWAY = 502 11 | const val SERVICE_UNAVAILABLE = 503 12 | const val GATEWAY_TIMEOUT = 504 13 | 14 | 15 | /* 自约定的响应码 */ 16 | // 未知错误 17 | const val UNKNOWN_ERROR = 1000 18 | // 解析错误 19 | const val PARSE_ERROR = 1001 20 | // 网络错误 21 | const val NET_ERROR = 1002 22 | // 协议出错 23 | const val HTTP_ERROR = 1003 24 | // 证书出错 25 | const val SSL_ERROR = 1005 26 | // 连接超时 27 | const val TIMEOUT_ERROR = 1006 28 | } 29 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/MavenVersionAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | import com.hjl.core.R 4 | import com.hjl.core.databinding.CoreItemMavenVersionBinding 5 | import com.hjl.core.net.bean.MavenItemBean 6 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 7 | 8 | /** 9 | * author: long 10 | * description please add a description here 11 | * Date: 2021/5/28 12 | */ 13 | class MavenVersionAdapter : BaseRecyclerViewAdapter() { 14 | 15 | override fun getLayoutId(): Int { 16 | return R.layout.core_item_maven_version 17 | } 18 | 19 | 20 | override fun bindData( 21 | binding: CoreItemMavenVersionBinding?, 22 | data: MavenItemBean.MavenVersionBean? 23 | ) { 24 | binding?.coreItemMavenArtifactTv?.text = data?.group 25 | binding?.coreItemMavenVersionTv?.text = data?.version 26 | } 27 | } -------------------------------------------------------------------------------- /jetpacklib/src/main/res/layout/base_item_simple_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /module_func/func_skin/src/main/res/layout/skin_activity_skin.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 19 | 20 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /module_core/src/main/res/drawable/core_bg_search_gray_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_activity_maven_search_result.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 19 | 20 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/BaseDialog.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | import android.content.Context 4 | import android.view.LayoutInflater 5 | import androidx.databinding.DataBindingUtil 6 | import androidx.databinding.ViewDataBinding 7 | import com.hjl.commonlib.base.BaseDialog 8 | 9 | /** 10 | * author: long 11 | * description please add a description here 12 | * Date: 2021/5/28 13 | */ 14 | abstract class BaseDialog(context: Context) : BaseDialog(context) { 15 | 16 | private var viewBinding : VDB? = null 17 | protected lateinit var binding : VDB 18 | 19 | override fun setContentView(layoutResID: Int) { 20 | viewBinding = DataBindingUtil.inflate(LayoutInflater.from(context), layoutResID, null, false) 21 | binding = checkNotNull(viewBinding) 22 | setContentView(viewBinding!!.root) 23 | } 24 | 25 | override fun onDetachedFromWindow() { 26 | super.onDetachedFromWindow() 27 | 28 | } 29 | 30 | 31 | } -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/datbase/WanDatabase.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base.datbase 2 | 3 | import android.content.Context 4 | import androidx.room.Database 5 | import androidx.room.Room 6 | import androidx.room.RoomDatabase 7 | 8 | @Database(entities = [DataCacheEntity::class],version = 1, exportSchema = false) 9 | abstract class WanDatabase : RoomDatabase(){ 10 | 11 | abstract fun datacacheDao() : DataCacheDao 12 | 13 | 14 | companion object{ 15 | 16 | private var instance : WanDatabase? = null 17 | 18 | fun getInstance(context: Context): WanDatabase { 19 | 20 | synchronized(WanDatabase::class.java){ 21 | if (instance == null){ 22 | instance = Room.databaseBuilder( 23 | context, 24 | WanDatabase::class.java, 25 | "dataCache").build() 26 | } 27 | } 28 | 29 | return instance!! 30 | } 31 | 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/HomeSearchRepository.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository 2 | 3 | import androidx.paging.Pager 4 | import androidx.paging.PagingConfig 5 | import com.hjl.jetpacklib.mvvm.BaseRepository 6 | import com.hjl.core.net.await 7 | import com.hjl.core.net.coreApiServer 8 | import com.hjl.core.repository.paging.HomeSearchResultPagingSource 9 | import com.hjl.core.utils.CACHE_HOME_HOT_KEY 10 | import com.hjl.core.utils.CACHE_HOME_WEB_COMMONLY 11 | 12 | /** 13 | * author: long 14 | * description please add a description here 15 | * Date: 2020/9/29 16 | */ 17 | class HomeSearchRepository : BaseRepository() { 18 | 19 | 20 | suspend fun getHotKey() = coreApiServer.getHotKey().await(CACHE_HOME_HOT_KEY) 21 | 22 | suspend fun getWebCommonly() = coreApiServer.getCommonlyWeb().await(CACHE_HOME_WEB_COMMONLY) 23 | 24 | fun getSearchPager() = Pager( 25 | config = PagingConfig(pageSize = 10), 26 | pagingSourceFactory = { HomeSearchResultPagingSource() } 27 | ).flow 28 | 29 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/interceptor/RetryInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.interceptor; 2 | 3 | import android.util.Log; 4 | 5 | import java.io.IOException; 6 | 7 | import okhttp3.Interceptor; 8 | import okhttp3.Request; 9 | import okhttp3.Response; 10 | 11 | /** 12 | * created by long on 2019/11/6 13 | */ 14 | public class RetryInterceptor implements Interceptor { 15 | 16 | private String TAG = "RetryInterceptor"; 17 | 18 | @Override 19 | public Response intercept(Chain chain) throws IOException { 20 | 21 | Request originalRequest = chain.request(); 22 | Response response = chain.proceed(originalRequest); 23 | 24 | int retryCount = 0; 25 | 26 | while (!response.isSuccessful() && retryCount < 3){ 27 | Log.d(TAG, "retryCount: " + retryCount ); 28 | response.close(); 29 | response = chain.proceed(originalRequest); 30 | retryCount++; 31 | 32 | } 33 | 34 | return response; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /skin/skin-dark/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.application") 3 | id("kotlin-android") 4 | } 5 | 6 | android { 7 | compileSdk = Android.compileSdkVersion 8 | buildToolsVersion = Android.buildToolsVersion 9 | 10 | defaultConfig { 11 | applicationId = "com.hjl.lwanandroid.night" 12 | minSdk = Android.minSdkVersion 13 | targetSdk = Android.targetSdkVersion 14 | versionCode = 1 15 | versionName = "1.0" 16 | } 17 | 18 | buildTypes { 19 | val release = getByName("release") 20 | release.apply{ 21 | isMinifyEnabled = false 22 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 23 | } 24 | } 25 | 26 | kotlinOptions { 27 | jvmTarget = "1.8" 28 | } 29 | 30 | compileOptions { 31 | sourceCompatibility = JavaVersion.VERSION_1_8 32 | targetCompatibility = JavaVersion.VERSION_1_8 33 | } 34 | namespace = "com.hjl.skin.dark" 35 | } 36 | 37 | dependencies { 38 | 39 | 40 | } -------------------------------------------------------------------------------- /skin/skin-green/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.application") 3 | id("kotlin-android") 4 | } 5 | 6 | android { 7 | compileSdk = Android.compileSdkVersion 8 | buildToolsVersion = Android.buildToolsVersion 9 | 10 | defaultConfig { 11 | applicationId = "com.hjl.lwanandroid.green" 12 | minSdk = Android.minSdkVersion 13 | targetSdk = Android.targetSdkVersion 14 | versionCode = 1 15 | versionName = "1.0" 16 | } 17 | 18 | buildTypes { 19 | val release = getByName("release") 20 | release.apply{ 21 | isMinifyEnabled = false 22 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 23 | } 24 | } 25 | 26 | kotlinOptions { 27 | jvmTarget = "1.8" 28 | } 29 | 30 | compileOptions { 31 | sourceCompatibility = JavaVersion.VERSION_1_8 32 | targetCompatibility = JavaVersion.VERSION_1_8 33 | } 34 | namespace = "com.hjl.skin.night" 35 | } 36 | 37 | dependencies { 38 | 39 | 40 | } -------------------------------------------------------------------------------- /skin/skin-yellow/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.application") 3 | id("kotlin-android") 4 | } 5 | 6 | android { 7 | compileSdk = Android.compileSdkVersion 8 | buildToolsVersion = Android.buildToolsVersion 9 | 10 | defaultConfig { 11 | applicationId = "com.hjl.lwanandroid.yellow" 12 | minSdk = Android.minSdkVersion 13 | targetSdk = Android.targetSdkVersion 14 | versionCode = 1 15 | versionName = "1.0" 16 | } 17 | 18 | buildTypes { 19 | val release = getByName("release") 20 | release.apply{ 21 | isMinifyEnabled = false 22 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 23 | } 24 | } 25 | 26 | kotlinOptions { 27 | jvmTarget = "1.8" 28 | } 29 | 30 | compileOptions { 31 | sourceCompatibility = JavaVersion.VERSION_1_8 32 | targetCompatibility = JavaVersion.VERSION_1_8 33 | } 34 | namespace = "com.hjl.skin.yellow" 35 | } 36 | 37 | dependencies { 38 | 39 | 40 | } -------------------------------------------------------------------------------- /module_func/func_skin/src/main/java/com/hjl/skin/SkinAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.skin 2 | 3 | import android.graphics.drawable.ColorDrawable 4 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 5 | import com.hjl.skin.databinding.SkinItemSkinSelectBinding 6 | 7 | /** 8 | * Author : long 9 | * Description : 10 | * Date : 2021/12/21 11 | */ 12 | class SkinAdapter : BaseRecyclerViewAdapter() { 13 | override fun bindData(binding: SkinItemSkinSelectBinding?, data: SkinItemBean?) { 14 | data?.let { 15 | if (it.backgroundRes != -1){ 16 | binding?.itemSkinIv!!.setBackgroundResource(it.backgroundRes) 17 | }else{ 18 | val colorDrawable = ColorDrawable(data.backgroundColor) 19 | binding?.itemSkinIv!!.setImageDrawable(colorDrawable) 20 | } 21 | 22 | binding.itemSkinTv.text = data.desc 23 | 24 | } 25 | } 26 | 27 | override fun getLayoutId(): Int { 28 | return R.layout.skin_item_skin_select 29 | } 30 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/TaskDispatcher.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils 2 | 3 | import java.util.concurrent.ExecutorService 4 | import java.util.concurrent.Executors 5 | 6 | class TaskDispatcher { 7 | 8 | private val executors: ExecutorService = Executors.newCachedThreadPool() 9 | private val mTaskList = arrayListOf() 10 | 11 | 12 | fun addTask(task : Task) : TaskDispatcher { 13 | mTaskList.add(task) 14 | return this 15 | } 16 | 17 | fun executeTask(){ 18 | 19 | for (task in mTaskList){ 20 | executors.execute(task) 21 | } 22 | 23 | } 24 | 25 | 26 | abstract class Task() : Runnable { 27 | 28 | private var onFinishTaskListener : OnFinishTaskListener? = null 29 | 30 | abstract fun execute() : Any? 31 | 32 | override fun run() { 33 | var result = execute() 34 | onFinishTaskListener?.onFinishTask(result) 35 | } 36 | } 37 | 38 | interface OnFinishTaskListener{ 39 | fun onFinishTask(data : Any?) 40 | } 41 | 42 | 43 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_minus.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_wenda.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_item_system_article_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_main_tab.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 20 | 21 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_item_hot_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/interceptor/RedirectInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.interceptor; 2 | 3 | import com.hjl.commonlib.utils.LogUtils; 4 | 5 | import java.io.IOException; 6 | 7 | import okhttp3.Interceptor; 8 | import okhttp3.Request; 9 | import okhttp3.Response; 10 | 11 | /** 12 | * Description 重定向拦截器 13 | * Date 2020/3/13 16:51 14 | * created by long 15 | */ 16 | public class RedirectInterceptor implements Interceptor { 17 | 18 | @Override 19 | public Response intercept(Chain chain) throws IOException { 20 | 21 | Request request = chain.request(); 22 | Response response = chain.proceed(request); 23 | int code = response.code(); 24 | if (code == 302) { 25 | //获取重定向的地址 26 | String location = response.headers().get("Location"); 27 | LogUtils.e("重定向地址:", "location = " + location); 28 | //重新构建请求 29 | Request newRequest = request.newBuilder().url(location).build(); 30 | response = chain.proceed(newRequest); 31 | } 32 | 33 | return response; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /commonlib/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 24sp 6 | 18sp 7 | 16sp 8 | 16sp 9 | 14sp 10 | 12sp 11 | 10sp 12 | 13 | 14 | 16dp 15 | 8dp 16 | 12dp 17 | 24dp 18 | 32dp 19 | 20 | 21 | 16dp 22 | 12dp 23 | 8dp 24 | 24dp 25 | 32dp 26 | 27 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/paging/CollectArticlePagingSource.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository.paging 2 | 3 | import androidx.paging.PagingState 4 | import com.hjl.jetpacklib.mvvm.view.BasePagingSource 5 | import com.hjl.core.net.await 6 | import com.hjl.core.net.bean.CollectItemBean 7 | import com.hjl.core.net.coreApiServer 8 | import com.hjl.core.utils.CACHE_COLLECT_LIST 9 | 10 | /** 11 | * Author : long 12 | * Description : 13 | * Date : 2020/9/5 14 | */ 15 | class CollectArticlePagingSource() : BasePagingSource() { 16 | override suspend fun load(params: LoadParams): LoadResult { 17 | return try { 18 | val bean = coreApiServer.getCollectList(params.key!!).await(CACHE_COLLECT_LIST) 19 | LoadResult.Page(bean.datas,null,if (bean.isOver) null else (bean.curPage + 1)) 20 | }catch (e : Exception){ 21 | LoadResult.Error(e) 22 | } 23 | 24 | } 25 | 26 | override fun getRefreshKey(state: PagingState): Int? { 27 | return 0 28 | } 29 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/paging/SquareArticlePagingSource.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository.paging 2 | 3 | import androidx.paging.PagingState 4 | import com.hjl.core.net.await 5 | import com.hjl.core.net.bean.HomeArticleBean 6 | import com.hjl.core.net.coreApiServer 7 | import com.hjl.jetpacklib.mvvm.view.BasePagingSource 8 | 9 | /** 10 | * author: long 11 | * description 获取广场文章列表 12 | * Date: 2021/4/29 13 | */ 14 | class SquareArticlePagingSource : BasePagingSource() { 15 | 16 | override fun getRefreshKey(state: PagingState): Int? = null 17 | 18 | override suspend fun load(params: LoadParams): LoadResult { 19 | return try { 20 | val key = params.key ?: 0 21 | val preKey = if (key > 1) key - 1 else null 22 | 23 | val data = coreApiServer.getSquareArticle(key).await() 24 | LoadResult.Page(data.datas,preKey,if (data.isOver) null else (key + 1)) 25 | }catch (e : Exception){ 26 | LoadResult.Error(e) 27 | } 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_item_commonly_web.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 27 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/paging/HomeWendaPagingSource.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository.paging 2 | 3 | import androidx.paging.PagingState 4 | import com.hjl.core.net.await 5 | import com.hjl.core.net.bean.HomeArticleBean 6 | import com.hjl.core.net.coreApiServer 7 | import com.hjl.jetpacklib.mvvm.view.BasePagingSource 8 | 9 | /** 10 | * Author : long 11 | * Description : 12 | * Date : 2021/5/29 13 | */ 14 | class HomeWendaPagingSource : BasePagingSource() { 15 | 16 | override fun getRefreshKey(state: PagingState): Int? = null 17 | 18 | override suspend fun load(params: LoadParams): LoadResult { 19 | return try { 20 | val key = params.key ?: 0 21 | val preKey = if (key > 1) key - 1 else null 22 | val data = coreApiServer.getWenda(key).await() 23 | LoadResult.Page(data.datas,preKey,if (data.isOver) null else (key + 1)) 24 | }catch (e : Exception){ 25 | e.printStackTrace() 26 | LoadResult.Error(e) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | include(":app") 2 | include(":commonlib") 3 | include(":module_base") 4 | include(":module_core") 5 | include(":jetpacklib") 6 | include(":module_func:func_skin") 7 | include(":module_func:func_language") 8 | 9 | include(":skin:skin-dark") 10 | include(":skin:skin-green") 11 | include(":skin:skin-yellow") 12 | 13 | rootProject.name = "LWanAndroid" 14 | 15 | gradle.addBuildListener(object : BuildListener{ 16 | // override fun buildStarted(gradle: Gradle) { 17 | // println("---- Build Start ----") 18 | // } 19 | 20 | override fun settingsEvaluated(settings: Settings) { 21 | println("---- Evaluate Setting Finish ----") 22 | } 23 | 24 | override fun projectsLoaded(gradle: Gradle) { 25 | println("---- Load Project Finish ----") 26 | println("Init Finish,Root Project :${gradle.gradle.rootProject}") 27 | } 28 | 29 | override fun projectsEvaluated(gradle: Gradle) { 30 | println("---- Evaluated Project Finish ----") 31 | } 32 | 33 | override fun buildFinished(result: BuildResult) { 34 | println("---- Build Finish ----") 35 | } 36 | 37 | }) 38 | 39 | -------------------------------------------------------------------------------- /module_core/src/moduledebug/res/layout/activity_paging_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/utils/SpUtils.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.utils 2 | 3 | import android.content.Context 4 | import android.content.SharedPreferences 5 | import android.util.Base64 6 | import com.hjl.commonlib.base.BaseApplication 7 | import com.tencent.bugly.crashreport.biz.UserInfoBean 8 | import com.hjl.core.net.bean.* 9 | 10 | 11 | /** 12 | * author: long 13 | * description please add a description here 14 | * Date: 2020/8/17 15 | */ 16 | object SpUtils { 17 | 18 | val SP_TAG_USER = "sp_tag_user" 19 | 20 | val SP_USER_INFO = "sp_user_info" 21 | 22 | 23 | fun saveUserInfo(userInfo: String){ 24 | val editor = getUserInfoSP().edit() 25 | editor.putString(SP_USER_INFO, Base64.encodeToString(userInfo.toByteArray(),Base64.NO_PADDING)) 26 | editor.apply() 27 | } 28 | 29 | fun getUserInfo():String{ 30 | return String(Base64.decode(getUserInfoSP().getString(SP_USER_INFO,""),Base64.NO_PADDING)) 31 | } 32 | 33 | private fun getUserInfoSP():SharedPreferences{ 34 | return BaseApplication.getApplication().getSharedPreferences(SP_TAG_USER,Context.MODE_PRIVATE) 35 | } 36 | 37 | 38 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/interceptor/CacheInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.interceptor; 2 | 3 | import com.hjl.commonlib.base.BaseApplication; 4 | import com.hjl.commonlib.utils.NetWorkUtils; 5 | 6 | import java.io.IOException; 7 | import java.util.concurrent.TimeUnit; 8 | 9 | import okhttp3.CacheControl; 10 | import okhttp3.Interceptor; 11 | import okhttp3.Request; 12 | import okhttp3.Response; 13 | 14 | /** 15 | * Description 缓存拦截器 16 | * Author long 17 | * Date 2020/6/14 16:17 18 | */ 19 | public class CacheInterceptor implements Interceptor { 20 | @Override 21 | public Response intercept(Chain chain) throws IOException { 22 | 23 | Request request = chain.request(); 24 | 25 | if (!NetWorkUtils.isNetworkConnected(BaseApplication.getApplication())){ 26 | 27 | CacheControl.Builder builder = new CacheControl.Builder(); 28 | builder.maxAge(0, TimeUnit.SECONDS); 29 | builder.maxStale(24,TimeUnit.HOURS); 30 | 31 | request.newBuilder().cacheControl(builder.build()); 32 | 33 | } 34 | 35 | 36 | return chain.proceed(request); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/paging/HomeSearchResultPagingSource.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository.paging 2 | 3 | import androidx.paging.PagingState 4 | import com.hjl.core.net.await 5 | import com.hjl.core.net.bean.HomeArticleBean 6 | import com.hjl.core.net.coreApiServer 7 | import com.hjl.core.ui.main.HomeSearchActivity 8 | import com.hjl.jetpacklib.mvvm.view.BasePagingSource 9 | 10 | /** 11 | * author: long 12 | * description please add a description here 13 | * Date: 2020/9/30 14 | */ 15 | class HomeSearchResultPagingSource : BasePagingSource() { 16 | 17 | override suspend fun load(params: LoadParams): LoadResult { 18 | return try { 19 | val index:Int = params.key ?: 0 20 | val data = coreApiServer.search(index, HomeSearchActivity.searchKey).await() 21 | LoadResult.Page(data.datas, null, if (data.isOver) null else (index + 1)) 22 | }catch (e : Exception){ 23 | LoadResult.Error(e) 24 | } 25 | } 26 | 27 | override fun getRefreshKey(state: PagingState): Int? = null 28 | 29 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/repository/paging/HomeSystemPagingSource.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.repository.paging 2 | 3 | import androidx.paging.PagingState 4 | import com.hjl.core.net.await 5 | import com.hjl.core.net.bean.HomeArticleBean 6 | import com.hjl.core.net.coreApiServer 7 | import com.hjl.jetpacklib.mvvm.view.BasePagingSource 8 | 9 | /** 10 | * Author : long 11 | * Description : 体系点击下具体的文章 12 | * Date : 2021/5/6 13 | */ 14 | class HomeSystemPagingSource(private val courseId : Int) : BasePagingSource(){ 15 | override fun getRefreshKey(state: PagingState): Int? = null 16 | 17 | override suspend fun load(params: LoadParams): LoadResult { 18 | return try { 19 | val key = params.key ?: 0 20 | val preKey = if (key > 1) key - 1 else null 21 | val data = coreApiServer.getSystemArticle(key, courseId).await() 22 | LoadResult.Page(data.datas,preKey,if (data.isOver) null else (key + 1)) 23 | }catch (e : Exception){ 24 | e.printStackTrace() 25 | LoadResult.Error(e) 26 | } 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/view/BaseMVVMFragment2.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm.view 2 | 3 | import android.os.Bundle 4 | import androidx.databinding.ViewDataBinding 5 | import androidx.lifecycle.ViewModelProvider 6 | import com.hjl.jetpacklib.mvvm.BaseRepository 7 | import com.hjl.jetpacklib.mvvm.BaseViewModel 8 | import com.hjl.jetpacklib.mvvm.initViewModel 9 | import java.lang.reflect.ParameterizedType 10 | 11 | /** 12 | * @author: long 13 | * @description extends from BaseFragment2 14 | * @Date: 2020/6/3 15 | */ 16 | abstract class BaseMVVMFragment2 : 17 | BaseFragment2() { 18 | 19 | protected lateinit var viewModel: BVM 20 | 21 | @Suppress("UNCHECKED_CAST") 22 | override fun onCreate(savedInstanceState: Bundle?) { 23 | initViewModel() 24 | super.onCreate(savedInstanceState) 25 | } 26 | 27 | open fun initViewModel(){ 28 | val arguments = (this.javaClass.genericSuperclass as ParameterizedType).actualTypeArguments 29 | val bvmClass: Class = arguments[1] as Class 30 | viewModel = ViewModelProvider(this).get(bvmClass) 31 | } 32 | 33 | 34 | 35 | } -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/SystemArticleAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | import com.hjl.core.R 4 | import com.hjl.core.databinding.CoreItemSystemArticleDetailBinding 5 | import com.hjl.core.net.bean.SystemListBean 6 | import com.hjl.core.ui.system.SystemArticleDetailActivity 7 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 8 | 9 | /** 10 | * Author : long 11 | * Description : 12 | * Date : 2021/5/6 13 | */ 14 | class SystemArticleAdapter(private val parentArticleBean : SystemListBean) : BaseRecyclerViewAdapter() { 15 | 16 | override fun bindData(binding: CoreItemSystemArticleDetailBinding?, data: SystemListBean?, index : Int) { 17 | binding?.data = data?.name 18 | binding?.root?.setOnClickListener { 19 | SystemArticleDetailActivity.startSystemArticleDetailActivity(mContext,parentArticleBean,index) 20 | } 21 | } 22 | 23 | override fun getLayoutId(): Int { 24 | return R.layout.core_item_system_article_detail 25 | } 26 | 27 | override fun bindData(binding: CoreItemSystemArticleDetailBinding?, data: SystemListBean?) { 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/PinYinUtil.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Locale; 5 | 6 | public class PinYinUtil { 7 | // 汉字返回拼音,字母原样返回,都转换为小写 8 | public static String getPinYin(String input) { 9 | ArrayList tokens = HanziToPinyin3.getInstance().get(input); 10 | StringBuilder sb = new StringBuilder(); 11 | if (tokens != null && tokens.size() > 0) { 12 | for (HanziToPinyin3.Token token : tokens) { 13 | if (HanziToPinyin3.Token.PINYIN == token.type) { 14 | sb.append(token.target); 15 | } else { 16 | sb.append(token.source); 17 | } 18 | } 19 | } 20 | return sb.toString().toLowerCase(Locale.US); 21 | } 22 | 23 | public static String getPinYin(Character character) { 24 | return getPinYin(String.valueOf(character)); 25 | } 26 | 27 | /** 28 | * 获取一串字符串的拼音首字母 29 | * @param name 30 | * @return 31 | */ 32 | public static String getFirstLetter(String name) { 33 | StringBuffer sb = new StringBuffer(); 34 | for (int i = 0;i () { 17 | 18 | override suspend fun load(params: LoadParams): LoadResult { 19 | return try { 20 | val key = params.key ?: 0 21 | val preKey = if (key > 1) key - 1 else null 22 | val nextKey = key + 1 23 | LogUtils.i("loading page $key") 24 | val data = coreApiServer.getHomeArticleList(key).await() 25 | LoadResult.Page(data.datas,preKey,nextKey) 26 | }catch (e : Exception){ 27 | LoadResult.Error(e) 28 | } 29 | } 30 | 31 | override fun getRefreshKey(state: PagingState): Int? = null 32 | } -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_item_maven_group.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/extend/ActvityExt.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.extend 2 | 3 | import android.app.Activity 4 | import android.content.Intent 5 | 6 | import android.view.View 7 | import android.view.WindowManager 8 | import android.view.inputmethod.InputMethodManager 9 | import androidx.fragment.app.Fragment 10 | 11 | /** 12 | * author: long 13 | * description please add a description here 14 | * Date: 2021/4/21 15 | */ 16 | 17 | 18 | 19 | fun Activity.hideKeyboard() { 20 | inputMethodManager?.hideSoftInputFromWindow((currentFocus ?: View(this)).windowToken, 0) 21 | window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) 22 | currentFocus?.clearFocus() 23 | } 24 | 25 | fun Activity.showKeyboard(view: View) { 26 | view.requestFocus() 27 | inputMethodManager?.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT) 28 | } 29 | 30 | fun Activity.hideKeyboard(view: View) { 31 | inputMethodManager?.hideSoftInputFromWindow(view.windowToken, 0) 32 | } 33 | 34 | fun Activity.quickStartActivity( cls: Class<*>?){ 35 | startActivity(Intent(this,cls)) 36 | } 37 | 38 | fun Fragment.quickStartActivity(cls: Class<*>?){ 39 | startActivity(Intent(context,cls)) 40 | } 41 | 42 | -------------------------------------------------------------------------------- /jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/DataBindingAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.jetpacklib.mvvm 2 | 3 | import android.view.View 4 | import android.widget.ImageView 5 | import androidx.annotation.DrawableRes 6 | import androidx.databinding.BindingAdapter 7 | import androidx.lifecycle.MutableLiveData 8 | 9 | 10 | /** 11 | * @author: long 12 | * @description please add a description here 13 | * @Date: 2020/6/4 14 | */ 15 | 16 | 17 | //@BindingAdapter("app:banner_data") 18 | //fun loadBanner(view : Banner,dataList : List?){ 19 | // if (dataList.isNullOrEmpty()) return 20 | // view.setDatas(dataList) 21 | //} 22 | // 23 | 24 | @BindingAdapter("focusImageDrawable") 25 | fun bindFocusLiveData(view : View,liveData: MutableLiveData){ 26 | view.setOnFocusChangeListener { v, hasFocus -> 27 | liveData.postValue(hasFocus) 28 | } 29 | } 30 | 31 | //@SuppressLint("ResourceType") 32 | //@BindingAdapter("loadDrawable") 33 | //fun ImageView.setImageTint(drawableId: Int) { 34 | // setImageResource(drawableId) 35 | //} 36 | @BindingAdapter("loadDrawable") 37 | fun setImageTint(view: ImageView, @DrawableRes drawableId: Int) { 38 | view.setImageResource(drawableId) 39 | } -------------------------------------------------------------------------------- /module_base/src/main/java/com/hjl/module_base/AndroidUtils.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.module_base 2 | 3 | /** 4 | * author: long 5 | * description please add a description here 6 | * Date: 2020/9/24 7 | */ 8 | 9 | object AndroidUtils { 10 | 11 | 12 | // fun getLocation(context: Context,result : (result : TencentLocation)-> Unit){ 13 | // val locationManager = TencentLocationManager.getInstance(context) 14 | // locationManager.requestSingleFreshLocation(null,object : TencentLocationListener { 15 | // override fun onStatusUpdate(p0: String?, p1: Int, p2: String?) { 16 | // 17 | // } 18 | // 19 | // override fun onLocationChanged(p0: TencentLocation?, error: Int, p2: String?) { 20 | // if (TencentLocation.ERROR_OK == error) { //location success 21 | // p0?.let { 22 | // result.invoke(it) 23 | // } 24 | // } else { 25 | // // 定位失败 26 | // ToastUtil.show("定位失败,请检查手机位置信息是否打开") 27 | // LogUtils.e("AndroidUtils", "定位失败 error:$error,reason:$p2") 28 | // } 29 | // } 30 | // 31 | // }, Looper.getMainLooper()) 32 | // } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /jetpacklib/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.library") 3 | id("kotlin-android") 4 | id("kotlin-kapt") 5 | } 6 | 7 | android { 8 | compileSdk = Android.compileSdkVersion 9 | buildToolsVersion = Android.buildToolsVersion 10 | 11 | defaultConfig { 12 | minSdk = Android.minSdkVersion 13 | targetSdk = Android.targetSdkVersion 14 | } 15 | 16 | kotlinOptions { 17 | jvmTarget = "1.8" 18 | } 19 | 20 | compileOptions { 21 | sourceCompatibility = JavaVersion.VERSION_1_8 22 | targetCompatibility = JavaVersion.VERSION_1_8 23 | } 24 | 25 | dataBinding { 26 | enable = true 27 | } 28 | 29 | buildTypes { 30 | val release = getByName("release") 31 | release.apply{ 32 | isMinifyEnabled = false 33 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") 34 | } 35 | } 36 | namespace = "com.hjl.jetpacklib" 37 | 38 | } 39 | 40 | dependencies { 41 | implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) 42 | 43 | api(project(":commonlib")) 44 | api(Jetpack.paging3) 45 | api(Jetpack.hilt) 46 | kapt(Jetpack.hilt_compiler) 47 | } 48 | 49 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/adpter/NaviArticleAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.hjl.core.adpter 2 | 3 | import android.app.Activity 4 | import com.hjl.core.R 5 | import com.hjl.core.databinding.CoreItemSystemArticleDetailBinding 6 | import com.hjl.core.net.bean.HomeArticleBean 7 | import com.hjl.core.net.bean.SystemListBean 8 | import com.hjl.core.ui.SimpleWebActivity 9 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter 10 | 11 | /** 12 | * author: long 13 | * description please add a description here 14 | * Date: 2021/5/12 15 | */ 16 | class NaviArticleAdapter : BaseRecyclerViewAdapter() { 17 | 18 | override fun bindData(binding: CoreItemSystemArticleDetailBinding?, data: HomeArticleBean.Article?, index : Int) { 19 | binding?.data = data?.title 20 | binding?.root?.setOnClickListener { 21 | SimpleWebActivity.loadUrl(mContext as Activity,data!!.link) 22 | } 23 | } 24 | 25 | override fun getLayoutId(): Int { 26 | return R.layout.core_item_system_article_detail 27 | } 28 | 29 | override fun bindData( 30 | binding: CoreItemSystemArticleDetailBinding?, 31 | data: HomeArticleBean.Article? 32 | ) { 33 | 34 | } 35 | } -------------------------------------------------------------------------------- /module_func/func_language/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("com.android.library") 3 | id("kotlin-android") 4 | id("kotlin-kapt") 5 | } 6 | 7 | android { 8 | compileSdk = Android.compileSdkVersion 9 | buildToolsVersion = Android.buildToolsVersion 10 | 11 | defaultConfig { 12 | minSdk = Android.minSdkVersion 13 | targetSdk = Android.targetSdkVersion 14 | } 15 | 16 | kotlinOptions { 17 | jvmTarget = "1.8" 18 | } 19 | 20 | compileOptions { 21 | sourceCompatibility = JavaVersion.VERSION_1_8 22 | targetCompatibility = JavaVersion.VERSION_1_8 23 | } 24 | 25 | dataBinding { 26 | enable = true 27 | } 28 | 29 | buildTypes { 30 | val release = getByName("release") 31 | release.apply { 32 | isMinifyEnabled = false 33 | proguardFiles( 34 | getDefaultProguardFile("proguard-android-optimize.txt"), 35 | "proguard-rules.pro" 36 | ) 37 | } 38 | } 39 | namespace = "com.hjl.language" 40 | 41 | } 42 | 43 | 44 | dependencies { 45 | // implementation fileTree(dir: "libs", include: ["*.jar"]) 46 | 47 | api(project(":module_base")) 48 | 49 | kapt(Dependencies.routerApt) 50 | 51 | 52 | } 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/okhttp/RequestParams.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.okhttp; 2 | 3 | import java.io.File; 4 | import java.util.Iterator; 5 | import java.util.Map; 6 | import java.util.TreeMap; 7 | import java.util.concurrent.ConcurrentHashMap; 8 | 9 | /** 10 | * 封装了请求参数 Map 11 | */ 12 | public class RequestParams { 13 | 14 | private Map params = new TreeMap<>(); 15 | private Map fileMap = new ConcurrentHashMap<>(); 16 | 17 | 18 | public RequestParams() { 19 | } 20 | 21 | public RequestParams(Map source) { 22 | 23 | if (source != null){ 24 | params.putAll(source); 25 | } 26 | } 27 | 28 | public void add(String key,String value){ 29 | params.put(key,value); 30 | } 31 | 32 | public void add(String key,File file){ 33 | fileMap.put(key,file); 34 | } 35 | 36 | public boolean hasParams(){ 37 | if (fileMap.size() > 0 || params.size() > 0){ 38 | return true; 39 | } 40 | return false; 41 | } 42 | 43 | public Map getFileMap() { 44 | return fileMap; 45 | } 46 | public Map getParams() { 47 | return params; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/net/bean/MineItemBean.java: -------------------------------------------------------------------------------- 1 | package com.hjl.core.net.bean; 2 | 3 | /** 4 | * Author : long 5 | * Description : MineFragment - RecyclerView Item Bean 6 | * Date : 2020/8/29 7 | */ 8 | public class MineItemBean { 9 | 10 | String itemName; 11 | String action; 12 | 13 | int iconRes; 14 | 15 | public MineItemBean(String itemName, String action, int iconRes) { 16 | this.itemName = itemName; 17 | this.action = action; 18 | this.iconRes = iconRes; 19 | } 20 | 21 | public String getItemName() { 22 | return itemName; 23 | } 24 | 25 | public void setItemName(String itemName) { 26 | this.itemName = itemName; 27 | } 28 | 29 | public String getAction() { 30 | return action; 31 | } 32 | 33 | public void setAction(String action) { 34 | this.action = action; 35 | } 36 | 37 | public int getIconRes() { 38 | return iconRes; 39 | } 40 | 41 | public void setIconRes(int iconRes) { 42 | this.iconRes = iconRes; 43 | } 44 | 45 | // // 解决编译时报的一个错误 46 | // // Cannot find a setter for that accepts parameter type 'int' 47 | // public void setIconRes(Integer iconRes) { 48 | // this.iconRes = iconRes; 49 | // } 50 | } 51 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/interceptor/CookieInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.interceptor; 2 | 3 | import com.hjl.commonlib.utils.SpUtils; 4 | import com.hjl.commonlib.utils.StringUtils; 5 | 6 | import java.io.IOException; 7 | import java.util.List; 8 | 9 | import okhttp3.Interceptor; 10 | import okhttp3.Request; 11 | import okhttp3.Response; 12 | 13 | /** 14 | * author: long 15 | * description 添加和保存Cookie 16 | * Date: 2020/8/17 17 | */ 18 | public class CookieInterceptor implements Interceptor { 19 | 20 | @Override 21 | public Response intercept(Chain chain) throws IOException { 22 | 23 | Request.Builder builder = chain.request().newBuilder(); 24 | String url = chain.request().url().toString(); 25 | Response response; 26 | 27 | if (url.contains("user/login")){ 28 | response = chain.proceed(builder.build()); 29 | List headers = response.headers("Set-Cookie"); 30 | if (headers.size() > 0){ 31 | SpUtils.addCookie(headers.toString()); 32 | } 33 | return response; 34 | } 35 | 36 | if (!StringUtils.isEmpty(SpUtils.getCookie())) builder.addHeader("Cookie",SpUtils.getCookie()); 37 | 38 | return chain.proceed(builder.build()); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/DensityUtil.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils; 2 | 3 | import android.content.res.Resources; 4 | 5 | public class DensityUtil { 6 | 7 | public float density; 8 | 9 | public DensityUtil() { 10 | density = Resources.getSystem().getDisplayMetrics().density; 11 | } 12 | 13 | /** 14 | * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 15 | * @param dpValue 虚拟像素 16 | * @return 像素 17 | */ 18 | public static int dp2px(float dpValue) { 19 | return (int) (0.5f + dpValue * Resources.getSystem().getDisplayMetrics().density); 20 | } 21 | 22 | /** 23 | * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 24 | * @param pxValue 像素 25 | * @return 虚拟像素 26 | */ 27 | public static float px2dp(int pxValue) { 28 | return (pxValue / Resources.getSystem().getDisplayMetrics().density); 29 | } 30 | 31 | /** 32 | * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 33 | * @param dpValue 虚拟像素 34 | * @return 像素 35 | */ 36 | public int dip2px(float dpValue) { 37 | return (int) (0.5f + dpValue * density); 38 | } 39 | 40 | /** 41 | * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 42 | * @param pxValue 像素 43 | * @return 虚拟像素 44 | */ 45 | public float px2dip(int pxValue) { 46 | return (pxValue / density); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /module_core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/network/retrofit/BaseResponse.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.network.retrofit; 2 | 3 | public class BaseResponse { 4 | 5 | 6 | /** 7 | * Test Example 8 | * state : false 9 | * flag : 10 | * message : 系统异常,操作失败! 11 | * errorCode : 201 12 | */ 13 | 14 | private boolean state; 15 | private String flag; 16 | private String message; 17 | private int errorCode; 18 | private T data; 19 | 20 | public boolean isState() { 21 | return state; 22 | } 23 | 24 | public void setState(boolean state) { 25 | this.state = state; 26 | } 27 | 28 | public String getFlag() { 29 | return flag; 30 | } 31 | 32 | public void setFlag(String flag) { 33 | this.flag = flag; 34 | } 35 | 36 | public String getMessage() { 37 | return message; 38 | } 39 | 40 | public void setMessage(String message) { 41 | this.message = message; 42 | } 43 | 44 | public int getErrorCode() { 45 | return errorCode; 46 | } 47 | 48 | public void setErrorCode(int errorCode) { 49 | this.errorCode = errorCode; 50 | } 51 | 52 | public T getData() { 53 | return data; 54 | } 55 | 56 | public void setData(T data) { 57 | this.data = data; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /module_core/src/main/res/layout/core_fragment_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 16 | 17 | 18 | 23 | 24 | 25 | 29 | 30 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /module_core/src/main/java/com/hjl/core/net/bean/HomeSearchHotKeyBean.java: -------------------------------------------------------------------------------- 1 | package com.hjl.core.net.bean; 2 | 3 | /** 4 | * author: long 5 | * description please add a description here 6 | * Date: 2020/9/30 7 | */ 8 | public class HomeSearchHotKeyBean { 9 | /** 10 | * id : 6 11 | * link : 12 | * name : 面试 13 | * order : 1 14 | * visible : 1 15 | */ 16 | 17 | private int id; 18 | private String link; 19 | private String name; 20 | private int order; 21 | private int visible; 22 | 23 | public int getId() { 24 | return id; 25 | } 26 | 27 | public void setId(int id) { 28 | this.id = id; 29 | } 30 | 31 | public String getLink() { 32 | return link; 33 | } 34 | 35 | public void setLink(String link) { 36 | this.link = link; 37 | } 38 | 39 | public String getName() { 40 | return name; 41 | } 42 | 43 | public void setName(String name) { 44 | this.name = name; 45 | } 46 | 47 | public int getOrder() { 48 | return order; 49 | } 50 | 51 | public void setOrder(int order) { 52 | this.order = order; 53 | } 54 | 55 | public int getVisible() { 56 | return visible; 57 | } 58 | 59 | public void setVisible(int visible) { 60 | this.visible = visible; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /commonlib/src/main/java/com/hjl/commonlib/utils/CloseUtils.java: -------------------------------------------------------------------------------- 1 | package com.hjl.commonlib.utils; 2 | 3 | import java.io.Closeable; 4 | import java.io.IOException; 5 | 6 | public final class CloseUtils { 7 | 8 | private CloseUtils() { 9 | throw new UnsupportedOperationException("u can't instantiate me..."); 10 | } 11 | 12 | /** 13 | * 关闭IO 14 | * 15 | * @param closeables closeables 16 | */ 17 | public static void closeIO(final Closeable... closeables) { 18 | if (closeables == null) return; 19 | for (Closeable closeable : closeables) { 20 | if (closeable != null) { 21 | try { 22 | closeable.close(); 23 | } catch (IOException e) { 24 | e.printStackTrace(); 25 | } 26 | } 27 | } 28 | } 29 | 30 | /** 31 | * 安静关闭IO 32 | * 33 | * @param closeables closeables 34 | */ 35 | public static void closeIOQuietly(final Closeable... closeables) { 36 | if (closeables == null) return; 37 | for (Closeable closeable : closeables) { 38 | if (closeable != null) { 39 | try { 40 | closeable.close(); 41 | } catch (IOException ignored) { 42 | } 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /module_func/func_language/src/main/res/layout/activity_language_setting.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 15 | 16 | 19 | 20 | 25 | 26 |