├── .gitignore ├── .idea ├── caches │ └── build_file_checksums.ser ├── codeStyles │ └── Project.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── xiaochen │ │ │ └── emvp │ │ │ ├── MainActivity.java │ │ │ ├── MyApplication.java │ │ │ ├── presenter │ │ │ └── TestPresenter.java │ │ │ └── view │ │ │ └── ITestView.java │ └── res │ │ ├── color │ │ └── btn_text_selector.xml │ │ ├── layout │ │ └── activity_main.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 │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── file_paths.xml │ ├── vdev │ └── java │ │ └── com │ │ └── xiaochen │ │ └── emvp │ │ └── ApiConstants.java │ └── vtest │ └── java │ └── com.eflagcomm.emvp │ └── ApiConstants.java ├── base ├── build.gradle ├── build │ ├── .transforms │ │ ├── ab6cbc8153b5cd24f9e974d532b4020a.bin │ │ ├── ab6cbc8153b5cd24f9e974d532b4020a │ │ │ └── classes │ │ │ │ └── classes.dex │ │ ├── ed32d1a579dde87817b5077a92496ffd.bin │ │ ├── ed32d1a579dde87817b5077a92496ffd │ │ │ └── classes │ │ │ │ └── classes.dex │ │ ├── fd90b8982ee9f30fb13687f7270bccc1.bin │ │ └── fd90b8982ee9f30fb13687f7270bccc1 │ │ │ └── classes │ │ │ └── classes.dex │ ├── generated │ │ ├── ap_generated_sources │ │ │ └── debug │ │ │ │ └── out │ │ │ │ └── com │ │ │ │ ├── bumptech │ │ │ │ └── glide │ │ │ │ │ ├── GeneratedAppGlideModuleImpl.java │ │ │ │ │ └── GeneratedRequestManagerFactory.java │ │ │ │ └── xiaochen │ │ │ │ └── emvp │ │ │ │ └── base │ │ │ │ ├── GlideApp.java │ │ │ │ ├── GlideOptions.java │ │ │ │ ├── GlideRequest.java │ │ │ │ └── GlideRequests.java │ │ └── source │ │ │ └── buildConfig │ │ │ └── debug │ │ │ └── com │ │ │ └── xiaochen │ │ │ └── emvp │ │ │ └── base │ │ │ └── BuildConfig.java │ ├── intermediates │ │ ├── aapt_friendly_merged_manifests │ │ │ └── debug │ │ │ │ └── aapt │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── output.json │ │ ├── annotation_processor_list │ │ │ └── debug │ │ │ │ └── annotationProcessors.json │ │ ├── compile_library_classes │ │ │ └── debug │ │ │ │ └── classes.jar │ │ ├── compile_only_not_namespaced_r_class_jar │ │ │ └── debug │ │ │ │ └── R.jar │ │ ├── incremental │ │ │ ├── debug-mergeNativeLibs │ │ │ │ └── merge-state │ │ │ ├── mergeDebugJniLibFolders │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugShaders │ │ │ │ └── merger.xml │ │ │ ├── packageDebugAssets │ │ │ │ └── merger.xml │ │ │ └── packageDebugResources │ │ │ │ ├── compile-file-map.properties │ │ │ │ ├── merged.dir │ │ │ │ └── values │ │ │ │ │ └── values.xml │ │ │ │ └── merger.xml │ │ ├── javac │ │ │ └── debug │ │ │ │ └── classes │ │ │ │ └── com │ │ │ │ ├── bumptech │ │ │ │ └── glide │ │ │ │ │ ├── GeneratedAppGlideModuleImpl.class │ │ │ │ │ └── GeneratedRequestManagerFactory.class │ │ │ │ └── xiaochen │ │ │ │ └── emvp │ │ │ │ └── base │ │ │ │ ├── BaseApplication.class │ │ │ │ ├── BuildConfig.class │ │ │ │ ├── GlideApp.class │ │ │ │ ├── GlideOptions.class │ │ │ │ ├── GlideRequest.class │ │ │ │ ├── GlideRequests.class │ │ │ │ ├── MyAppGlideModule.class │ │ │ │ ├── dialog │ │ │ │ ├── LoadingDialog.class │ │ │ │ ├── MyDialog$OnDialogBtnClickListener.class │ │ │ │ └── MyDialog.class │ │ │ │ ├── event │ │ │ │ └── BaseEvent.class │ │ │ │ ├── presenter │ │ │ │ ├── AbsBasePresenter$ResponseObserverCallBack.class │ │ │ │ ├── AbsBasePresenter.class │ │ │ │ └── BasePresenter.class │ │ │ │ ├── ui │ │ │ │ ├── AbsBaseActivity.class │ │ │ │ ├── AbsBaseFragment.class │ │ │ │ ├── BaseActivity.class │ │ │ │ └── BaseFragment.class │ │ │ │ ├── utils │ │ │ │ ├── ChartUtils.class │ │ │ │ ├── ContextUtil.class │ │ │ │ ├── DensityUtil.class │ │ │ │ ├── GeometryUtil.class │ │ │ │ ├── ImageUtil.class │ │ │ │ ├── LogUtil.class │ │ │ │ ├── NumberUtil.class │ │ │ │ ├── SPUtil$SharedPreferencesCompat.class │ │ │ │ ├── SPUtil.class │ │ │ │ └── ToastUtil.class │ │ │ │ └── view │ │ │ │ └── IBaseView.class │ │ ├── library_java_res │ │ │ └── debug │ │ │ │ └── res.jar │ │ ├── library_manifest │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ ├── local_only_symbol_list │ │ │ └── debug │ │ │ │ └── parseDebugLibraryResources │ │ │ │ └── R-def.txt │ │ ├── manifest_merge_blame_file │ │ │ └── debug │ │ │ │ └── manifest-merger-blame-debug-report.txt │ │ ├── merged_manifests │ │ │ └── debug │ │ │ │ └── output.json │ │ ├── packaged_res │ │ │ └── debug │ │ │ │ ├── drawable-xhdpi-v4 │ │ │ │ ├── common_back.png │ │ │ │ ├── icon_common_head.png │ │ │ │ ├── icon_pull.png │ │ │ │ └── loading.gif │ │ │ │ ├── drawable │ │ │ │ ├── common_dialog_cancel_shape.xml │ │ │ │ ├── common_dialog_confirm_shape.xml │ │ │ │ └── common_dialog_shape.xml │ │ │ │ ├── layout │ │ │ │ ├── layout_common_head_title.xml │ │ │ │ ├── layout_common_right_text.xml │ │ │ │ ├── layout_dialog.xml │ │ │ │ ├── layout_loading.xml │ │ │ │ └── layout_loading_dialog.xml │ │ │ │ └── values │ │ │ │ └── values.xml │ │ ├── res │ │ │ └── symbol-table-with-package │ │ │ │ └── debug │ │ │ │ └── package-aware-r.txt │ │ ├── runtime_library_classes │ │ │ └── debug │ │ │ │ └── classes.jar │ │ └── symbols │ │ │ └── debug │ │ │ └── R.txt │ └── outputs │ │ └── logs │ │ └── manifest-merger-debug-report.txt └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── xiaochen │ │ └── emvp │ │ └── base │ │ ├── BaseApplication.java │ │ ├── MyAppGlideModule.java │ │ ├── dialog │ │ ├── LoadingDialog.java │ │ └── MyDialog.java │ │ ├── event │ │ └── BaseEvent.java │ │ ├── presenter │ │ ├── AbsBasePresenter.java │ │ └── BasePresenter.java │ │ ├── ui │ │ ├── AbsBaseActivity.java │ │ ├── AbsBaseFragment.java │ │ ├── BaseActivity.java │ │ └── BaseFragment.java │ │ ├── utils │ │ ├── ChartUtils.java │ │ ├── ContextUtil.java │ │ ├── DensityUtil.java │ │ ├── GeometryUtil.java │ │ ├── ImageUtil.java │ │ ├── LogUtil.java │ │ ├── NumberUtil.java │ │ ├── SPUtil.java │ │ └── ToastUtil.java │ │ └── view │ │ └── IBaseView.java │ └── res │ ├── drawable-xhdpi │ ├── common_back.png │ ├── icon_common_head.png │ ├── icon_pull.png │ └── loading.gif │ ├── drawable │ ├── common_dialog_cancel_shape.xml │ ├── common_dialog_confirm_shape.xml │ └── common_dialog_shape.xml │ ├── layout │ ├── layout_common_head_title.xml │ ├── layout_common_right_text.xml │ ├── layout_dialog.xml │ ├── layout_loading.xml │ └── layout_loading_dialog.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── config.gradle ├── data ├── build.gradle ├── build │ ├── .transforms │ │ ├── 287b3e9bb38b6152fcf26ebb8f7f4c2b.bin │ │ ├── 287b3e9bb38b6152fcf26ebb8f7f4c2b │ │ │ └── classes │ │ │ │ └── classes.dex │ │ ├── 545a93c8d282430072b6d1f73986a1ec.bin │ │ ├── 545a93c8d282430072b6d1f73986a1ec │ │ │ └── classes │ │ │ │ └── classes.dex │ │ ├── f73e67748aedaeb4f5ed462d857a8517.bin │ │ └── f73e67748aedaeb4f5ed462d857a8517 │ │ │ └── classes │ │ │ └── classes.dex │ ├── generated │ │ └── source │ │ │ └── buildConfig │ │ │ └── debug │ │ │ └── com │ │ │ └── xiaochen │ │ │ └── emvp │ │ │ └── data │ │ │ └── BuildConfig.java │ ├── intermediates │ │ ├── aapt_friendly_merged_manifests │ │ │ └── debug │ │ │ │ └── aapt │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── output.json │ │ ├── annotation_processor_list │ │ │ └── debug │ │ │ │ └── annotationProcessors.json │ │ ├── compile_library_classes │ │ │ └── debug │ │ │ │ └── classes.jar │ │ ├── compile_only_not_namespaced_r_class_jar │ │ │ └── debug │ │ │ │ └── R.jar │ │ ├── incremental │ │ │ ├── debug-mergeNativeLibs │ │ │ │ └── merge-state │ │ │ ├── mergeDebugJniLibFolders │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugShaders │ │ │ │ └── merger.xml │ │ │ ├── packageDebugAssets │ │ │ │ └── merger.xml │ │ │ └── packageDebugResources │ │ │ │ ├── compile-file-map.properties │ │ │ │ ├── merged.dir │ │ │ │ └── values │ │ │ │ │ └── values.xml │ │ │ │ └── merger.xml │ │ ├── javac │ │ │ └── debug │ │ │ │ └── classes │ │ │ │ └── com │ │ │ │ └── xiaochen │ │ │ │ └── emvp │ │ │ │ └── data │ │ │ │ ├── ApiManager$1.class │ │ │ │ ├── ApiManager$SingleHolder.class │ │ │ │ ├── ApiManager.class │ │ │ │ ├── BaseResponseCallBack.class │ │ │ │ ├── BaseResponseObserver.class │ │ │ │ ├── BuildConfig.class │ │ │ │ ├── HttpManager$1.class │ │ │ │ ├── HttpManager$2.class │ │ │ │ ├── HttpManager.class │ │ │ │ ├── api │ │ │ │ └── IServiceApi.class │ │ │ │ ├── interceptor │ │ │ │ ├── CommonHeaderInterceptor.class │ │ │ │ ├── CommonParamInterceptor.class │ │ │ │ ├── HttpLogerInterceptor$Level.class │ │ │ │ ├── HttpLogerInterceptor$Logger$1.class │ │ │ │ ├── HttpLogerInterceptor$Logger.class │ │ │ │ └── HttpLogerInterceptor.class │ │ │ │ ├── model │ │ │ │ └── BaseInfo.class │ │ │ │ ├── request │ │ │ │ └── BaseReqVO.class │ │ │ │ ├── response │ │ │ │ ├── BaseResponseVO.class │ │ │ │ ├── HomeArticleRespVO$Data.class │ │ │ │ └── HomeArticleRespVO.class │ │ │ │ └── utils │ │ │ │ ├── SSLUtil$1.class │ │ │ │ ├── SSLUtil$MyTrustManager.class │ │ │ │ ├── SSLUtil$SSLParams.class │ │ │ │ ├── SSLUtil$UnSafeHostnameVerifier.class │ │ │ │ ├── SSLUtil$UnSafeTrustManager.class │ │ │ │ └── SSLUtil.class │ │ ├── library_java_res │ │ │ └── debug │ │ │ │ └── res.jar │ │ ├── library_manifest │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ ├── local_only_symbol_list │ │ │ └── debug │ │ │ │ └── parseDebugLibraryResources │ │ │ │ └── R-def.txt │ │ ├── manifest_merge_blame_file │ │ │ └── debug │ │ │ │ └── manifest-merger-blame-debug-report.txt │ │ ├── merged_manifests │ │ │ └── debug │ │ │ │ └── output.json │ │ ├── packaged_res │ │ │ └── debug │ │ │ │ └── values │ │ │ │ └── values.xml │ │ ├── res │ │ │ └── symbol-table-with-package │ │ │ │ └── debug │ │ │ │ └── package-aware-r.txt │ │ ├── runtime_library_classes │ │ │ └── debug │ │ │ │ └── classes.jar │ │ └── symbols │ │ │ └── debug │ │ │ └── R.txt │ └── outputs │ │ └── logs │ │ └── manifest-merger-debug-report.txt └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── xiaochen │ │ └── emvp │ │ └── data │ │ ├── ApiManager.java │ │ ├── BaseResponseCallBack.java │ │ ├── BaseResponseObserver.java │ │ ├── HttpManager.java │ │ ├── api │ │ └── IServiceApi.java │ │ ├── interceptor │ │ ├── CommonHeaderInterceptor.java │ │ ├── CommonParamInterceptor.java │ │ └── HttpLogerInterceptor.java │ │ ├── model │ │ └── BaseInfo.java │ │ ├── request │ │ └── BaseReqVO.java │ │ ├── response │ │ ├── BaseResponseVO.java │ │ └── HomeArticleRespVO.java │ │ └── utils │ │ └── SSLUtil.java │ └── res │ └── values │ └── strings.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── image └── image.gif ├── settings.gradle └── widget ├── build.gradle ├── build ├── .transforms │ ├── 654ffa0984f75717e6093a66e6b655a0.bin │ ├── 654ffa0984f75717e6093a66e6b655a0 │ │ └── classes │ │ │ └── classes.dex │ ├── 94d3b1e7a3a0f1ac8e19990810e9b66b.bin │ ├── 94d3b1e7a3a0f1ac8e19990810e9b66b │ │ └── classes │ │ │ └── classes.dex │ ├── 95ba2796affda2cd11c77e1ebdc28714.bin │ └── 95ba2796affda2cd11c77e1ebdc28714 │ │ └── classes │ │ └── classes.dex ├── generated │ └── source │ │ └── buildConfig │ │ └── debug │ │ └── com │ │ └── xiaochen │ │ └── emvp │ │ └── widget │ │ └── BuildConfig.java ├── intermediates │ ├── aapt_friendly_merged_manifests │ │ └── debug │ │ │ └── aapt │ │ │ ├── AndroidManifest.xml │ │ │ └── output.json │ ├── annotation_processor_list │ │ └── debug │ │ │ └── annotationProcessors.json │ ├── compile_library_classes │ │ └── debug │ │ │ └── classes.jar │ ├── compile_only_not_namespaced_r_class_jar │ │ └── debug │ │ │ └── R.jar │ ├── incremental │ │ ├── debug-mergeNativeLibs │ │ │ └── merge-state │ │ ├── mergeDebugJniLibFolders │ │ │ └── merger.xml │ │ ├── mergeDebugShaders │ │ │ └── merger.xml │ │ ├── packageDebugAssets │ │ │ └── merger.xml │ │ └── packageDebugResources │ │ │ ├── compile-file-map.properties │ │ │ ├── merged.dir │ │ │ └── values │ │ │ │ └── values.xml │ │ │ └── merger.xml │ ├── javac │ │ └── debug │ │ │ └── classes │ │ │ └── com │ │ │ └── xiaochen │ │ │ └── emvp │ │ │ └── widget │ │ │ ├── BuildConfig.class │ │ │ ├── ui │ │ │ ├── WidgetActivity.class │ │ │ ├── adapter │ │ │ │ ├── MyPagerAdapter.class │ │ │ │ ├── MyPagerAdapter1.class │ │ │ │ ├── PointsAdapter$1.class │ │ │ │ ├── PointsAdapter$ViewHolder.class │ │ │ │ └── PointsAdapter.class │ │ │ ├── bean │ │ │ │ └── PointBean.class │ │ │ └── fragment │ │ │ │ ├── BaseFragment.class │ │ │ │ ├── CircleProgressFragment.class │ │ │ │ ├── ClockFragment.class │ │ │ │ ├── CobwebFragment.class │ │ │ │ ├── DragStickFragment.class │ │ │ │ ├── FlowLayoutFragment.class │ │ │ │ ├── MyLayoutFragment.class │ │ │ │ ├── OlymicRingsFragment.class │ │ │ │ ├── PieChartFragment.class │ │ │ │ ├── RangeSeekBarFragment.class │ │ │ │ ├── SmileFaceFragment.class │ │ │ │ ├── ToggleFragment.class │ │ │ │ ├── ViewFragment$1.class │ │ │ │ ├── ViewFragment.class │ │ │ │ └── ViewGroupFragment.class │ │ │ ├── view │ │ │ ├── CircleRingProgress$1.class │ │ │ ├── CircleRingProgress.class │ │ │ ├── ClockView.class │ │ │ ├── CobwebView.class │ │ │ ├── DragStickyView$1.class │ │ │ ├── DragStickyView$2.class │ │ │ ├── DragStickyView$3.class │ │ │ ├── DragStickyView$4.class │ │ │ ├── DragStickyView.class │ │ │ ├── MyViewPager.class │ │ │ ├── PieChartView$1.class │ │ │ ├── PieChartView.class │ │ │ ├── QQBezierView$onDragStatusListener.class │ │ │ ├── QQBezierView.class │ │ │ ├── SmileFaceView$1.class │ │ │ ├── SmileFaceView.class │ │ │ ├── SwitchToggleView$1.class │ │ │ └── SwitchToggleView.class │ │ │ └── viewgroup │ │ │ ├── CustomLayoutParam.class │ │ │ ├── FlowLayout.class │ │ │ ├── MyFrameLayout.class │ │ │ ├── MyLinearLayout.class │ │ │ ├── MyRelativeLayout.class │ │ │ ├── OlympicRingsView.class │ │ │ ├── RangeSeekBar.class │ │ │ ├── RingProgressBar.class │ │ │ ├── ThumbImageView$OnScrollListener.class │ │ │ └── ThumbImageView.class │ ├── library_java_res │ │ └── debug │ │ │ └── res.jar │ ├── library_manifest │ │ └── debug │ │ │ └── AndroidManifest.xml │ ├── local_only_symbol_list │ │ └── debug │ │ │ └── parseDebugLibraryResources │ │ │ └── R-def.txt │ ├── manifest_merge_blame_file │ │ └── debug │ │ │ └── manifest-merger-blame-debug-report.txt │ ├── merged_manifests │ │ └── debug │ │ │ └── output.json │ ├── packaged_res │ │ └── debug │ │ │ ├── drawable-xhdpi-v4 │ │ │ ├── icon1.png │ │ │ ├── icon1_selected.png │ │ │ ├── icon2.png │ │ │ ├── icon2_selected.png │ │ │ ├── pop1.png │ │ │ ├── pop2.png │ │ │ ├── pop3.png │ │ │ ├── pop4.png │ │ │ ├── pop5.png │ │ │ ├── red_bg.9.png │ │ │ ├── ring_dot.png │ │ │ ├── rod_handshank_butten.png │ │ │ └── rod_place_icon.png │ │ │ ├── drawable │ │ │ ├── btn1_selector.xml │ │ │ ├── btn2_selector.xml │ │ │ ├── flag_01.xml │ │ │ ├── out_anim.xml │ │ │ ├── switch_close_bg.xml │ │ │ ├── switch_open_bg.xml │ │ │ └── switch_toggle.xml │ │ │ ├── layout │ │ │ ├── activity_widget.xml │ │ │ ├── drag_img.xml │ │ │ ├── fragment_circle_progress.xml │ │ │ ├── fragment_clock.xml │ │ │ ├── fragment_cobweb.xml │ │ │ ├── fragment_drag_stick.xml │ │ │ ├── fragment_flow.xml │ │ │ ├── fragment_my_layout.xml │ │ │ ├── fragment_olympic.xml │ │ │ ├── fragment_piechart.xml │ │ │ ├── fragment_range_seekbar.xml │ │ │ ├── fragment_smile_face.xml │ │ │ ├── fragment_toggle.xml │ │ │ ├── fragment_view.xml │ │ │ ├── fragment_viewgroup.xml │ │ │ └── list_points_item.xml │ │ │ └── values │ │ │ └── values.xml │ ├── res │ │ └── symbol-table-with-package │ │ │ └── debug │ │ │ └── package-aware-r.txt │ ├── runtime_library_classes │ │ └── debug │ │ │ └── classes.jar │ └── symbols │ │ └── debug │ │ └── R.txt └── outputs │ └── logs │ └── manifest-merger-debug-report.txt ├── proguard-rules.pro └── src └── main ├── AndroidManifest.xml ├── java └── com │ └── xiaochen │ └── emvp │ └── widget │ ├── ui │ ├── WidgetActivity.java │ ├── adapter │ │ ├── MyPagerAdapter.java │ │ ├── MyPagerAdapter1.java │ │ └── PointsAdapter.java │ ├── bean │ │ └── PointBean.java │ └── fragment │ │ ├── BaseFragment.java │ │ ├── CircleProgressFragment.java │ │ ├── ClockFragment.java │ │ ├── CobwebFragment.java │ │ ├── DragStickFragment.java │ │ ├── FlowLayoutFragment.java │ │ ├── MyLayoutFragment.java │ │ ├── OlymicRingsFragment.java │ │ ├── PieChartFragment.java │ │ ├── RangeSeekBarFragment.java │ │ ├── SmileFaceFragment.java │ │ ├── ToggleFragment.java │ │ ├── ViewFragment.java │ │ └── ViewGroupFragment.java │ ├── view │ ├── CircleRingProgress.java │ ├── ClockView.java │ ├── CobwebView.java │ ├── DragStickyView.java │ ├── MyViewPager.java │ ├── PieChartView.java │ ├── QQBezierView.java │ ├── SmileFaceView.java │ └── SwitchToggleView.java │ └── viewgroup │ ├── CustomLayoutParam.java │ ├── FlowLayout.java │ ├── MyFrameLayout.java │ ├── MyLinearLayout.java │ ├── MyRelativeLayout.java │ ├── OlympicRingsView.java │ ├── RangeSeekBar.java │ ├── RingProgressBar.java │ └── ThumbImageView.java └── res ├── color └── btn_text_selector.xml ├── drawable-xhdpi ├── icon1.png ├── icon1_selected.png ├── icon2.png ├── icon2_selected.png ├── pop1.png ├── pop2.png ├── pop3.png ├── pop4.png ├── pop5.png ├── red_bg.9.png ├── ring_dot.png ├── rod_handshank_butten.png └── rod_place_icon.png ├── drawable ├── btn1_selector.xml ├── btn2_selector.xml ├── flag_01.xml ├── out_anim.xml ├── switch_close_bg.xml ├── switch_open_bg.xml └── switch_toggle.xml ├── layout ├── activity_widget.xml ├── drag_img.xml ├── fragment_circle_progress.xml ├── fragment_clock.xml ├── fragment_cobweb.xml ├── fragment_drag_stick.xml ├── fragment_flow.xml ├── fragment_my_layout.xml ├── fragment_olympic.xml ├── fragment_piechart.xml ├── fragment_range_seekbar.xml ├── fragment_smile_face.xml ├── fragment_toggle.xml ├── fragment_view.xml ├── fragment_viewgroup.xml └── list_points_item.xml └── values ├── attrs.xml ├── colors.xml ├── dimens.xml ├── strings.xml └── styles.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zlc921022/easy_mvp/dc6aa67934f05ac7df032ad54f6b2cc4875256db/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 23 | 24 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 36 | -------------------------------------------------------------------------------- /.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 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 30 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiaochen/emvp/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.xiaochen.emvp; 2 | 3 | import android.content.Intent; 4 | 5 | import com.xiaochen.emvp.base.ui.AbsBaseActivity; 6 | import com.xiaochen.emvp.base.utils.LogUtil; 7 | import com.xiaochen.emvp.base.utils.ToastUtil; 8 | import com.xiaochen.emvp.data.response.HomeArticleRespVO; 9 | import com.xiaochen.emvp.presenter.TestPresenter; 10 | import com.xiaochen.emvp.widget.ui.WidgetActivity; 11 | import com.xiaochen.emvp.view.ITestView; 12 | 13 | import butterknife.OnClick; 14 | 15 | /** 16 | *

主页

17 | * 18 | * @author zhenglecheng 19 | * @date 2019/12/26 20 | */ 21 | public class MainActivity extends AbsBaseActivity implements ITestView { 22 | 23 | 24 | @Override 25 | protected int getLayoutId() { 26 | return R.layout.activity_main; 27 | } 28 | 29 | @Override 30 | protected TestPresenter getPresenter() { 31 | return new TestPresenter(this, this); 32 | } 33 | 34 | @OnClick(R.id.button_test) 35 | void onClickButtonTest() { 36 | mPresenter.getHomeArticles(1); 37 | } 38 | 39 | @OnClick(R.id.button_view) 40 | void onClickButtonView() { 41 | Intent intent = new Intent(this, WidgetActivity.class); 42 | startActivity(intent); 43 | } 44 | 45 | @Override 46 | public void setData(HomeArticleRespVO.Data data) { 47 | LogUtil.e(TAG, data != null ? data.toString() : null); 48 | } 49 | 50 | @Override 51 | public void onError(String msg, String code) { 52 | ToastUtil.showShortToast(this, msg); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiaochen/emvp/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.xiaochen.emvp; 2 | 3 | import com.xiaochen.emvp.base.BaseApplication; 4 | import com.xiaochen.emvp.base.utils.LogUtil; 5 | import com.xiaochen.emvp.data.HttpManager; 6 | 7 | /** 8 | *

9 | * 10 | * @author zhenglecheng 11 | * @date 2019/12/26 12 | */ 13 | public class MyApplication extends BaseApplication { 14 | 15 | @Override 16 | public void onCreate() { 17 | super.onCreate(); 18 | LogUtil.init(); 19 | HttpManager.createProvider(getBaseUrl(), true, this); 20 | } 21 | 22 | private String getBaseUrl() { 23 | return ApiConstants.BASE_URL; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiaochen/emvp/presenter/TestPresenter.java: -------------------------------------------------------------------------------- 1 | package com.xiaochen.emvp.presenter; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.xiaochen.emvp.base.presenter.AbsBasePresenter; 8 | import com.xiaochen.emvp.data.api.IServiceApi; 9 | import com.xiaochen.emvp.data.response.HomeArticleRespVO; 10 | import com.xiaochen.emvp.view.ITestView; 11 | 12 | import io.reactivex.Observable; 13 | 14 | /** 15 | *

测试

16 | * 17 | * @author zhenglecheng 18 | * @date 2019/12/26 19 | */ 20 | public class TestPresenter extends AbsBasePresenter { 21 | 22 | private final IServiceApi mServiceApi; 23 | 24 | public TestPresenter(@NonNull Context context,ITestView view) { 25 | super(context,view); 26 | mServiceApi = mApiManager.createApi(IServiceApi.class); 27 | } 28 | 29 | public void getHomeArticles(final int page) { 30 | ResponseObserverCallBack observer = 31 | new ResponseObserverCallBack() { 32 | 33 | @Override 34 | public void onSuccess(HomeArticleRespVO.Data data) { 35 | if (getView() != null) { 36 | getView().setData(data); 37 | } 38 | } 39 | 40 | @Override 41 | public void onFailure(String code, String errMessage) { 42 | if (getView() != null) { 43 | getView().onError(errMessage, code); 44 | } 45 | } 46 | }; 47 | Observable observable = mServiceApi.getHomeArticles(page); 48 | requestData(observable, observer); 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiaochen/emvp/view/ITestView.java: -------------------------------------------------------------------------------- 1 | package com.xiaochen.emvp.view; 2 | 3 | import com.xiaochen.emvp.base.view.IBaseView; 4 | import com.xiaochen.emvp.data.response.HomeArticleRespVO; 5 | 6 | /** 7 | *

测试

8 | * 9 | * @author zhenglecheng 10 | * @date 2019/12/26 11 | */ 12 | public interface ITestView extends IBaseView { 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/btn_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 |