├── 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 |
--------------------------------------------------------------------------------
/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 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/module_core/src/main/res/layout/core_fragment_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
9 |
10 |
11 |
14 |
15 |
18 |
19 |
25 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/view/BasePagingSource.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.jetpacklib.mvvm.view
2 |
3 | import android.util.Log
4 | import androidx.paging.PagingSource
5 | import com.hjl.jetpacklib.mvvm.exception.ApiException
6 | import com.hjl.jetpacklib.mvvm.exception.ExceptionHandler
7 | import kotlinx.coroutines.Dispatchers
8 | import kotlinx.coroutines.GlobalScope
9 | import kotlinx.coroutines.Job
10 | import kotlinx.coroutines.launch
11 |
12 |
13 | /**
14 | * Description Base Class for DataSource
15 | * Author long
16 | * Date 2020/6/15 23:16
17 | */
18 | abstract class BasePagingSource : PagingSource() {
19 |
20 | private val jobCancelList = ArrayList()
21 |
22 | protected val TAG = javaClass.simpleName
23 |
24 | // 默认可以取消网络请求 如果需要请求网络在页面销毁继续完成保存数据等操作则设置为false
25 | protected fun launch(request : suspend () -> Unit, fail : suspend (ApiException) -> Unit, isCancelable: Boolean = true){
26 |
27 | val job = GlobalScope.launch(Dispatchers.IO) {
28 |
29 | try {
30 | request()
31 | } catch (e: Throwable) {
32 | val exception = ExceptionHandler.handle(e)
33 | Log.e(TAG, e.message.toString())
34 | fail(exception)
35 | }
36 | }
37 |
38 | if (isCancelable) jobCancelList.add(job)
39 |
40 | }
41 |
42 |
43 |
44 |
45 | }
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/base/BindingHolder.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.base
2 |
3 | import androidx.databinding.ViewDataBinding
4 | import androidx.lifecycle.LifecycleObserver
5 | import androidx.lifecycle.LifecycleOwner
6 | import androidx.viewbinding.ViewBinding
7 |
8 | /**
9 | * author: long
10 | * description please add a description here
11 | * Date: 2021/5/26
12 | */
13 |
14 |
15 | interface ViewBindingHolder {
16 | var binding: B?
17 | // Only valid between onCreateView and onDestroyView.
18 | fun requireBinding() = checkNotNull(binding)
19 | fun requireBinding(lambda: (B) -> Unit) {
20 | binding?.let {
21 | lambda(it)
22 | }}
23 | /**
24 | * Make sure to use this with Fragment.viewLifecycleOwner
25 | */
26 | fun registerBinding(binding: B, lifecycleOwner: LifecycleOwner) {
27 | this.binding = binding
28 | lifecycleOwner.lifecycle.addObserver(object : DefaultLifecycleObserver{
29 | override fun onDestroy(owner: LifecycleOwner?) {
30 | owner?.lifecycle?.removeObserver(this)
31 | this@ViewBindingHolder.binding = null
32 | }
33 | })
34 | }
35 | }
36 | interface DataBindingHolder : ViewBindingHolder
37 |
38 | interface DefaultLifecycleObserver : LifecycleObserver{
39 | fun onDestroy(owner: LifecycleOwner?)
40 | }
--------------------------------------------------------------------------------
/module_func/func_skin/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.skin"
37 |
38 | }
39 |
40 |
41 | dependencies {
42 | // implementation fileTree(dir: "libs", include: ["*.jar"])
43 |
44 | api(project(":module_base"))
45 |
46 | api(SkinSupport.skin)
47 | api(SkinSupport.skin_appcompat)
48 | api(SkinSupport.skin_design)
49 | api(SkinSupport.skin_cardview)
50 | api(SkinSupport.skin_constraint)
51 |
52 | kapt(Dependencies.routerApt)
53 |
54 |
55 | }
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/commonlib/src/main/java/com/hjl/commonlib/utils/SpUtils.java:
--------------------------------------------------------------------------------
1 | package com.hjl.commonlib.utils;
2 |
3 | import android.content.Context;
4 | import android.content.SharedPreferences;
5 |
6 | import com.hjl.commonlib.base.BaseApplication;
7 |
8 | /**
9 | * author: long
10 | * description please add a description here
11 | * Date: 2020/8/17
12 | */
13 | public class SpUtils {
14 |
15 | private static final String COMMON_SP = "common_sp";
16 |
17 | private static final String SP_COOKIE = "sp_cookie";
18 |
19 | public static void clearCookie(){
20 | addCookie("");
21 | }
22 |
23 | public static void addCookie(String cookie){
24 | SharedPreferences sharedPreferences = getCommonSP();
25 | SharedPreferences.Editor edit = sharedPreferences.edit();
26 | edit.putString(SP_COOKIE,cookie);
27 | edit.apply();
28 | }
29 |
30 | public static String getCookie(){
31 | return getCommonSP().getString(SP_COOKIE,"");
32 | }
33 |
34 | public static SharedPreferences getCommonSP(){
35 | return BaseApplication.getApplication().getSharedPreferences(COMMON_SP, Context.MODE_PRIVATE);
36 | }
37 |
38 | public static String getData(String key){
39 | return getCommonSP().getString(key,"");
40 | }
41 |
42 | public static void saveData(String key,String data){
43 | getCommonSP().edit().putString(key,data).apply();
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/module_func/func_language/src/main/res/layout/item_language.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
14 |
15 |
25 |
26 |
27 |
28 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/commonlib/src/main/java/com/hjl/commonlib/constant/Constant.java:
--------------------------------------------------------------------------------
1 | package com.hjl.commonlib.constant;
2 |
3 | public class Constant {
4 |
5 | public static int DEVICE_FIRM = -1;
6 |
7 | public static final int REQUEST_CODE_ONE = 0x100;
8 | public static final int REQUEST_CODE_TWO = 0x101;
9 | public static final int REQUEST_CODE_THR = 0x102;
10 |
11 | public static final int RESUTL_CODE_ONE = 0x200;
12 | public static final int RESUTL_CODE_TWO = 0x201;
13 | public static final int RESUTL_CODE_THR = 0x202;
14 |
15 | public static final String INTENT_KEY01 = "send_data_01";
16 | public static final String INTENT_KEY02 = "send_data_02";
17 | public static final String INTENT_KEY03 = "send_data_03";
18 | public static final String INTENT_KEY04 = "send_data_04";
19 | public static final String INTENT_KEY05 = "send_data_05";
20 |
21 | public static final int UPDATE_KEY01 = 0x2000;
22 | public static final int UPDATE_KEY02 = 0x2001;
23 | public static final int UPDATE_KEY03 = 0x2002;
24 | public static final int UPDATE_KEY04 = 0x2003;
25 |
26 | public static final String RXJAVA_KEY_01 = "rxjava_key_01";
27 | public static final String RXJAVA_KEY_02 = "rxjava_key_02";
28 | public static final String RXJAVA_KEY_03 = "rxjava_key_03";
29 | public static final String RXJAVA_KEY_04 = "rxjava_key_04";
30 | public static final String RXJAVA_KEY_05 = "rxjava_key_05";
31 | }
32 |
--------------------------------------------------------------------------------
/module_core/src/main/res/layout/core_fragment_system_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
14 |
18 |
27 |
28 |
29 |
30 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/commonlib/src/main/java/com/hjl/commonlib/adapter/LazyFragmentPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.hjl.commonlib.adapter;
2 |
3 | import java.util.List;
4 |
5 | import androidx.annotation.NonNull;
6 | import androidx.fragment.app.Fragment;
7 | import androidx.fragment.app.FragmentManager;
8 | import androidx.fragment.app.FragmentStatePagerAdapter;
9 |
10 |
11 | public class LazyFragmentPagerAdapter extends FragmentStatePagerAdapter {
12 | private List list;
13 | private List mTitles;
14 |
15 | public LazyFragmentPagerAdapter(FragmentManager fm, List list) {
16 | super(fm);
17 | this.list = list;
18 | }
19 |
20 | public LazyFragmentPagerAdapter(FragmentManager fm, List list, List titles) {
21 | super(fm);
22 | this.list = list;
23 | mTitles = titles;
24 | }
25 |
26 | @Override
27 | public Fragment getItem(int position) {
28 | return list.get(position);
29 | }
30 |
31 | @Override
32 | public CharSequence getPageTitle(int position) {
33 | if (mTitles != null) {
34 | return mTitles.get(position);
35 | }
36 | return super.getPageTitle(position);
37 | }
38 |
39 | @Override
40 | public int getCount() {
41 | return list == null ? 0 : list.size();
42 | }
43 |
44 | @Override
45 | public int getItemPosition(@NonNull Object object) {
46 | return POSITION_NONE;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/commonlib/src/main/res/layout/common_custom_loading_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
17 |
18 |
26 |
27 |
34 |
35 |
--------------------------------------------------------------------------------
/module_core/src/main/res/layout/core_activity_system_article_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
15 |
16 |
19 |
20 |
31 |
32 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/adpter/CollectListAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.adpter
2 |
3 | import androidx.recyclerview.widget.DiffUtil
4 | import com.hjl.core.R
5 | import com.hjl.core.base.PagingDataAdapter
6 | import com.hjl.core.base.PagingDataViewHolder
7 | import com.hjl.core.databinding.CoreItemCollectBinding
8 | import com.hjl.core.net.bean.CollectItemBean
9 | import com.hjl.core.net.bean.HomeArticleBean
10 |
11 | /**
12 | * Author : long
13 | * Description :
14 | * Date : 2020/9/5
15 | */
16 | class CollectListAdapter : PagingDataAdapter,CoreItemCollectBinding>(diff) {
17 | override fun getLayoutRes(): Int {
18 | return R.layout.core_item_collect
19 | }
20 |
21 | override fun bindData(holder: PagingDataViewHolder, position: Int) {
22 | holder.binding.data = getItem(position)
23 | }
24 |
25 | companion object{
26 |
27 | val diff = object : DiffUtil.ItemCallback(){
28 | override fun areItemsTheSame(oldItem: CollectItemBean.CollectItem, newItem: CollectItemBean.CollectItem): Boolean {
29 | return oldItem.id == newItem.id
30 | }
31 |
32 | override fun areContentsTheSame(oldItem: CollectItemBean.CollectItem, newItem: CollectItemBean.CollectItem): Boolean {
33 | return oldItem.title == newItem.title
34 | }
35 |
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/commonlib/src/main/res/layout/common_item_base_tv.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
24 |
30 |
31 |
--------------------------------------------------------------------------------
/jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/BaseViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.jetpacklib.mvvm
2 |
3 |
4 | import android.util.Log
5 | import androidx.lifecycle.ViewModel
6 | import androidx.lifecycle.viewModelScope
7 | import com.hjl.commonlib.utils.LogUtils
8 | import com.hjl.jetpacklib.mvvm.exception.ApiException
9 | import com.hjl.jetpacklib.mvvm.exception.ExceptionHandler
10 | import kotlinx.coroutines.Dispatchers
11 | import kotlinx.coroutines.launch
12 | import kotlinx.coroutines.withContext
13 |
14 | /**
15 | * Description
16 | * Date 2020/3/2 16:49
17 | * created by long
18 | */
19 | open class BaseViewModel : ViewModel() {
20 |
21 | protected val TAG = javaClass.simpleName
22 |
23 | // 默认可以取消网络请求 如果需要请求网络在页面销毁继续完成保存数据等操作则设置为false
24 | protected fun launch(
25 | request: suspend () -> Unit,
26 | fail: suspend (ApiException) -> Unit = { LogUtils.e(it.errorMessage) }
27 | ) {
28 |
29 | viewModelScope.launch {
30 |
31 | try {
32 | withContext(Dispatchers.IO) {
33 | request()
34 | }
35 | } catch (e: Throwable) {
36 | withContext(Dispatchers.Main) {
37 | val exception = ExceptionHandler.handle(e)
38 | Log.e(TAG, e.message.toString())
39 | fail(exception)
40 | }
41 | }
42 | }
43 |
44 | }
45 |
46 | override fun onCleared() {
47 | super.onCleared()
48 | }
49 |
50 | }
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/base/PagingDataViewHolder.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.base
2 |
3 | import android.view.View
4 | import androidx.annotation.IdRes
5 | import androidx.databinding.ViewDataBinding
6 | import androidx.recyclerview.widget.RecyclerView
7 | import com.hjl.jetpacklib.mvvm.recycleview.OnItemChildClickListener
8 | import com.hjl.jetpacklib.mvvm.recycleview.OnItemClickListener
9 |
10 | /**
11 | * Author : long
12 | * Description :
13 | * Date : 2020/7/25
14 | */
15 | open class PagingDataViewHolder(val binding: DB) : RecyclerView.ViewHolder(binding.root) {
16 |
17 |
18 | private var childIdClickList = ArrayList()
19 |
20 |
21 | fun setOnItemClickListener(onItemClickListener: OnItemClickListener, bean : T){
22 | binding.root.setOnClickListener {
23 | onItemClickListener.onItemClick(bindingAdapterPosition,it,bean)
24 | }
25 | }
26 |
27 | fun setOnItemChildClickListener(onItemChildClickListener: OnItemChildClickListener, bean : T) {
28 | for (id in childIdClickList) {
29 | val view: View? = itemView.findViewById(id)
30 | view?.setOnClickListener {
31 | onItemChildClickListener.onItemChildClick(bindingAdapterPosition,it,bean)
32 | }
33 | }
34 | }
35 |
36 |
37 |
38 | open fun addChildClick(@IdRes id: Int) {
39 | if(!childIdClickList.contains(id)){
40 | childIdClickList.add(id)
41 | }
42 | }
43 |
44 |
45 | }
--------------------------------------------------------------------------------
/module_func/func_language/src/main/java/com/hjl/language/impl/SPLanguageSetting.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.language.impl
2 |
3 | import android.content.Context
4 | import android.content.SharedPreferences
5 | import com.hjl.language.ILanguageSetting
6 | import com.hjl.language.MultiLanguage
7 | import java.util.Locale
8 |
9 | /**
10 | * Author : long
11 | * Description :
12 | * Date : 2024/3/8
13 | */
14 | class SPLanguageSetting : ILanguageSetting {
15 |
16 | lateinit var sp: SharedPreferences
17 |
18 | override fun init(context: Context) {
19 | sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE)
20 | }
21 |
22 | override fun saveLanguageSetting(data: String) {
23 | sp.edit().putString(SP_KEY_LANGUAGE, data).commit()
24 | }
25 |
26 | override fun getLanguageSetting(): String = sp.getString(SP_KEY_LANGUAGE, LANGUAGE_SYSTEM)!!
27 |
28 | override fun getSetUpdLocale(): Locale {
29 | return when (getLanguageSetting()) {
30 | LANGUAGE_CHINESE -> Locale.SIMPLIFIED_CHINESE
31 | LANGUAGE_ENGLISH -> Locale.US
32 | else -> MultiLanguage.getSystemLocale()
33 | }
34 | }
35 |
36 | companion object {
37 | const val SP_NAME = "sp_multi_language"
38 | const val SP_KEY_LANGUAGE = "sp_key_language_name"
39 |
40 | const val LANGUAGE_SYSTEM = "language_system"
41 | const val LANGUAGE_CHINESE = "language_chinese"
42 | const val LANGUAGE_ENGLISH = "language_english"
43 | }
44 |
45 |
46 | }
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/ui/system/SystemNavigationFragment.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.ui.system
2 |
3 | import androidx.lifecycle.Observer
4 | import androidx.recyclerview.widget.LinearLayoutManager
5 | import com.hjl.core.R
6 | import com.hjl.core.adpter.NaviListAdapter
7 | import com.hjl.core.databinding.CoreFragmentNavigationBinding
8 | import com.hjl.core.viewmodel.HomeViewModel
9 | import com.hjl.commonlib.extend.addDivider
10 | import com.hjl.jetpacklib.mvvm.view.BaseMVVMFragment2
11 |
12 | /**
13 | * author: long
14 | * description 主页 - 体系 - 导航
15 | * Date: 2021/5/12
16 | */
17 | class SystemNavigationFragment : BaseMVVMFragment2(){
18 |
19 | lateinit var naviAdapter : NaviListAdapter
20 |
21 | override fun initLayoutResID(): Int {
22 | return R.layout.core_fragment_navigation
23 | }
24 |
25 | override fun initData() {
26 | naviAdapter = NaviListAdapter()
27 | }
28 |
29 | override fun initView() {
30 | showLoading()
31 | binding.coreFragmentNavigationRv.apply {
32 | adapter = naviAdapter
33 | addDivider()
34 | layoutManager = LinearLayoutManager(context)
35 | }
36 | }
37 |
38 | override fun loadData() {
39 | viewModel.getNaviList()
40 | viewModel.naviListData.observe(this, Observer {
41 | if (it.isNotEmpty()){
42 | naviAdapter.setNewData(it)
43 | showComplete()
44 | }
45 | })
46 | }
47 | }
--------------------------------------------------------------------------------
/jetpacklib/src/main/java/com/hjl/jetpacklib/mvvm/custom/GsonRequestBodyConverter.java:
--------------------------------------------------------------------------------
1 | package com.hjl.jetpacklib.mvvm.custom;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.TypeAdapter;
5 | import com.google.gson.stream.JsonWriter;
6 |
7 | import java.io.IOException;
8 | import java.io.OutputStreamWriter;
9 | import java.io.Writer;
10 | import java.nio.charset.Charset;
11 |
12 | import okhttp3.MediaType;
13 | import okhttp3.RequestBody;
14 | import okio.Buffer;
15 | import retrofit2.Converter;
16 |
17 | /**
18 | * Description
19 | * Date 2020/3/5 9:16
20 | * created by long
21 | */
22 | public class GsonRequestBodyConverter implements Converter {
23 |
24 | private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8");
25 | private static final Charset UTF_8 = Charset.forName("UTF-8");
26 |
27 | private final Gson gson;
28 | private final TypeAdapter adapter;
29 |
30 | GsonRequestBodyConverter(Gson gson, TypeAdapter adapter) {
31 | this.gson = gson;
32 | this.adapter = adapter;
33 | }
34 |
35 | @Override public RequestBody convert(T value) throws IOException {
36 | Buffer buffer = new Buffer();
37 | Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8);
38 | JsonWriter jsonWriter = gson.newJsonWriter(writer);
39 | adapter.write(jsonWriter, value);
40 | jsonWriter.close();
41 | return RequestBody.create(MEDIA_TYPE, buffer.readByteString());
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/adpter/SystemListAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.adpter
2 |
3 | import android.view.ViewGroup
4 | import com.google.android.flexbox.FlexboxLayoutManager
5 | import com.hjl.core.R
6 | import com.hjl.core.databinding.CoreItemHomeSystemBinding
7 | import com.hjl.core.net.bean.SystemListBean
8 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter
9 | import com.hjl.jetpacklib.mvvm.recycleview.BaseViewHolder
10 |
11 | /**
12 | * Author : long
13 | * Description :
14 | * Date : 2021/5/6
15 | */
16 | class SystemListAdapter : BaseRecyclerViewAdapter(){
17 |
18 | override fun onCreateViewHolder(
19 | parent: ViewGroup,
20 | viewType: Int
21 | ): BaseViewHolder {
22 | return super.onCreateViewHolder(parent, viewType).also { it.setIsRecyclable(false) }
23 | }
24 |
25 | override fun bindData(
26 | binding: CoreItemHomeSystemBinding?,
27 | data: SystemListBean?
28 | ) {
29 | binding?.let {
30 | val detailAdapter = SystemArticleAdapter(data!!)
31 | detailAdapter.setNewData(data.children)
32 |
33 | it.coreItemSystemTv.text = data.name
34 | it.coreItemSystemRv.apply {
35 | layoutManager = FlexboxLayoutManager(context)
36 | adapter = detailAdapter
37 | }
38 | }
39 | }
40 |
41 | override fun getLayoutId(): Int {
42 | return R.layout.core_item_home_system
43 | }
44 | }
--------------------------------------------------------------------------------
/commonlib/src/main/java/com/hjl/commonlib/utils/StringUtils.java:
--------------------------------------------------------------------------------
1 | package com.hjl.commonlib.utils;
2 |
3 | public class StringUtils {
4 |
5 | /**
6 | * 判断是否为空
7 | * @param str 待判断字符串
8 | * @return 是否为空
9 | */
10 | public static boolean isEmpty(String str){
11 | return (str == null ||str.trim().length() == 0 || str.trim().equals("null") );
12 | }
13 |
14 | public static boolean isNotEmpty(String string){
15 | return !isEmpty(string);
16 | }
17 |
18 | /**
19 | * 首字母大写
20 | *
21 | * @param s 待转字符串
22 | * @return 首字母大写字符串
23 | */
24 | public static String upperFirstLetter(String s) {
25 | if (isEmpty(s) || !Character.isLowerCase(s.charAt(0))) return s;
26 | return String.valueOf((char) (s.charAt(0) - 32)) + s.substring(1);
27 | }
28 |
29 | /**
30 | * 首字母小写
31 | *
32 | * @param s 待转字符串
33 | * @return 首字母小写字符串
34 | */
35 | public static String lowerFirstLetter(String s) {
36 | if (isEmpty(s) || !Character.isUpperCase(s.charAt(0))) return s;
37 | return String.valueOf((char) (s.charAt(0) + 32)) + s.substring(1);
38 | }
39 |
40 | /**
41 | * 判断两字符串忽略大小写是否相等
42 | *
43 | * @param a 待校验字符串a
44 | * @param b 待校验字符串b
45 | * @return {@code true}: 相等
{@code false}: 不相等
46 | */
47 | public static boolean equalsIgnoreCase(String a, String b) {
48 | return (a == b) || (b != null) && (a.length() == b.length()) && a.regionMatches(true, 0, b, 0, b.length());
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/commonlib/src/main/java/com/hjl/commonlib/adapter/HealthyFragmentPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.hjl.commonlib.adapter;
2 |
3 |
4 | import androidx.fragment.app.Fragment;
5 | import androidx.fragment.app.FragmentManager;
6 | import androidx.fragment.app.FragmentStatePagerAdapter;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * created by long on 2019/11/23
12 | */
13 | public class HealthyFragmentPagerAdapter extends FragmentStatePagerAdapter {
14 |
15 | private List list;
16 | private List mTitles;
17 |
18 | public HealthyFragmentPagerAdapter(FragmentManager fm, List list) {
19 | super(fm);
20 | this.list = list;
21 | }
22 |
23 | public HealthyFragmentPagerAdapter(FragmentManager fm, List list, List titles) {
24 | super(fm);
25 | this.list = list;
26 | mTitles = titles;
27 | }
28 |
29 | @Override
30 | public Fragment getItem(int i) {
31 |
32 | try {
33 | return (Fragment) list.get(i).newInstance();
34 | } catch (IllegalAccessException | InstantiationException e) {
35 | e.printStackTrace();
36 | }
37 |
38 | return null;
39 | }
40 |
41 | @Override
42 | public int getCount() {
43 | return list == null ? 0 : list.size();
44 | }
45 |
46 | @Override
47 | public CharSequence getPageTitle(int position) {
48 | if (mTitles != null) {
49 | return mTitles.get(position);
50 | }
51 | return super.getPageTitle(position);
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/module_core/src/main/res/layout/core_item_home_system.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
15 |
16 |
26 |
27 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx2048m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app"s APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
22 |
23 | android.injected.testOnly=false
24 |
25 | RELEASE_KEY_PASSWORD=sw1234
26 | RELEASE_KEY_ALIAS=wankey
27 | RELEASE_STORE_PASSWORD=sw1234
28 | RELEASE_STORE_FILE=E\:\\AndroidProject\\LWanAndroid\\wankey.jks
29 |
30 | #isDebug= true
31 | isDebug= false
32 | #
33 | isModule = false
34 |
35 | # 开启换肤
36 | isEnableSkin = true
--------------------------------------------------------------------------------
/module_func/func_skin/src/main/res/layout/skin_item_skin_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
21 |
22 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/commonlib/src/main/res/layout/common_custom_empty_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
20 |
26 |
27 |
38 |
39 |
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/adpter/NaviListAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.adpter
2 |
3 | import android.view.ViewGroup
4 | import com.google.android.flexbox.FlexboxLayoutManager
5 | import com.hjl.core.R
6 | import com.hjl.core.databinding.CoreItemHomeSystemBinding
7 | import com.hjl.core.net.bean.NavigationListBean
8 | import com.hjl.jetpacklib.mvvm.recycleview.BaseRecyclerViewAdapter
9 | import com.hjl.jetpacklib.mvvm.recycleview.BaseViewHolder
10 |
11 | /**
12 | * author: long
13 | * description please add a description here
14 | * Date: 2021/5/12
15 | */
16 | class NaviListAdapter : BaseRecyclerViewAdapter(){
17 |
18 | override fun onCreateViewHolder(
19 | parent: ViewGroup,
20 | viewType: Int
21 | ): BaseViewHolder {
22 | return super.onCreateViewHolder(parent, viewType).also { it.setIsRecyclable(false) }
23 | }
24 |
25 | override fun bindData(
26 | binding: CoreItemHomeSystemBinding?,
27 | data: NavigationListBean?
28 | ) {
29 | binding?.let {
30 | val naviListAdapter = NaviArticleAdapter()
31 | naviListAdapter.setNewData(data?.articles)
32 |
33 | it.coreItemSystemTv.text = data?.name
34 | it.coreItemSystemRv.apply {
35 | adapter = naviListAdapter
36 | layoutManager = FlexboxLayoutManager(context)
37 | }
38 | }
39 | }
40 |
41 | override fun getLayoutId(): Int {
42 | return R.layout.core_item_home_system
43 | }
44 | }
--------------------------------------------------------------------------------
/module_base/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.library")
3 | id("kotlin-android")
4 | id("kotlin-kapt")
5 | }
6 |
7 |
8 | android {
9 | compileSdk = Android.compileSdkVersion
10 | buildToolsVersion = Android.buildToolsVersion
11 |
12 | defaultConfig {
13 | minSdk = Android.minSdkVersion
14 | targetSdk = Android.targetSdkVersion
15 | }
16 |
17 | compileOptions {
18 | sourceCompatibility = JavaVersion.VERSION_1_8
19 | targetCompatibility = JavaVersion.VERSION_1_8
20 | }
21 |
22 | dataBinding {
23 | enable = true
24 | }
25 |
26 | kotlinOptions {
27 | jvmTarget = "1.8"
28 | }
29 |
30 | buildTypes {
31 | val release = getByName("release")
32 | release.apply {
33 | isMinifyEnabled = false
34 | proguardFiles(
35 | getDefaultProguardFile("proguard-android-optimize.txt"),
36 | "proguard-rules.pro"
37 | )
38 | }
39 | }
40 | namespace = "com.hjl.module_base"
41 |
42 | }
43 |
44 | // 2、kotlin 配置ARouter
45 | //kapt {
46 | // arguments {
47 | // arg("AROUTER_MODULE_NAME", project.getName())
48 | // }
49 | //}
50 |
51 | dependencies {
52 | implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
53 |
54 | api(project(":commonlib"))
55 | api(project(":jetpacklib"))
56 |
57 | api(Dependencies.permissionx)
58 | api(Dependencies.liveEventBus)
59 |
60 | // room
61 | api(Jetpack.room)
62 | kapt(Jetpack.room_compiler)
63 | api(Jetpack.room_ktx)
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/module_core/src/main/java/com/hjl/core/ui/system/SystemListFragment.kt:
--------------------------------------------------------------------------------
1 | package com.hjl.core.ui.system
2 |
3 | import androidx.recyclerview.widget.LinearLayoutManager
4 | import com.hjl.core.R
5 | import com.hjl.core.adpter.SystemListAdapter
6 | import com.hjl.core.databinding.CoreFragmentHomeSystemBinding
7 | import com.hjl.core.viewmodel.HomeViewModel
8 | import com.hjl.commonlib.extend.addDivider
9 | import com.hjl.jetpacklib.mvvm.view.BaseMVVMFragment2
10 |
11 | /**
12 | * Author : long
13 | * Description : 主页 - 体系 - 体系
14 | * Date : 2021/5/6
15 | */
16 | class SystemListFragment : BaseMVVMFragment2() {
17 |
18 | lateinit var systemArticleAdapter : SystemListAdapter
19 |
20 | override fun initLayoutResID(): Int {
21 | return R.layout.core_fragment_home_system
22 | }
23 |
24 | override fun initData() {
25 |
26 | }
27 |
28 | override fun initView() {
29 | showLoading()
30 | systemArticleAdapter = SystemListAdapter()
31 | binding.coreHomeSystemRv.apply {
32 | layoutManager = LinearLayoutManager(context)
33 | adapter = systemArticleAdapter
34 | addDivider(paddingLeft = 8.0F,paddingRight = 8.0F)
35 | }
36 |
37 | }
38 |
39 | override fun loadData() {
40 | viewModel.systemListData.observe(this, {
41 | if (it.isNotEmpty()){
42 | systemArticleAdapter.setNewData(it)
43 | showComplete()
44 | }else{
45 | showEmpty()
46 | }
47 | })
48 |
49 | viewModel.getSystemList()
50 | }
51 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LWanAndroid
2 |
3 | ## 简介
4 |
5 |
6 | 本项目是基于 [玩安卓](https://www.wanandroid.com/) 开放API,对Jetpack、Gradle插件以及一些流行框架进行学习封装。鸿洋大佬的玩安卓官方项目地址:https://github.com/hongyangAndroid/wanandroid
7 |
8 |
9 | ## 项目概况
10 |
11 | 1. 整体框架使用MVVM架构,并以组件化形式分层,优先使用官方推荐的jetpack库
12 | 2. 对Gradle插件以及ASM进行了简单实践,包括简单的方法耗时插桩、动态替换Application继承类,并接入了[booster](https://github.com/didi/booster) 框架实现了根据换肤功能是否开启而实现替换Activity父类
13 |
14 |
15 | ### 技术框架(MVVM)
16 |
17 | - Databinding
18 | - Viewmodel
19 | - Paging3
20 | - Room
21 | - [Glide](https://github.com/bumptech/glide)
22 | - [Android-skin-support](https://github.com/ximsfei/Android-skin-support)
23 | - [ARouter](https://github.com/alibaba/ARouter)
24 | - [booster](https://github.com/didi/booster)
25 | - [Retrofit](http://square.github.io/retrofit/)
26 | - kotlin以及协程
27 | - [CardView](https://developer.android.com/reference/android/support/v7/widget/CardView.html)
28 | - [banner](https://github.com/youth5201314/banner)
29 | - ...
30 |
31 |
32 |
33 | ### 其他技术点
34 |
35 | - MVVM
36 | - kotlin高阶函数与拓展函数封装
37 | - 网络框架封装
38 | - flow
39 | - ...
40 |
41 | ## 项目架构
42 | 
43 |
44 | ## 项目截图
45 | |  |  |  |  |
46 | | --- | --- | --- | --- |
47 | |  |  |  | |
48 |
49 | ## 版本更新和TODO
50 |
51 |
52 | ### 版本迭代
53 |
54 | #### 1.0.0
55 |
56 | > - 首页文章、banner
57 | > - 文章搜索
58 | > - 问答列表
59 | > - 体系、导航列表
60 | > - 个人中心、注册登录
61 | > - 收藏点赞
62 | > - Maven查询
63 | > - 广场
64 | > - 换肤功能
65 |
66 | ### TODO
67 | - [x] 换肤功能
68 | - [ ] 积分榜单
69 | - [ ] Compose试验
70 | - [ ] 体验优化
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------