├── .gitignore ├── .gradle ├── 6.1.1 │ ├── executionHistory │ │ ├── executionHistory.bin │ │ └── executionHistory.lock │ ├── fileChanges │ │ └── last-build.bin │ ├── fileContent │ │ └── fileContent.lock │ ├── fileHashes │ │ ├── fileHashes.bin │ │ ├── fileHashes.lock │ │ └── resourceHashesCache.bin │ ├── gc.properties │ └── javaCompile │ │ ├── classAnalysis.bin │ │ ├── jarAnalysis.bin │ │ ├── javaCompile.lock │ │ └── taskHistory.bin ├── buildOutputCleanup │ ├── buildOutputCleanup.lock │ ├── cache.properties │ └── outputFiles.bin ├── checksums │ └── checksums.lock └── vcs-1 │ └── gc.properties ├── .idea ├── .name ├── assetWizardSettings.xml ├── caches │ └── build_file_checksums.ser ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml ├── jarRepositories.xml ├── libraries │ ├── Gradle__androidx_activity_activity_1_0_0_aar.xml │ ├── Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml │ ├── Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml │ ├── Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml │ ├── Gradle__androidx_arch_core_core_common_2_1_0.xml │ ├── Gradle__androidx_arch_core_core_runtime_2_0_1_aar.xml │ ├── Gradle__androidx_cardview_cardview_1_0_0_aar.xml │ ├── Gradle__androidx_collection_collection_1_1_0.xml │ ├── Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml │ ├── Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml │ ├── Gradle__androidx_customview_customview_1_0_0_aar.xml │ ├── Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml │ ├── Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml │ ├── Gradle__androidx_fragment_fragment_1_1_0_aar.xml │ ├── Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml │ ├── Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml │ ├── Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml │ ├── Gradle__androidx_loader_loader_1_0_0_aar.xml │ ├── Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml │ ├── Gradle__androidx_print_print_1_0_0_aar.xml │ ├── Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml │ ├── Gradle__androidx_room_room_common_2_2_5.xml │ ├── Gradle__androidx_room_room_ktx_2_2_5_aar.xml │ ├── Gradle__androidx_room_room_runtime_2_2_5_aar.xml │ ├── Gradle__androidx_room_room_rxjava2_2_2_5_aar.xml │ ├── Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml │ ├── Gradle__androidx_sqlite_sqlite_2_0_1_aar.xml │ ├── Gradle__androidx_sqlite_sqlite_framework_2_0_1_aar.xml │ ├── Gradle__androidx_transition_transition_1_2_0_aar.xml │ ├── Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml │ ├── Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml │ ├── Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml │ ├── Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml │ ├── Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml │ ├── Gradle__cn_jzvd_jiaozivideoplayer_6_2_12_aar.xml │ ├── Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_3_0_4_aar.xml │ ├── Gradle__com_github_donkingliang_LabelsView_1_4_0_aar.xml │ ├── Gradle__com_google_android_material_material_1_2_1_aar.xml │ ├── Gradle__com_tencent_bugly_crashreport_upgrade_1_4_5_aar.xml │ ├── Gradle__com_tencent_bugly_nativecrashreport_3_7_1_aar.xml │ ├── Gradle__com_tencent_tbs_tbssdk_sdk_43939_aar.xml │ ├── Gradle__com_umeng_umsdk_analytics_8_1_3.xml │ ├── Gradle__com_umeng_umsdk_common_2_1_0.xml │ ├── Gradle__io_reactivex_rxjava2_rxandroid_2_1_1_aar.xml │ ├── Gradle__io_reactivex_rxjava2_rxjava_2_2_17.xml │ ├── Gradle__org_hamcrest_hamcrest_core_1_3.xml │ ├── Gradle__org_jetbrains_annotations_13_0.xml │ ├── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_3_0.xml │ ├── Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_1_3_0.xml │ └── Gradle__org_reactivestreams_reactive_streams_1_0_3.xml ├── misc.xml ├── modules.xml ├── modules │ ├── app │ │ ├── app.iml │ │ └── wanandroid.app.iml │ ├── baselib │ │ ├── baselib.iml │ │ └── wanandroid.baselib.iml │ └── wanandroid.iml ├── runConfigurations.xml ├── vcs.xml └── workspace.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── gradle.properties ├── proguard-rules.pro ├── src │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── fengyongge │ │ │ └── wanandroidclient │ │ │ └── ExampleInstrumentedTest.kt │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── privacy_policy.html │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ │ └── com │ │ │ │ └── fengyongge │ │ │ │ └── wanandroidclient │ │ │ │ ├── App.kt │ │ │ │ ├── activity │ │ │ │ ├── AboutActivity.kt │ │ │ │ ├── ArticleSearchActivity.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── MyCollectArticleActivity.kt │ │ │ │ ├── MyShareActivity.kt │ │ │ │ ├── OpenEyeDetailActivity.kt │ │ │ │ ├── OpenSourceActivity.kt │ │ │ │ ├── SettingActivity.kt │ │ │ │ ├── ShareProjectActivity.kt │ │ │ │ ├── SplishActivity.kt │ │ │ │ ├── WebViewActivity.kt │ │ │ │ ├── WxAccountSearchActivity.kt │ │ │ │ └── channel │ │ │ │ │ ├── ProjectActivity.kt │ │ │ │ │ ├── QuestionAnswerActivity.kt │ │ │ │ │ ├── SystemActivity.kt │ │ │ │ │ └── SystemArticleActivity.kt │ │ │ │ ├── api │ │ │ │ ├── WanAndroidRetrofit.kt │ │ │ │ └── WanandroidApi.kt │ │ │ │ ├── bean │ │ │ │ ├── ArticleBean.kt │ │ │ │ ├── BannerBean.kt │ │ │ │ ├── HotKeyBeanItem.kt │ │ │ │ ├── MyCollectBean.kt │ │ │ │ ├── MyShareBean.kt │ │ │ │ ├── NavigationBean.kt │ │ │ │ ├── OpenSourceBean.kt │ │ │ │ ├── ProjectBean.kt │ │ │ │ ├── ProjectTypeBean.kt │ │ │ │ ├── QuestionAnswerBean.kt │ │ │ │ ├── SearchContentBean.kt │ │ │ │ ├── SquareBean.kt │ │ │ │ ├── SystemArticleBean.kt │ │ │ │ ├── SystemCategoryBean.kt │ │ │ │ ├── UserInforBean.kt │ │ │ │ ├── WxAccountBean.kt │ │ │ │ ├── WxAccountSearchBean.kt │ │ │ │ ├── WxHistoryBean.kt │ │ │ │ ├── WxSearchBean.kt │ │ │ │ └── openeye │ │ │ │ │ ├── OpenEyeCusBean.kt │ │ │ │ │ ├── OpenEyeCusDetailBean.kt │ │ │ │ │ ├── OpenEyeDailyBean.kt │ │ │ │ │ ├── OpenEyeRelateCommentBean.kt │ │ │ │ │ └── OpenEyeRelateVideoBean.kt │ │ │ │ ├── common │ │ │ │ ├── db │ │ │ │ │ ├── AppDatabase.kt │ │ │ │ │ ├── SearchHistoryDao.kt │ │ │ │ │ └── SearchHistoryEntity.kt │ │ │ │ ├── dialog │ │ │ │ │ ├── AgreementDialog.kt │ │ │ │ │ └── BaseDialog.kt │ │ │ │ └── view │ │ │ │ │ ├── MyViewPager.kt │ │ │ │ │ ├── MyX5WebView.kt │ │ │ │ │ └── ProgressWebView.kt │ │ │ │ ├── fragment │ │ │ │ ├── BannerFragment.kt │ │ │ │ ├── HomePageChannelFragment.kt │ │ │ │ ├── HomePageFragment.kt │ │ │ │ ├── MyFragment.kt │ │ │ │ ├── NavigationFragment.kt │ │ │ │ ├── OpenEyeFragment.kt │ │ │ │ ├── ProjectItemFragment.kt │ │ │ │ ├── SquareFragement.kt │ │ │ │ ├── SystemFragment.kt │ │ │ │ └── WxAccountFragment.kt │ │ │ │ └── mvp │ │ │ │ ├── contract │ │ │ │ ├── HomePageContract.kt │ │ │ │ ├── MyCollectContact.kt │ │ │ │ ├── NavigationContact.kt │ │ │ │ ├── OpenEyeContract.kt │ │ │ │ ├── ProjectContract.kt │ │ │ │ ├── QuestionAnswerContact.kt │ │ │ │ ├── SearchContact.kt │ │ │ │ ├── SettingContract.kt │ │ │ │ ├── ShareContract.kt │ │ │ │ ├── SquareContract.kt │ │ │ │ ├── SystemContact.kt │ │ │ │ ├── UserInforContact.kt │ │ │ │ └── WxAccountContact.kt │ │ │ │ ├── modelImpl │ │ │ │ ├── HomePageModelImpl.kt │ │ │ │ ├── MyCollectModelImpl.kt │ │ │ │ ├── NavigationModelImpl.kt │ │ │ │ ├── OpenEeyModelImpl.kt │ │ │ │ ├── ProjectModelImpl.kt │ │ │ │ ├── QuestionAnswerModelImpl.kt │ │ │ │ ├── SearchModelImpl.kt │ │ │ │ ├── SettingModelImpl.kt │ │ │ │ ├── ShareModelImpl.kt │ │ │ │ ├── SquareModelImpl.kt │ │ │ │ ├── SystemModelImpl.kt │ │ │ │ ├── UserInforModelImpl.kt │ │ │ │ └── WxAccountModelmpl.kt │ │ │ │ └── presenterImpl │ │ │ │ ├── HomePagePresenterImpl.kt │ │ │ │ ├── MyCollectPresenterImpl.kt │ │ │ │ ├── NavigationPresenterImpl.kt │ │ │ │ ├── OpenEysPresenterImpl.kt │ │ │ │ ├── ProjectPresenterImpl.kt │ │ │ │ ├── QuestionAnswerPresenterImpl.kt │ │ │ │ ├── SearchPresenterImpl.kt │ │ │ │ ├── SettingPreseenterImpl.kt │ │ │ │ ├── SharePresenterImpl.kt │ │ │ │ ├── SquarePresenterImpl.kt │ │ │ │ ├── SystemPresenterImpl.kt │ │ │ │ ├── UserInforPresenterImpl.kt │ │ │ │ └── WxAccountPresenterImpl.kt │ │ └── res │ │ │ ├── color │ │ │ ├── selector_bottom_title.xml │ │ │ ├── selector_homepage_tab_title.xml │ │ │ ├── selector_label_blue.xml │ │ │ └── selector_label_gray.xml │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable-xhdpi │ │ │ ├── channel_girl.png │ │ │ ├── channel_interview.png │ │ │ ├── channel_project.png │ │ │ ├── channel_question.png │ │ │ ├── channel_system.png │ │ │ ├── default_openeye_user.png │ │ │ ├── default_project_img.jpg │ │ │ ├── icon_delete.png │ │ │ ├── icon_pwd_hide.png │ │ │ ├── icon_pwd_show.png │ │ │ └── update_title_image.png │ │ │ ├── drawable │ │ │ ├── common_load_progress.xml │ │ │ ├── common_load_progress_bg.xml │ │ │ ├── common_search_bg.xml │ │ │ ├── ic_account.xml │ │ │ ├── ic_arrow_right.xml │ │ │ ├── ic_close.xml │ │ │ ├── ic_collect.xml │ │ │ ├── ic_collect_fill.xml │ │ │ ├── ic_default_user_blue.xml │ │ │ ├── ic_default_user_gray.xml │ │ │ ├── ic_garbage.xml │ │ │ ├── ic_homepage.xml │ │ │ ├── ic_homepage_fill.xml │ │ │ ├── ic_hot.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── ic_like.xml │ │ │ ├── ic_like_fill.xml │ │ │ ├── ic_my.xml │ │ │ ├── ic_my_fill.xml │ │ │ ├── ic_openeye.xml │ │ │ ├── ic_openeye_fill.xml │ │ │ ├── ic_rank.xml │ │ │ ├── ic_search.xml │ │ │ ├── ic_search_blue.xml │ │ │ ├── ic_share.xml │ │ │ ├── ic_square.xml │ │ │ ├── ic_square_fill.xml │ │ │ ├── ic_toshare.xml │ │ │ ├── ic_up_arrow.xml │ │ │ ├── ic_wxaccount.xml │ │ │ ├── ic_wxaccount_fill.xml │ │ │ ├── label_tag_blue.xml │ │ │ ├── label_tag_gray.xml │ │ │ ├── layer_progress.xml │ │ │ ├── layerlist_tab_bg.xml │ │ │ ├── main_shape_button_bg.xml │ │ │ ├── selector_collect.xml │ │ │ ├── shape_agreement_bg.xml │ │ │ ├── shape_article_tab_blue_bg.xml │ │ │ ├── shape_article_tab_red_bg.xml │ │ │ ├── shape_button_bg.xml │ │ │ ├── shape_common_title_bg.xml │ │ │ ├── shape_openeye_default_bg.xml │ │ │ ├── shape_openeye_time_bg.xml │ │ │ ├── shape_tab_bg.xml │ │ │ ├── shape_update_bg.xml │ │ │ ├── shape_update_blue.xml │ │ │ └── shape_update_gray.xml │ │ │ ├── layout │ │ │ ├── activity_about.xml │ │ │ ├── activity_article_detail.xml │ │ │ ├── activity_article_search.xml │ │ │ ├── activity_article_search_homepage.xml │ │ │ ├── activity_bottom_customview.xml │ │ │ ├── activity_collect_article.xml │ │ │ ├── activity_common_search_title.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_my_share.xml │ │ │ ├── activity_navigation.xml │ │ │ ├── activity_open_eye_detail.xml │ │ │ ├── activity_open_eye_detail_header.xml │ │ │ ├── activity_open_source.xml │ │ │ ├── activity_project.xml │ │ │ ├── activity_question_answer.xml │ │ │ ├── activity_setting.xml │ │ │ ├── activity_share_project.xml │ │ │ ├── activity_splish.xml │ │ │ ├── activity_system.xml │ │ │ ├── activity_system_article.xml │ │ │ ├── activity_test_item.xml │ │ │ ├── activity_wx_account_search.xml │ │ │ ├── common_homepage_title.xml │ │ │ ├── common_homepage_title_header.xml │ │ │ ├── common_toolbar.xml │ │ │ ├── dialog_agreement.xml │ │ │ ├── dialog_customer_update.xml │ │ │ ├── fragment_banner.xml │ │ │ ├── fragment_homepage.xml │ │ │ ├── fragment_homepage_header.xml │ │ │ ├── fragment_homepage_header_banner.xml │ │ │ ├── fragment_homepage_header_channel.xml │ │ │ ├── fragment_my.xml │ │ │ ├── fragment_navigation.xml │ │ │ ├── fragment_openeye.xml │ │ │ ├── fragment_project.xml │ │ │ ├── fragment_project_item.xml │ │ │ ├── fragment_project_item_item.xml │ │ │ ├── fragment_project_title.xml │ │ │ ├── fragment_square.xml │ │ │ ├── fragment_system.xml │ │ │ ├── fragment_wxaccount.xml │ │ │ ├── fragment_wxaccountitem.xml │ │ │ ├── item_activity_article_search.xml │ │ │ ├── item_activity_collect_article.xml │ │ │ ├── item_activity_my_share.xml │ │ │ ├── item_activity_navigation.xml │ │ │ ├── item_activity_navigation_article.xml │ │ │ ├── item_activity_navigation_category.xml │ │ │ ├── item_activity_open_eye_detail_related_comment.xml │ │ │ ├── item_activity_open_eye_detail_related_comment_des.xml │ │ │ ├── item_activity_open_eye_detail_related_rideo.xml │ │ │ ├── item_activity_open_source.xml │ │ │ ├── item_activity_question_answer.xml │ │ │ ├── item_activity_system.xml │ │ │ ├── item_activity_system_article.xml │ │ │ ├── item_activity_wxaccount.xml │ │ │ ├── item_activity_wxhistory.xml │ │ │ ├── item_followcard_fragment_openeye.xml │ │ │ ├── item_fragment_homepage_article.xml │ │ │ ├── item_fragment_homepage_header_banner.xml │ │ │ ├── item_fragment_homepage_project.xml │ │ │ ├── item_fragment_square.xml │ │ │ ├── item_fragment_wxaccount_category.xml │ │ │ ├── item_fragment_wxaccount_content.xml │ │ │ ├── item_picturefollowcard_fragment_openeye.xml │ │ │ └── item_textcard_fragment_openeye.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── network_security_config.xml │ └── test │ │ └── java │ │ └── com │ │ └── fengyongge │ │ └── wanandroidclient │ │ └── ExampleUnitTest.kt └── wanandroid.jks ├── basecomponent ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── fengyongge │ └── basecomponent │ ├── app │ └── BaseApplication.kt │ ├── bean │ └── LogoutUpdateBean.kt │ ├── constant │ ├── Const.kt │ └── RouterManageConst.kt │ ├── interceptor │ ├── AddCookiesInterceptor.kt │ ├── HeaderInterceptor.kt │ └── SaveCookiesInterceptor.kt │ └── utils │ └── RxNotify.kt ├── baseframework ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── zzti │ │ └── baseframework │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── fengyongge │ │ └── baseframework │ │ ├── BaseActivity.kt │ │ ├── BaseFragment.kt │ │ └── mvp │ │ ├── BaseMvpActivity.kt │ │ ├── BaseMvpFragment.kt │ │ ├── BasePresenter.kt │ │ ├── IBasePresenter.kt │ │ └── IBaseView.kt │ └── test │ └── java │ └── com │ └── zzti │ └── baseframework │ └── ExampleUnitTest.java ├── baselib ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── cn │ │ └── lejiayuan │ │ └── baselib │ │ └── ExampleInstrumentedTest.kt │ ├── main │ └── AndroidManifest.xml │ └── test │ └── java │ └── cn │ └── lejiayuan │ └── baselib │ └── ExampleUnitTest.kt ├── baseresource ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── zzti │ │ └── baseresource │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ └── res │ │ ├── drawable │ │ ├── common_shape_image_default_bg.xml │ │ ├── ic_back.xml │ │ └── ic_empty.xml │ │ ├── layout │ │ ├── activity_common_empty.xml │ │ └── common_title.xml │ │ └── values │ │ └── colors.xml │ └── test │ └── java │ └── com │ └── zzti │ └── baseresource │ └── ExampleUnitTest.java ├── build.gradle ├── component-plugin ├── .gitignore ├── build.gradle └── src │ └── main │ ├── groovy │ └── com │ │ └── fengyongge │ │ └── plugin │ │ ├── ComBuild.groovy │ │ ├── ComCodeTransform.groovy │ │ ├── ConvertUtils.groovy │ │ └── exten │ │ └── ComExtension.groovy │ └── resources │ └── META-INF │ └── gradle-plugins │ └── com.fengyongge.plugin.properties ├── config.gradle ├── doc ├── architecture.md └── updateLog.md ├── gankcomponent ├── .gitignore ├── build.gradle ├── gradle.properties ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ ├── com │ │ └── fengyongge │ │ │ └── gank │ │ │ ├── MainActivity.kt │ │ │ ├── activity │ │ │ └── GirlActivity.kt │ │ │ ├── api │ │ │ ├── GankApi.kt │ │ │ └── GankRetrofit.kt │ │ │ ├── bean │ │ │ └── GankGirlBean.kt │ │ │ ├── mvp │ │ │ ├── contract │ │ │ │ └── GirlContract.kt │ │ │ ├── model │ │ │ │ └── GirlModelImpl.kt │ │ │ └── presenterImpl │ │ │ │ └── GirlPresenterImpl.kt │ │ │ └── view │ │ │ └── ScaleImageView.kt │ └── runalone │ │ └── GankApp.kt │ ├── res │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ ├── drawable │ │ └── ic_launcher_background.xml │ ├── layout │ │ ├── gank_activity_girl.xml │ │ ├── gank_activity_main.xml │ │ └── gank_item_activity_girl.xml │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── values-night │ │ └── themes.xml │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── xml │ │ └── network_security_config.xml │ └── runalone │ ├── AndroidManifest.xml │ └── java │ └── com │ └── fengyongge │ └── gank │ └── runalone │ └── application │ └── App.java ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── local.properties ├── logincomponent ├── .gitignore ├── build.gradle ├── gradle.properties ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── fengyongge │ │ └── login │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ ├── com │ │ │ └── fengyongge │ │ │ │ └── login │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── activity │ │ │ │ ├── LoginActivity.kt │ │ │ │ └── RegisterActivity.kt │ │ │ │ ├── api │ │ │ │ ├── LoginApi.kt │ │ │ │ └── LoginRetrofit.kt │ │ │ │ ├── bean │ │ │ │ ├── LoginBean.kt │ │ │ │ └── RegisterBean.kt │ │ │ │ ├── mvp │ │ │ │ ├── contract │ │ │ │ │ └── LoginContact.kt │ │ │ │ ├── model │ │ │ │ │ └── LoginModelImpl.kt │ │ │ │ └── presenterImpl │ │ │ │ │ └── LoginPresenterImpl.kt │ │ │ │ └── view │ │ │ │ └── ClearEditText.kt │ │ └── runalone │ │ │ └── LoginApp.kt │ ├── res │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ ├── drawable-xhdpi │ │ │ ├── channel_girl.png │ │ │ ├── channel_interview.png │ │ │ ├── channel_project.png │ │ │ ├── channel_question.png │ │ │ ├── channel_system.png │ │ │ ├── default_openeye_user.png │ │ │ ├── default_project_img.jpg │ │ │ ├── icon_delete.png │ │ │ ├── icon_pwd_hide.png │ │ │ ├── icon_pwd_show.png │ │ │ └── update_title_image.png │ │ ├── drawable │ │ │ ├── ic_launcher_background.xml │ │ │ └── login_shape_button_bg.xml │ │ ├── layout │ │ │ ├── activity_login.xml │ │ │ ├── activity_main.xml │ │ │ └── activity_register.xml │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── values-night │ │ │ └── themes.xml │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ └── runalone │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── fengyongge │ │ └── login │ │ └── runalone │ │ └── application │ │ └── App.kt │ └── test │ └── java │ └── com │ └── fengyongge │ └── login │ └── ExampleUnitTest.kt ├── repo └── com │ └── fengyongge │ └── plugin │ └── comgradle │ ├── 1.0.0 │ ├── comgradle-1.0.0.jar │ ├── comgradle-1.0.0.jar.md5 │ ├── comgradle-1.0.0.jar.sha1 │ ├── comgradle-1.0.0.pom │ ├── comgradle-1.0.0.pom.md5 │ └── comgradle-1.0.0.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 ├── settings.gradle └── snapshot ├── 202001.png ├── 202002.png ├── 202003.png ├── 202004.png ├── 202005.png ├── 202006.png ├── 202007.png ├── 202008.png ├── 202009.png ├── 202010.png ├── 202011.png ├── 202012.png ├── 202013.png ├── 202014.png └── 202015.png /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | misc.xml 10 | build 11 | modules.xml 12 | .idea 13 | -------------------------------------------------------------------------------- /.gradle/6.1.1/executionHistory/executionHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/executionHistory/executionHistory.bin -------------------------------------------------------------------------------- /.gradle/6.1.1/executionHistory/executionHistory.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/executionHistory/executionHistory.lock -------------------------------------------------------------------------------- /.gradle/6.1.1/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gradle/6.1.1/fileContent/fileContent.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/fileContent/fileContent.lock -------------------------------------------------------------------------------- /.gradle/6.1.1/fileHashes/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/fileHashes/fileHashes.bin -------------------------------------------------------------------------------- /.gradle/6.1.1/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /.gradle/6.1.1/fileHashes/resourceHashesCache.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/fileHashes/resourceHashesCache.bin -------------------------------------------------------------------------------- /.gradle/6.1.1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/gc.properties -------------------------------------------------------------------------------- /.gradle/6.1.1/javaCompile/classAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/javaCompile/classAnalysis.bin -------------------------------------------------------------------------------- /.gradle/6.1.1/javaCompile/jarAnalysis.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/javaCompile/jarAnalysis.bin -------------------------------------------------------------------------------- /.gradle/6.1.1/javaCompile/javaCompile.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/javaCompile/javaCompile.lock -------------------------------------------------------------------------------- /.gradle/6.1.1/javaCompile/taskHistory.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/6.1.1/javaCompile/taskHistory.bin -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Thu Oct 15 18:35:39 CST 2020 2 | gradle.version=6.1.1 3 | -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/outputFiles.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/buildOutputCleanup/outputFiles.bin -------------------------------------------------------------------------------- /.gradle/checksums/checksums.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/checksums/checksums.lock -------------------------------------------------------------------------------- /.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | wanandroid -------------------------------------------------------------------------------- /.idea/assetWizardSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 31 | 32 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_activity_activity_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_arch_core_core_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_cardview_cardview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_collection_collection_1_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_fragment_fragment_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_room_room_common_2_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_room_room_ktx_2_2_5_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_room_room_runtime_2_2_5_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_room_room_rxjava2_2_2_5_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_sqlite_sqlite_2_0_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_sqlite_sqlite_framework_2_0_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_transition_transition_1_2_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__cn_jzvd_jiaozivideoplayer_6_2_12_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_3_0_4_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_github_donkingliang_LabelsView_1_4_0_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_google_android_material_material_1_2_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_tencent_bugly_crashreport_upgrade_1_4_5_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_tencent_bugly_nativecrashreport_3_7_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_umeng_umsdk_analytics_8_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__com_umeng_umsdk_common_2_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_1_1_aar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_2_17.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_android_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_jetbrains_kotlinx_kotlinx_coroutines_core_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 14 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/modules/wanandroid.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | misc.xml 10 | build 11 | modules.xml 12 | .idea 13 | -------------------------------------------------------------------------------- /app/gradle.properties: -------------------------------------------------------------------------------- 1 | #isRunAlone=true 2 | #debugComponent = gankcomponent,logincomponent,test 3 | #compileComponent = gankcomponent,logincomponent,test 4 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/fengyongge/wanandroidclient/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.lejiayuan.wanandroid", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/activity/SplishActivity.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.activity 2 | 3 | import android.content.Intent 4 | import com.fengyongge.baseframework.BaseActivity 5 | import com.fengyongge.wanandroidclient.R 6 | 7 | /** 8 | * describe 9 | * 10 | * @author fengyongge(fengyongge98@gmail.com) 11 | * @version V1.0 12 | * @date 2020/09/08 13 | */ 14 | class SplishActivity : com.fengyongge.baseframework.BaseActivity() { 15 | override fun initLayout(): Int { 16 | return R.layout.activity_splish 17 | } 18 | 19 | override fun initView() { 20 | startActivity(Intent(SplishActivity@this,MainActivity::class.java)) 21 | } 22 | 23 | override fun initData() { 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/BannerBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | import android.os.Parcelable 4 | import kotlinx.android.parcel.Parcelize 5 | 6 | @Parcelize 7 | data class BannerBean( 8 | val desc: String, 9 | val id: Int, 10 | val imagePath: String, 11 | val isVisible: Int, 12 | val order: Int, 13 | val title: String, 14 | val type: Int, 15 | val url: String 16 | ): Parcelable -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/HotKeyBeanItem.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | data class HotKeyBeanItem( 4 | val id: Int, 5 | val link: String, 6 | val name: String, 7 | val order: Int, 8 | val visible: Int 9 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/MyCollectBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | data class MyCollectBean( 4 | val curPage: Int, 5 | val datas: List, 6 | val offset: Int, 7 | val over: Boolean, 8 | val pageCount: Int, 9 | val size: Int, 10 | val total: Int 11 | ) 12 | 13 | data class CollectDataItem( 14 | val author: String, 15 | val chapterId: Int, 16 | val chapterName: String, 17 | val courseId: Int, 18 | val desc: String, 19 | val envelopePic: String, 20 | val id: Int, 21 | val link: String, 22 | val niceDate: String, 23 | val origin: String, 24 | val originId: Int, 25 | val publishTime: Long, 26 | val title: String, 27 | val userId: Int, 28 | val visible: Int, 29 | val zan: Int 30 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/NavigationBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | data class NavigationBean( 4 | val articles: List
, 5 | val cid: Int, 6 | val name: String 7 | ) 8 | 9 | data class Article( 10 | val apkLink: String, 11 | val audit: Int, 12 | val author: String, 13 | val canEdit: Boolean, 14 | val chapterId: Int, 15 | val chapterName: String, 16 | val collect: Boolean, 17 | val courseId: Int, 18 | val desc: String, 19 | val descMd: String, 20 | val envelopePic: String, 21 | val fresh: Boolean, 22 | val id: Int, 23 | val link: String, 24 | val niceDate: String, 25 | val niceShareDate: String, 26 | val origin: String, 27 | val prefix: String, 28 | val projectLink: String, 29 | val publishTime: Long, 30 | val realSuperChapterId: Int, 31 | val selfVisible: Int, 32 | val shareDate: Any, 33 | val shareUser: String, 34 | val superChapterId: Int, 35 | val superChapterName: String, 36 | val tags: List, 37 | val title: String, 38 | val type: Int, 39 | val userId: Int, 40 | val visible: Int, 41 | val zan: Int 42 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/OpenSourceBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | 4 | data class OpenSourceBean(var name: String,var author: String,var des: String,var linkUrl: String) 5 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/ProjectTypeBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | 4 | data class ProjectTypeBeanItem( 5 | val children: List, 6 | val courseId: Int, 7 | val id: Int, 8 | val name: String, 9 | val order: Int, 10 | val parentChapterId: Int, 11 | val userControlSetTop: Boolean, 12 | val visible: Int 13 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/SystemCategoryBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | data class SystemCategoryBean( 4 | val children: List, 5 | val courseId: Int, 6 | val id: Int, 7 | val name: String, 8 | val order: Int, 9 | val parentChapterId: Int, 10 | val userControlSetTop: Boolean, 11 | val visible: Int 12 | ) 13 | 14 | data class Children( 15 | val children: List, 16 | val courseId: Int, 17 | val id: Int, 18 | val name: String, 19 | val order: Int, 20 | val parentChapterId: Int, 21 | val userControlSetTop: Boolean, 22 | val visible: Int 23 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/UserInforBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | data class UserInforBean( 4 | val coinCount: Int, 5 | val level: Int, 6 | val rank: String, 7 | val userId: Int, 8 | val username: String 9 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/WxAccountBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | class WxAccountBean : ArrayList() 4 | 5 | data class WxAccountBeanItem( 6 | val children: List, 7 | val courseId: Int, 8 | val id: Int, 9 | val name: String, 10 | val order: Int, 11 | val parentChapterId: Int, 12 | val userControlSetTop: Boolean, 13 | val visible: Int, 14 | var choose: Boolean 15 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/WxSearchBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean 2 | 3 | class WxSearchBean { 4 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/openeye/OpenEyeCusBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean.openeye 2 | 3 | import android.os.Parcelable 4 | import kotlinx.android.parcel.Parcelize 5 | 6 | @Parcelize 7 | class OpenEyeCusBean(var title: String,var des: String,var playUrl: String,var id: String,var coverImage: String,var tag: String) : Parcelable 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/bean/openeye/OpenEyeCusDetailBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.bean.openeye 2 | 3 | import android.os.Parcelable 4 | import com.chad.library.adapter.base.entity.MultiItemEntity 5 | import kotlinx.android.parcel.Parcelize 6 | 7 | @Parcelize 8 | class OpenEyeDetailBean(override val itemType: Int) : MultiItemEntity, Parcelable { 9 | lateinit var video: Video 10 | lateinit var comment: Comment 11 | lateinit var commentDes: String 12 | companion object { 13 | const val TYPE_ONE = 1 14 | const val TYPE_TWO = 2 15 | const val TYPE_THREE = 3 16 | } 17 | } 18 | 19 | 20 | @Parcelize 21 | class Video( 22 | var id: Int, 23 | var description: String, 24 | var title: String, 25 | var category: String, 26 | var coverImage: String, 27 | var duration: Int, 28 | var playUrl: String 29 | ) : Parcelable 30 | 31 | @Parcelize 32 | class Comment( 33 | var nickname: String, 34 | var avatar: String, 35 | var message: String, 36 | var createTime: Long 37 | ) : Parcelable 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/common/db/AppDatabase.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.common.db 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 = [SearchHistoryEntity::class], version = 1) 9 | abstract class AppDataBase : RoomDatabase() { 10 | 11 | abstract fun serchHistoryDao(): SearchHistoryDao 12 | 13 | companion object { 14 | private var instance: AppDataBase ?=null 15 | 16 | fun getInstance(context: Context): AppDataBase { 17 | if (instance == null) { 18 | synchronized(AppDataBase::class.java) { 19 | if(instance == null){ 20 | instance = Room.databaseBuilder( 21 | context, 22 | AppDataBase::class.java, 23 | "app_db" 24 | ) 25 | .allowMainThreadQueries() 26 | .build() 27 | } 28 | } 29 | } 30 | return instance!! 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/common/db/SearchHistoryDao.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.common.db 2 | 3 | import androidx.room.* 4 | 5 | @Dao 6 | interface SearchHistoryDao { 7 | 8 | 9 | @Query("SELECT * FROM searchHistoryEntity order by uid desc") 10 | fun getSearchContent(): MutableList 11 | 12 | @Query("SELECT * FROM searchHistoryEntity where uid=:id") 13 | fun getSearchContentById(id: Int): SearchHistoryEntity 14 | 15 | @Insert 16 | fun insertSearchContent(searchHistoryEntity: SearchHistoryEntity):Long 17 | 18 | @Update 19 | fun updateSearchContent(searchHistoryEntity: SearchHistoryEntity):Int 20 | 21 | @Delete() 22 | fun deleteSearchContent(searchHistoryEntity:SearchHistoryEntity):Int 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/common/db/SearchHistoryEntity.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.common.db 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity 8 | data class SearchHistoryEntity( 9 | @PrimaryKey(autoGenerate = true) 10 | val uid: Long, 11 | @ColumnInfo(name = "searchContent") val searchContent: String? 12 | ) -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/common/view/MyViewPager.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.common.view 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.MotionEvent 6 | import androidx.viewpager.widget.ViewPager 7 | /** 8 | * describe 9 | * 输入文本框 右边有自带的删除按钮 当有输入时,显示删除按钮,当无输入时,不显示删除按钮。 10 | * @author fengyongge(fengyongge98@gmail.com) 11 | * @version V1.0 12 | * @date 2020/09/08 13 | */ 14 | class MyViewPager : ViewPager { 15 | var isCanScroll = false 16 | 17 | constructor(context: Context?) : super(context!!) {} 18 | constructor(context: Context?, attrs: AttributeSet?) : super( 19 | context!!, 20 | attrs 21 | ) 22 | override fun onTouchEvent(ev: MotionEvent): Boolean { 23 | return if (isCanScroll) { 24 | super.onTouchEvent(ev) 25 | } else { 26 | false 27 | } 28 | } 29 | 30 | override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { 31 | return if (isCanScroll) { 32 | super.onInterceptTouchEvent(ev) 33 | } else { 34 | false 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/contract/MyCollectContact.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.contract 2 | 3 | import com.fengyongge.baseframework.mvp.IBasePresenter 4 | import com.fengyongge.baseframework.mvp.IBaseView 5 | import com.fengyongge.rxhttp.bean.BaseResponse 6 | import com.fengyongge.rxhttp.exception.ResponseException 7 | import com.fengyongge.wanandroidclient.bean.MyCollectBean 8 | import io.reactivex.Observable 9 | 10 | class MyCollectContact { 11 | 12 | interface Presenter : IBasePresenter { 13 | fun getCollectList(pageNum: Int) 14 | fun postCancleCollect(id: String,originId: Int) 15 | } 16 | 17 | interface Model{ 18 | 19 | fun getCollectList(pageNum: Int): Observable> 20 | fun postCancleCollect(id: String,originId: Int): Observable> 21 | } 22 | 23 | interface View : IBaseView { 24 | fun getCollectListShow(data: BaseResponse) 25 | fun getCollectListFail(data: ResponseException) 26 | fun postCancleCollectShow(data: BaseResponse) 27 | fun postCancleCollectFail(data: ResponseException) 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/contract/NavigationContact.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.contract 2 | 3 | import com.fengyongge.baseframework.mvp.IBasePresenter 4 | import com.fengyongge.baseframework.mvp.IBaseView 5 | import com.fengyongge.rxhttp.bean.BaseResponse 6 | import com.fengyongge.rxhttp.exception.ResponseException 7 | import com.fengyongge.wanandroidclient.bean.NavigationBean 8 | import io.reactivex.Observable 9 | 10 | class NavigationContact { 11 | 12 | interface Presenter : IBasePresenter { 13 | fun getNavigation() 14 | } 15 | 16 | interface Model{ 17 | fun getNavigation(): Observable>> 18 | } 19 | 20 | interface View : IBaseView { 21 | fun getNavigationShow(data: BaseResponse>) 22 | fun onError(data: ResponseException) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/contract/SettingContract.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.contract 2 | 3 | import com.fengyongge.baseframework.mvp.IBaseView 4 | import com.fengyongge.rxhttp.bean.BaseResponse 5 | import com.fengyongge.rxhttp.exception.ResponseException 6 | import io.reactivex.Observable 7 | 8 | class SettingContract { 9 | 10 | interface Presenter{ 11 | fun getLogout() 12 | fun clearCache() 13 | } 14 | 15 | interface Model{ 16 | fun getLogout(): Observable> 17 | } 18 | 19 | interface View : IBaseView{ 20 | fun getLogoutSuccess(data: BaseResponse) 21 | fun getLogoutFail(e: ResponseException) 22 | fun clearCacheSuccess(size: String) 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/contract/UserInforContact.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.contract 2 | 3 | import com.fengyongge.baseframework.mvp.IBasePresenter 4 | import com.fengyongge.baseframework.mvp.IBaseView 5 | import com.fengyongge.rxhttp.bean.BaseResponse 6 | import com.fengyongge.rxhttp.exception.ResponseException 7 | import com.fengyongge.wanandroidclient.bean.UserInforBean 8 | import io.reactivex.Observable 9 | 10 | class UserInforContact { 11 | 12 | interface Presenter : IBasePresenter { 13 | 14 | fun getAccount() 15 | 16 | } 17 | 18 | interface Model{ 19 | 20 | fun getAccount(): Observable> 21 | 22 | } 23 | 24 | interface View : IBaseView { 25 | 26 | fun getAccountShow(data: BaseResponse) 27 | fun onError(data: ResponseException) 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/modelImpl/MyCollectModelImpl.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.modelImpl 2 | 3 | import com.fengyongge.rxhttp.bean.BaseResponse 4 | import com.fengyongge.wanandroidclient.api.WanAndroidRetrofit 5 | import com.fengyongge.wanandroidclient.bean.MyCollectBean 6 | import com.fengyongge.wanandroidclient.mvp.contract.MyCollectContact 7 | import io.reactivex.Observable 8 | import io.reactivex.android.schedulers.AndroidSchedulers 9 | import io.reactivex.schedulers.Schedulers 10 | 11 | class MyCollectModelImpl : MyCollectContact.Model { 12 | 13 | 14 | override fun getCollectList(pageNum: Int): Observable> { 15 | return WanAndroidRetrofit.service 16 | .getCollectList(pageNum) 17 | .subscribeOn(Schedulers.io()) 18 | .observeOn(AndroidSchedulers.mainThread()) 19 | } 20 | 21 | override fun postCancleCollect(id: String,originId: Int): Observable> { 22 | return WanAndroidRetrofit.service 23 | .postCancleMyCollect(id,originId) 24 | .subscribeOn(Schedulers.io()) 25 | .observeOn(AndroidSchedulers.mainThread()) 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/modelImpl/NavigationModelImpl.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.modelImpl 2 | 3 | import com.fengyongge.rxhttp.bean.BaseResponse 4 | import com.fengyongge.wanandroidclient.api.WanAndroidRetrofit 5 | import com.fengyongge.wanandroidclient.bean.NavigationBean 6 | import com.fengyongge.wanandroidclient.mvp.contract.NavigationContact 7 | import io.reactivex.Observable 8 | import io.reactivex.android.schedulers.AndroidSchedulers 9 | import io.reactivex.schedulers.Schedulers 10 | 11 | class NavigationModelImpl : NavigationContact.Model { 12 | override fun getNavigation(): Observable>> { 13 | return WanAndroidRetrofit.service 14 | .getNavigation() 15 | .subscribeOn(Schedulers.io()) 16 | .observeOn(AndroidSchedulers.mainThread()) 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/modelImpl/SettingModelImpl.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.modelImpl 2 | 3 | import com.fengyongge.rxhttp.bean.BaseResponse 4 | import com.fengyongge.wanandroidclient.api.WanAndroidRetrofit 5 | import com.fengyongge.wanandroidclient.mvp.contract.SettingContract 6 | import io.reactivex.Observable 7 | import io.reactivex.android.schedulers.AndroidSchedulers 8 | import io.reactivex.schedulers.Schedulers 9 | 10 | class SettingModelImpl : SettingContract.Model{ 11 | override fun getLogout(): Observable> { 12 | return WanAndroidRetrofit.service 13 | .logout() 14 | .subscribeOn(Schedulers.io()) 15 | .observeOn(AndroidSchedulers.mainThread()) 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/fengyongge/wanandroidclient/mvp/modelImpl/UserInforModelImpl.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient.mvp.modelImpl 2 | 3 | import com.fengyongge.rxhttp.bean.BaseResponse 4 | import com.fengyongge.wanandroidclient.api.WanAndroidRetrofit 5 | import com.fengyongge.wanandroidclient.bean.UserInforBean 6 | import com.fengyongge.wanandroidclient.mvp.contract.UserInforContact 7 | import io.reactivex.Observable 8 | import io.reactivex.android.schedulers.AndroidSchedulers 9 | import io.reactivex.schedulers.Schedulers 10 | 11 | class UserInforModelImpl : UserInforContact.Model { 12 | override fun getAccount(): Observable> { 13 | return WanAndroidRetrofit.service 14 | .getAccount() 15 | .subscribeOn(Schedulers.io()) 16 | .observeOn(AndroidSchedulers.mainThread()) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/res/color/selector_bottom_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/selector_homepage_tab_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/selector_label_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/selector_label_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/channel_girl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/channel_girl.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/channel_interview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/channel_interview.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/channel_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/channel_project.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/channel_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/channel_question.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/channel_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/channel_system.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/default_openeye_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/default_openeye_user.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/default_project_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/default_project_img.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/icon_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/icon_pwd_hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/icon_pwd_hide.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/icon_pwd_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/icon_pwd_show.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/update_title_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/drawable-xhdpi/update_title_image.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/common_load_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/common_load_progress_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/common_search_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_collect.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_collect_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_default_user_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_default_user_gray.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_homepage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_homepage_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_my.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_my_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_toshare.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_up_arrow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/label_tag_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/label_tag_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/layer_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/layerlist_tab_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/main_shape_button_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_collect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_agreement_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_article_tab_blue_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_article_tab_red_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_button_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_common_title_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_openeye_default_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_openeye_time_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_tab_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_update_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_update_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_update_gray.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_article_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 16 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_open_eye_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 16 | 17 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_open_source.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 13 | 14 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_splish.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_test_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 17 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/common_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_banner.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 19 | 20 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_homepage_header_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_homepage_header_channel.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_project.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 17 | 18 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_system.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_wxaccountitem.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 13 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_activity_navigation_article.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_activity_navigation_category.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_activity_open_eye_detail_related_comment_des.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_activity_wxaccount.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_activity_wxhistory.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_fragment_homepage_header_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 23 | 24 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_picturefollowcard_fragment_openeye.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_textcard_fragment_openeye.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #4672ff 4 | #4672ff 5 | #4672ff 6 | #FFFFFFFF 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 玩Android 3 | 4 | 收藏成功 5 | 取消收藏成功 6 | 数据提交中... 7 | 数据加载中... 8 | 搜索内容不能为空 9 | 10 | 软件改变生活 软件创造价值 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/test/java/com/fengyongge/wanandroidclient/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.wanandroidclient 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /app/wanandroid.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/app/wanandroid.jks -------------------------------------------------------------------------------- /basecomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /basecomponent/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/basecomponent/consumer-rules.pro -------------------------------------------------------------------------------- /basecomponent/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 -------------------------------------------------------------------------------- /basecomponent/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /basecomponent/src/main/java/com/fengyongge/basecomponent/app/BaseApplication.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.basecomponent.app 2 | 3 | import android.app.Application 4 | import android.content.Context 5 | 6 | open class BaseApplication: Application() { 7 | 8 | companion object { 9 | private lateinit var context:Context 10 | fun init(context: Context){ 11 | Companion.context = context 12 | } 13 | 14 | fun getAppContext(): Context{ 15 | return context 16 | } 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /basecomponent/src/main/java/com/fengyongge/basecomponent/bean/LogoutUpdateBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.basecomponent.bean 2 | 3 | class LogoutUpdateBean { 4 | var isUpdate: Boolean = false 5 | } -------------------------------------------------------------------------------- /basecomponent/src/main/java/com/fengyongge/basecomponent/constant/Const.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.basecomponent.constant 2 | 3 | class Const { 4 | companion object { 5 | const val PAGE_SIZE_15 = 15 6 | const val PAGE_SIZE = 20 7 | const val URL_GANK = "base_url:gank" 8 | const val URL_OPEN_EYE = "base_url:kaiyanapp" 9 | const val BASE_URL = "https://www.wanandroid.com/" 10 | 11 | const val IS_LOGIN = "IS_LOGIN" 12 | const val COOKIE = "COOKIE" 13 | const val USER_ID = "USER_ID" 14 | const val NICKNAME = "NICK_NAME" 15 | const val ICON = "ICON" 16 | const val UmengKey = "5f881d5b94846f78a9739937" 17 | const val BUGLY_APP_ID = "5a331f52dd" 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /basecomponent/src/main/java/com/fengyongge/basecomponent/constant/RouterManageConst.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.basecomponent.constant 2 | 3 | class RouterManageConst { 4 | 5 | companion object{ 6 | const val APP_HOMEPAGE = "/app/homepage" 7 | const val LOGIN_LOGIN = "/login/login" 8 | const val LOGIN_REGISTER = "/login/register" 9 | const val GANK_GIRL = "/gank/girl" 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /baseframework/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /baseframework/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/baseframework/consumer-rules.pro -------------------------------------------------------------------------------- /baseframework/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 -------------------------------------------------------------------------------- /baseframework/src/androidTest/java/com/zzti/baseframework/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.zzti.baseframework; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("com.zzti.baseframework.test", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /baseframework/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /baseframework/src/main/java/com/fengyongge/baseframework/mvp/BaseMvpActivity.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.baseframework.mvp 2 | 3 | import android.content.Context 4 | import android.os.Bundle 5 | import com.fengyongge.baseframework.BaseActivity 6 | 7 | /** 8 | * describe 9 | * 10 | * @author fengyongge(fengyongge98@gmail.com) 11 | * @version V1.0 12 | * @date 2020/09/08 13 | */ 14 | abstract class BaseMvpActivity

: BaseActivity(),IBaseView{ 15 | 16 | var mPresenter: P ?= null 17 | abstract fun initPresenter(): P 18 | 19 | 20 | override fun onCreate(savedInstanceState: Bundle?) { 21 | mPresenter = initPresenter() 22 | mPresenter!!.attach(this) 23 | super.onCreate(savedInstanceState) 24 | } 25 | 26 | override fun onDestroy() { 27 | mPresenter!!.detech() 28 | mPresenter = null 29 | super.onDestroy() 30 | } 31 | 32 | override fun getCurrentView(): Context? { 33 | return this 34 | } 35 | 36 | 37 | 38 | } -------------------------------------------------------------------------------- /baseframework/src/main/java/com/fengyongge/baseframework/mvp/BasePresenter.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.baseframework.mvp 2 | 3 | /** 4 | * describe 5 | * 6 | * @author fengyongge(fengyongge98@gmail.com) 7 | * @version V1.0 8 | * @date 2020/09/08 9 | */ 10 | abstract class BasePresenter : IBasePresenter { 11 | 12 | protected var mView: V? = null 13 | 14 | override fun attach(view: IBaseView) { 15 | mView = view as V 16 | } 17 | 18 | override fun detech() { 19 | mView = null 20 | } 21 | 22 | 23 | } -------------------------------------------------------------------------------- /baseframework/src/main/java/com/fengyongge/baseframework/mvp/IBasePresenter.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.baseframework.mvp 2 | 3 | /** 4 | * describe 5 | * 6 | * @author fengyongge(fengyongge98@gmail.com) 7 | * @version V1.0 8 | * @date 2020/09/08 9 | */ 10 | interface IBasePresenter { 11 | 12 | open fun attach(V : IBaseView) 13 | 14 | open fun detech() 15 | 16 | } -------------------------------------------------------------------------------- /baseframework/src/main/java/com/fengyongge/baseframework/mvp/IBaseView.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.baseframework.mvp 2 | 3 | import android.content.Context 4 | /** 5 | * describe 6 | * 7 | * @author fengyongge(fengyongge98@gmail.com) 8 | * @version V1.0 9 | * @date 2020/09/08 10 | */ 11 | interface IBaseView { 12 | fun getCurrentView(): Context? 13 | } -------------------------------------------------------------------------------- /baseframework/src/test/java/com/zzti/baseframework/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.zzti.baseframework; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /baselib/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | misc.xml 10 | build 11 | modules.xml 12 | .idea 13 | -------------------------------------------------------------------------------- /baselib/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/baselib/consumer-rules.pro -------------------------------------------------------------------------------- /baselib/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 -------------------------------------------------------------------------------- /baselib/src/androidTest/java/cn/lejiayuan/baselib/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cn.lejiayuan.baselib 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.lejiayuan.baselib.test", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /baselib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /baselib/src/test/java/cn/lejiayuan/baselib/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package cn.lejiayuan.baselib 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /baseresource/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /baseresource/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/baseresource/consumer-rules.pro -------------------------------------------------------------------------------- /baseresource/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 -------------------------------------------------------------------------------- /baseresource/src/androidTest/java/com/zzti/baseresource/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.zzti.baseresource; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | assertEquals("com.zzti.baseresource.test", appContext.getPackageName()); 25 | } 26 | } -------------------------------------------------------------------------------- /baseresource/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /baseresource/src/main/res/drawable/common_shape_image_default_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /baseresource/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /baseresource/src/test/java/com/zzti/baseresource/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.zzti.baseresource; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | ext.kotlin_version = '1.3.72' 4 | apply from: 'config.gradle' 5 | repositories { 6 | google() 7 | jcenter() 8 | maven { url 'https://jitpack.io' } 9 | maven { url 'https://dl.bintray.com/umsdk/release' } 10 | maven { url './repo'} 11 | } 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:4.1.0' 14 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 15 | classpath "com.fengyongge.plugin:comgradle:1.0.0" 16 | 17 | // NOTE: Do not place your application dependencies here; they belong 18 | // in the individual module build.gradle files 19 | } 20 | } 21 | 22 | allprojects { 23 | repositories { 24 | google() 25 | jcenter() 26 | maven { url 'https://jitpack.io' } 27 | maven { url 'https://dl.bintray.com/umsdk/release' } 28 | maven { url './repo'} 29 | } 30 | } 31 | 32 | task clean(type: Delete) { 33 | delete rootProject.buildDir 34 | } -------------------------------------------------------------------------------- /component-plugin/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /component-plugin/src/main/groovy/com/fengyongge/plugin/exten/ComExtension.groovy: -------------------------------------------------------------------------------- 1 | package com.fengyongge.plugin.exten; 2 | 3 | public class ComExtension { 4 | 5 | /** 6 | * 是否自动注册组件,true则会使用字节码插入的方式自动注册代码 7 | * false的话,需要手动使用反射的方式来注册 8 | */ 9 | boolean isRegisterCompoAuto = false; 10 | 11 | /** 12 | * 当前组件的applicationName,用于字节码插入。 13 | * 当isRegisterCompoAuto==true的时候是必须的 14 | */ 15 | String applicationName 16 | 17 | } 18 | -------------------------------------------------------------------------------- /component-plugin/src/main/resources/META-INF/gradle-plugins/com.fengyongge.plugin.properties: -------------------------------------------------------------------------------- 1 | implementation-class=com.fengyongge.plugin.ComBuild -------------------------------------------------------------------------------- /doc/architecture.md: -------------------------------------------------------------------------------- 1 | # 玩Android客户端架构更新日志 2 | ## 玩Android客户端简介 3 | 玩Android客户端,有文章,有美图,有视频,玩中学Android,Android开发不错的选择! 4 | 5 | [开源地址](https://github.com/fengyongge/WanAndroidClient) 6 | 7 | [下载地址](https://www.pgyer.com/lZUG) 8 | 9 | ## v1.1.0(2020/11/24) 10 | ----------------- 11 | 12 | ### 组件化拆分 13 | 14 | - 壳工程 15 | - 业务组件:登录组件、干货组件 16 | - 公共组件:baseframework、basecomponent、baselib、baseresource 17 | - 基础组件:rxhttp、imageloader、commonutils等 18 | 19 | 20 | ## v1.0.0(2020/09/08) 21 | ----------------- 22 | 23 | ### 开发语言使用[kotlin](https://kotlinlang.org/) 24 | 25 | ### 项目整体框架[MVP](https://github.com/android/architecture-samples/tree/todo-mvp) 26 | 27 | ### 应用组件使用[Jetpack](https://developer.android.google.cn/jetpack) 28 | 29 | #### 【Foundation】 30 | 31 | - AppCompat 32 | 33 | - Android KTX 34 | 35 | - multidex 36 | 37 | #### 【Architecture】 38 | 39 | - Room 40 | 41 | #### 【Behavior】 42 | 43 | - Preferences 44 | 45 | - ViewPager2 46 | 47 | #### 【UI】 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /doc/updateLog.md: -------------------------------------------------------------------------------- 1 | # 玩Android客户端更新日志 2 | ## 玩Android客户端简介 3 | 玩Android客户端,有文章,有美图,有视频,玩中学Android,Android开发不错的选择! 4 | [开源地址](https://github.com/fengyongge/WanAndroidClient) 5 | [下载地址](https://www.pgyer.com/lZUG) 6 | 7 | v1.1.0(2020/11/24) 8 | ----------------- 9 | 【新增】组件化拆分 10 | 11 | 12 | v1.0.1(2020/10/26) 13 | ----------------- 14 | 【新增】拆分网络框架、常用工具类 15 | 16 | 【新增】新增网络缓存,优化无网情况用户体验 17 | 18 | ----------------- 19 | 20 | v1.0.0(2020/09/08) 21 | ----------------- 22 | 【新增】基础库搭建 23 | 24 | 【新增】主应用新增首页、公众号、广场、开眼、我的 25 | 26 | 【新增】项目、体系、问答、面试、妹子 -------------------------------------------------------------------------------- /gankcomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /gankcomponent/gradle.properties: -------------------------------------------------------------------------------- 1 | #isRunAlone=true 2 | -------------------------------------------------------------------------------- /gankcomponent/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 -------------------------------------------------------------------------------- /gankcomponent/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.appcompat.app.AppCompatActivity 6 | import com.fengyongge.gank.activity.GirlActivity 7 | import kotlinx.android.synthetic.main.gank_activity_main.* 8 | 9 | class MainActivity : AppCompatActivity() { 10 | override fun onCreate(savedInstanceState: Bundle?) { 11 | super.onCreate(savedInstanceState) 12 | setContentView(R.layout.gank_activity_main) 13 | 14 | tvTest.setOnClickListener { 15 | startActivity(Intent(this,GirlActivity::class.java)) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/api/GankApi.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.api 2 | 3 | import com.fengyongge.basecomponent.constant.Const 4 | import com.fengyongge.gank.bean.GankGirlBean 5 | import io.reactivex.Observable 6 | import retrofit2.http.GET 7 | import retrofit2.http.Headers 8 | import retrofit2.http.Path 9 | 10 | 11 | /** 12 | * describe 13 | * 14 | * @author fengyongge(fengyongge98@gmail.com) 15 | * @version V1.0 16 | * @date 2020/09/08 17 | */ 18 | interface GankApi { 19 | 20 | /** 21 | * 获取妹子数据 22 | */ 23 | @Headers(Const.URL_GANK) 24 | @GET("api/v2/data/category/Girl/type/Girl/page/{pageNum}/count/{pageSize}") 25 | fun getGankGirl(@Path("pageNum")pageNum: Int, @Path("pageSize")pageSize: Int): Observable 26 | 27 | 28 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/api/GankRetrofit.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.api 2 | 3 | import com.fengyongge.rxhttp.core.RetrofitFactory 4 | import com.fengyongge.basecomponent.constant.Const 5 | import com.fengyongge.basecomponent.interceptor.AddCookiesInterceptor 6 | import com.fengyongge.basecomponent.interceptor.HeaderInterceptor 7 | import com.fengyongge.basecomponent.interceptor.SaveCookiesInterceptor 8 | import okhttp3.Interceptor 9 | 10 | /** 11 | * describe 12 | * 13 | * @author fengyongge(fengyongge98@gmail.com) 14 | * @version V1.0 15 | * @date 2020/09/08 16 | */ 17 | object GankRetrofit : RetrofitFactory() { 18 | 19 | override fun baseUrl(): String { 20 | return Const.BASE_URL 21 | } 22 | 23 | override fun getService(): Class { 24 | return GankApi::class.java 25 | } 26 | 27 | override fun getInterceptorList(): MutableList { 28 | var interceptorList = mutableListOf() 29 | interceptorList.add(SaveCookiesInterceptor()) 30 | interceptorList.add(AddCookiesInterceptor()) 31 | interceptorList.add(HeaderInterceptor()) 32 | return interceptorList 33 | } 34 | 35 | 36 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/bean/GankGirlBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.bean 2 | 3 | data class GankGirlBean( 4 | val `data`: List, 5 | val page: Int, 6 | val page_count: Int, 7 | val status: Int, 8 | val total_counts: Int 9 | ) 10 | 11 | data class GirlItemData( 12 | val _id: String, 13 | val author: String, 14 | val category: String, 15 | val createdAt: String, 16 | val desc: String, 17 | val images: List, 18 | val likeCounts: Int, 19 | val publishedAt: String, 20 | val stars: Int, 21 | val title: String, 22 | val type: String, 23 | val url: String, 24 | val views: Int 25 | ) -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/mvp/contract/GirlContract.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.mvp.contract 2 | 3 | import com.fengyongge.baseframework.mvp.IBasePresenter 4 | import com.fengyongge.baseframework.mvp.IBaseView 5 | import com.fengyongge.gank.bean.GankGirlBean 6 | import com.fengyongge.rxhttp.exception.ResponseException 7 | import io.reactivex.Observable 8 | 9 | class GirlContract { 10 | 11 | interface presenter : IBasePresenter{ 12 | 13 | fun getGankGirl(pageNum: Int,pageSize: Int) 14 | } 15 | 16 | interface model { 17 | 18 | fun getGankGirl(pageNum: Int,pageSize: Int): Observable 19 | 20 | } 21 | 22 | interface view : IBaseView{ 23 | fun getGankGirlShow(data: GankGirlBean) 24 | fun getGankGirlFail(data: ResponseException) 25 | fun onError(data: ResponseException) 26 | 27 | } 28 | 29 | 30 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/java/com/fengyongge/gank/mvp/model/GirlModelImpl.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.mvp.model 2 | 3 | import com.fengyongge.gank.api.GankRetrofit 4 | import com.fengyongge.gank.bean.GankGirlBean 5 | import com.fengyongge.gank.mvp.contract.GirlContract 6 | import io.reactivex.Observable 7 | import io.reactivex.android.schedulers.AndroidSchedulers 8 | import io.reactivex.schedulers.Schedulers 9 | 10 | class GirlModelImpl : GirlContract.model { 11 | 12 | override fun getGankGirl(pageNum: Int, pageSize: Int): Observable { 13 | return GankRetrofit.service 14 | .getGankGirl(pageNum,pageSize) 15 | .subscribeOn(Schedulers.io()) 16 | .observeOn(AndroidSchedulers.mainThread()) 17 | } 18 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/java/runalone/GankApp.kt: -------------------------------------------------------------------------------- 1 | package runalone 2 | 3 | import android.content.Context 4 | import androidx.multidex.MultiDex 5 | import com.alibaba.android.arouter.launcher.ARouter 6 | import com.fengyongge.basecomponent.app.BaseApplication 7 | import com.fengyongge.rxhttp.core.RxHttp 8 | 9 | class GankApp: BaseApplication() { 10 | override fun onCreate() { 11 | super.onCreate() 12 | init(this) 13 | RxHttp.init(applicationContext) 14 | ARouter.init(this) 15 | } 16 | 17 | override fun attachBaseContext(base: Context?) { 18 | super.attachBaseContext(base) 19 | MultiDex.install(this) 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /gankcomponent/src/main/res/layout/gank_activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/layout/gank_item_activity_girl.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 15 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gankcomponent/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /gankcomponent/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 干货组件 3 | 4 | 数据提交中... 5 | 数据加载中... 6 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /gankcomponent/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /gankcomponent/src/main/runalone/java/com/fengyongge/gank/runalone/application/App.java: -------------------------------------------------------------------------------- 1 | package com.fengyongge.gank.runalone.application; 2 | 3 | import android.app.Application; 4 | 5 | public class App extends Application { 6 | 7 | @Override 8 | public void onCreate() { 9 | super.onCreate(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Nov 18 18:48:55 CST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 7 | -------------------------------------------------------------------------------- /local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file should *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | sdk.dir=/Users/fengyongge/SDK -------------------------------------------------------------------------------- /logincomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /logincomponent/gradle.properties: -------------------------------------------------------------------------------- 1 | #isRunAlone=true 2 | -------------------------------------------------------------------------------- /logincomponent/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 -------------------------------------------------------------------------------- /logincomponent/src/androidTest/java/com/fengyongge/login/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.fengyongge.myapplication", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /logincomponent/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /logincomponent/src/main/java/com/fengyongge/login/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login 2 | 3 | import android.content.Intent 4 | import androidx.appcompat.app.AppCompatActivity 5 | import android.os.Bundle 6 | import com.fengyongge.login.activity.LoginActivity 7 | import kotlinx.android.synthetic.main.activity_main.* 8 | 9 | class MainActivity : AppCompatActivity() { 10 | override fun onCreate(savedInstanceState: Bundle?) { 11 | super.onCreate(savedInstanceState) 12 | setContentView(R.layout.activity_main) 13 | 14 | tvLoginTest.setOnClickListener { 15 | startActivity(Intent(this,LoginActivity::class.java)) 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /logincomponent/src/main/java/com/fengyongge/login/api/LoginApi.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login.api 2 | 3 | import com.fengyongge.login.bean.LoginBean 4 | import com.fengyongge.login.bean.RegisterBean 5 | import com.fengyongge.rxhttp.bean.BaseResponse 6 | import io.reactivex.Observable 7 | import retrofit2.http.Field 8 | import retrofit2.http.FormUrlEncoded 9 | import retrofit2.http.POST 10 | 11 | 12 | /** 13 | * describe 14 | * 15 | * @author fengyongge(fengyongge98@gmail.com) 16 | * @version V1.0 17 | * @date 2020/09/08 18 | */ 19 | interface LoginApi { 20 | 21 | /** 22 | * 登录 23 | */ 24 | @FormUrlEncoded 25 | @POST("user/login") 26 | fun login(@Field("username")username: String, @Field("password")password: String): Observable> 27 | 28 | 29 | /** 30 | * 注册 31 | */ 32 | @FormUrlEncoded 33 | @POST("user/register") 34 | fun register(@Field("username")username: String, @Field("password")password: String, 35 | @Field("repassword")repassword: String): Observable> 36 | 37 | } -------------------------------------------------------------------------------- /logincomponent/src/main/java/com/fengyongge/login/api/LoginRetrofit.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login.api 2 | 3 | import com.fengyongge.basecomponent.constant.Const 4 | import com.fengyongge.basecomponent.interceptor.AddCookiesInterceptor 5 | import com.fengyongge.basecomponent.interceptor.HeaderInterceptor 6 | import com.fengyongge.basecomponent.interceptor.SaveCookiesInterceptor 7 | import com.fengyongge.rxhttp.core.RetrofitFactory 8 | import okhttp3.Interceptor 9 | 10 | /** 11 | * describe 12 | * 13 | * @author fengyongge(fengyongge98@gmail.com) 14 | * @version V1.0 15 | * @date 2020/09/08 16 | */ 17 | object LoginRetrofit : RetrofitFactory() { 18 | 19 | override fun baseUrl(): String { 20 | return Const.BASE_URL 21 | } 22 | 23 | override fun getService(): Class { 24 | return LoginApi::class.java 25 | } 26 | 27 | override fun getInterceptorList(): MutableList { 28 | var interceptorList = mutableListOf() 29 | interceptorList.add(SaveCookiesInterceptor()) 30 | interceptorList.add(AddCookiesInterceptor()) 31 | interceptorList.add(HeaderInterceptor()) 32 | return interceptorList 33 | } 34 | 35 | 36 | } -------------------------------------------------------------------------------- /logincomponent/src/main/java/com/fengyongge/login/bean/LoginBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login.bean 2 | 3 | data class LoginBean( 4 | val admin: Boolean, 5 | val chapterTops: List, 6 | val coinCount: Int, 7 | val collectIds: List, 8 | val email: String, 9 | val icon: String, 10 | val id: Int, 11 | val nickname: String, 12 | val password: String, 13 | val publicName: String, 14 | val token: String, 15 | val type: Int, 16 | val username: String 17 | ) -------------------------------------------------------------------------------- /logincomponent/src/main/java/com/fengyongge/login/bean/RegisterBean.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login.bean 2 | 3 | data class RegisterBean( 4 | val admin: Boolean, 5 | val chapterTops: List, 6 | val coinCount: Int, 7 | val collectIds: List, 8 | val email: String, 9 | val icon: String, 10 | val id: Int, 11 | val nickname: String, 12 | val password: String, 13 | val publicName: String, 14 | val token: String, 15 | val type: Int, 16 | val username: String 17 | ) -------------------------------------------------------------------------------- /logincomponent/src/main/java/runalone/LoginApp.kt: -------------------------------------------------------------------------------- 1 | package runalone 2 | 3 | import android.content.Context 4 | import androidx.multidex.MultiDex 5 | import com.alibaba.android.arouter.launcher.ARouter 6 | import com.fengyongge.basecomponent.app.BaseApplication 7 | import com.fengyongge.rxhttp.core.RxHttp 8 | 9 | class LoginApp: BaseApplication() { 10 | override fun onCreate() { 11 | super.onCreate() 12 | init(this) 13 | RxHttp.init(applicationContext) 14 | ARouter.init(this) 15 | } 16 | 17 | override fun attachBaseContext(base: Context?) { 18 | super.attachBaseContext(base) 19 | MultiDex.install(this) 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/channel_girl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/channel_girl.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/channel_interview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/channel_interview.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/channel_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/channel_project.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/channel_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/channel_question.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/channel_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/channel_system.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/default_openeye_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/default_openeye_user.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/default_project_img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/default_project_img.jpg -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/icon_delete.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/icon_pwd_hide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/icon_pwd_hide.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/icon_pwd_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/icon_pwd_show.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable-xhdpi/update_title_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/drawable-xhdpi/update_title_image.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/drawable/login_shape_button_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/logincomponent/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /logincomponent/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 登录组件 3 | 4 | 登录中... 5 | 6 | -------------------------------------------------------------------------------- /logincomponent/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /logincomponent/src/main/runalone/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /logincomponent/src/main/runalone/java/com/fengyongge/login/runalone/application/App.kt: -------------------------------------------------------------------------------- 1 | //package com.fengyongge.login 2 | // 3 | //import android.app.Application 4 | // 5 | //class App: Application() { 6 | // override fun onCreate() { 7 | // super.onCreate() 8 | // } 9 | //} -------------------------------------------------------------------------------- /logincomponent/src/test/java/com/fengyongge/login/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.fengyongge.login 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.jar -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.jar.md5: -------------------------------------------------------------------------------- 1 | 168d1174c398619a74b2319028574b05 -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.jar.sha1: -------------------------------------------------------------------------------- 1 | 61472812a43be0018441e78ee33bb6737b023fec -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.fengyongge.plugin 6 | comgradle 7 | 1.0.0 8 | 9 | 10 | com.android.tools.build 11 | gradle 12 | 4.0.1 13 | runtime 14 | 15 | 16 | org.javassist 17 | javassist 18 | 3.22.0-GA 19 | runtime 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.pom.md5: -------------------------------------------------------------------------------- 1 | 92bf8cc6d68d6fe62317921bffe6274e -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/1.0.0/comgradle-1.0.0.pom.sha1: -------------------------------------------------------------------------------- 1 | 6e559cb7c2318212994836b5ec6e8a412833d755 -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.fengyongge.plugin 4 | comgradle 5 | 6 | 1.0.0 7 | 8 | 1.0.0 9 | 10 | 20201102024434 11 | 12 | 13 | -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 7ec81a756e43547bfc5ab0a8f0c3812a -------------------------------------------------------------------------------- /repo/com/fengyongge/plugin/comgradle/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 0a17a2c48a6d61310358cb320a3e618a64b71bcf -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':component-plugin' 2 | include ':logincomponent' ,':gankcomponent' 3 | include ':app',':baseframework',':basecomponent',':baselib',':baseresource' 4 | rootProject.name = "wanandroid" -------------------------------------------------------------------------------- /snapshot/202001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202001.png -------------------------------------------------------------------------------- /snapshot/202002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202002.png -------------------------------------------------------------------------------- /snapshot/202003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202003.png -------------------------------------------------------------------------------- /snapshot/202004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202004.png -------------------------------------------------------------------------------- /snapshot/202005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202005.png -------------------------------------------------------------------------------- /snapshot/202006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202006.png -------------------------------------------------------------------------------- /snapshot/202007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202007.png -------------------------------------------------------------------------------- /snapshot/202008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202008.png -------------------------------------------------------------------------------- /snapshot/202009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202009.png -------------------------------------------------------------------------------- /snapshot/202010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202010.png -------------------------------------------------------------------------------- /snapshot/202011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202011.png -------------------------------------------------------------------------------- /snapshot/202012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202012.png -------------------------------------------------------------------------------- /snapshot/202013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202013.png -------------------------------------------------------------------------------- /snapshot/202014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202014.png -------------------------------------------------------------------------------- /snapshot/202015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fengyongge/WanAndroidClient/7ebd614ab0e3d65f2b5137175c51d3b61c23c25b/snapshot/202015.png --------------------------------------------------------------------------------