From fc428a8e0952390739c18d28776c6d7f892e2fa2 Mon Sep 17 00:00:00 2001 From: yuyl <765782212@qq.com> Date: Wed, 16 Apr 2025 15:37:20 +0800 Subject: [PATCH] first commit --- Android_Mireo/.gitignore | 16 + Android_Mireo/app/AppMireo.jks | Bin 0 -> 2652 bytes Android_Mireo/app/build.gradle | 155 + Android_Mireo/app/gradle.properties | 4 + Android_Mireo/app/proguard-app.pro | 36 + Android_Mireo/app/proguard-sdk.pro | 45 + .../app/src/main/AndroidManifest.xml | 125 + .../localee/mireo/app/action/StatusAction.kt | 74 + .../mireo/app/action/TitleBarAction.kt | 94 + .../localee/mireo/app/action/ToastAction.kt | 19 + .../com/localee/mireo/app/aop/CheckNet.kt | 7 + .../localee/mireo/app/aop/CheckNetAspect.kt | 36 + .../java/com/localee/mireo/app/aop/Log.kt | 8 + .../com/localee/mireo/app/aop/LogAspect.kt | 96 + .../com/localee/mireo/app/aop/Permissions.kt | 9 + .../mireo/app/aop/PermissionsAspect.kt | 58 + .../com/localee/mireo/app/aop/SingleClick.kt | 9 + .../mireo/app/aop/SingleClickAspect.kt | 51 + .../com/localee/mireo/app/app/AppActivity.kt | 161 + .../com/localee/mireo/app/app/AppAdapter.kt | 140 + .../localee/mireo/app/app/AppApplication.kt | 171 + .../com/localee/mireo/app/app/AppFragment.kt | 46 + .../com/localee/mireo/app/app/BaseEventBus.kt | 4 + .../localee/mireo/app/app/TitleBarFragment.kt | 69 + .../mireo/app/http/api/CancelCollectApi.kt | 17 + .../mireo/app/http/api/CreateHistoryApi.kt | 18 + .../mireo/app/http/api/CustomerRegisterApi.kt | 19 + .../mireo/app/http/api/DetailsRecommendRes.kt | 29 + .../mireo/app/http/api/DoCollectApi.kt | 25 + .../app/http/api/ExampleRecommendDataRes.kt | 39 + .../localee/mireo/app/http/api/HistoryBean.kt | 33 + .../mireo/app/http/api/HomeBannerApi.kt | 31 + .../mireo/app/http/api/HomeCategoriesApi.kt | 22 + .../api/HomeDayMaxRechargeShortPlayRankApi.kt | 18 + .../mireo/app/http/api/HomeModuleApi.kt | 32 + .../mireo/app/http/api/HomeRecommendApi.kt | 19 + .../mireo/app/http/api/HomeVideoListApi.kt | 33 + .../mireo/app/http/api/MyCollectionsApi.kt | 16 + .../mireo/app/http/api/MyHistoryApi.kt | 16 + .../mireo/app/http/api/RecommendBean.kt | 26 + .../mireo/app/http/api/SearchHotApi.kt | 41 + .../mireo/app/http/api/SearchSearchApi.kt | 43 + .../localee/mireo/app/http/api/UserInfoApi.kt | 14 + .../localee/mireo/app/http/api/UserInfoRes.kt | 30 + .../mireo/app/http/api/VideoDetailsApi.kt | 165 + .../app/http/exception/HttpBodyInterceptor.kt | 85 + .../app/http/exception/ResultException.java | 27 + .../app/http/exception/TokenException.java | 15 + .../app/http/model/CharsetInterceptor.kt | 22 + .../app/http/model/HttpCacheManager.java | 64 + .../localee/mireo/app/http/model/HttpData.kt | 30 + .../mireo/app/http/model/HttpListData.kt | 38 + .../mireo/app/http/model/RequestHandler.kt | 238 + .../mireo/app/http/model/RequestServer.kt | 12 + .../mireo/app/manager/ActivityManager.kt | 183 + .../mireo/app/manager/CacheDataManager.kt | 77 + .../mireo/app/manager/PickerLayoutManager.kt | 186 + .../com/localee/mireo/app/other/AppConfig.kt | 34 + .../localee/mireo/app/other/CrashHandler.kt | 56 + .../mireo/app/other/DebugLoggerTree.kt | 19 + .../localee/mireo/app/other/MaterialHeader.kt | 239 + .../localee/mireo/app/other/MsConstants.kt | 65 + .../mireo/app/other/PermissionCallback.kt | 188 + .../mireo/app/other/SmartBallPulseFooter.kt | 149 + .../localee/mireo/app/other/TitleBarStyle.kt | 74 + .../com/localee/mireo/app/other/ToastStyle.kt | 29 + .../mireo/app/ui/activity/AboutActivity.kt | 45 + .../mireo/app/ui/activity/BrowserActivity.kt | 143 + .../mireo/app/ui/activity/HomeActivity.kt | 171 + .../mireo/app/ui/activity/SearchActivity.kt | 160 + .../mireo/app/ui/activity/SettingActivity.kt | 47 + .../mireo/app/ui/activity/SplashActivity.kt | 31 + .../app/ui/activity/VideoPlayActivity.kt | 635 ++ .../mireo/app/ui/adapter/HomeBannerAdapter.kt | 62 + .../ui/adapter/HomeCategoriesTabAdapter.kt | 36 + .../app/ui/adapter/HomeCriticallyAdapter.kt | 52 + .../mireo/app/ui/adapter/HomeGenresAdapter.kt | 42 + .../mireo/app/ui/adapter/HomeShortAdapter.kt | 37 + .../mireo/app/ui/adapter/HomeTopAdapter.kt | 54 + .../mireo/app/ui/adapter/LostTabAdapter.kt | 95 + .../mireo/app/ui/adapter/MeHistoryAdapter.kt | 38 + .../mireo/app/ui/adapter/NavigationAdapter.kt | 89 + .../mireo/app/ui/adapter/SearchHotAdapter.kt | 51 + .../app/ui/adapter/SearchSearchAdapter.kt | 31 + .../mireo/app/ui/adapter/TabAdapter.kt | 223 + .../mireo/app/ui/dialog/CommonDialog.kt | 80 + .../mireo/app/ui/dialog/InputDialog.kt | 101 + .../mireo/app/ui/dialog/MessageDialog.kt | 63 + .../localee/mireo/app/ui/dialog/TipsDialog.kt | 70 + .../localee/mireo/app/ui/dialog/WaitDialog.kt | 33 + .../mireo/app/ui/fragment/BrowserFragment.kt | 104 + .../mireo/app/ui/fragment/ExploreFragment.kt | 502 ++ .../ui/fragment/HomeCategoriesTabFragment.kt | 183 + .../mireo/app/ui/fragment/HomeFragment.kt | 434 ++ .../mireo/app/ui/fragment/ListTabFragment.kt | 385 ++ .../mireo/app/ui/fragment/MessageFragment.kt | 203 + .../mireo/app/ui/fragment/MineFragment.kt | 153 + .../mireo/app/ui/fragment/SharedViewModel.kt | 28 + .../app/ui/popup/CustomBubbleAttachPopup.kt | 45 + .../videoPaly/ExamplePlayerDetailDataRes.kt | 150 + .../ui/videoPaly/ExampleRecommendAdapter.kt | 43 + .../videoPaly/ExampleRecommendPlayerView.kt | 317 + .../ui/videoPaly/ExampleSeriesDataAdapter.kt | 52 + .../videoPaly/ExampleSeriesDialogFragment.kt | 138 + .../ui/videoPaly/ExampleSeriesNumAdapter.kt | 33 + .../ui/videoPaly/ExampleUnFavoriteDialog.kt | 31 + .../ui/videoPaly/FfmpegRenderersFactory.kt | 44 + .../mireo/app/ui/videoPaly/LoadingLine.kt | 59 + .../mireo/app/ui/videoPaly/MyHeaderView.kt | 60 + .../mireo/app/ui/videoPaly/TranslatesRes.kt | 251 + .../app/ui/videoPaly/VideoPlayAdapter.kt | 49 + .../mireo/app/ui/videoPaly/VideoPlayerView.kt | 364 ++ .../localee/mireo/app/utils/DHStringUtils.kt | 52 + .../localee/mireo/app/utils/ExampleStand.kt | 170 + .../localee/mireo/app/utils/MsMMKVUtils.kt | 52 + .../localee/mireo/app/utils/MsSystemUtlis.kt | 242 + .../mireo/app/utils/TranslatesUtils.kt | 52 + .../localee/mireo/app/widget/BrowserView.kt | 362 ++ .../app/widget/CustomNestedScrollView.kt | 31 + .../mireo/app/widget/LoadingAnimationView.kt | 42 + .../localee/mireo/app/widget/PasswordView.kt | 96 + .../localee/mireo/app/widget/StatusLayout.kt | 97 + .../src/main/res/anim/left_in_activity.xml | 7 + .../src/main/res/anim/left_out_activity.xml | 7 + .../src/main/res/anim/right_in_activity.xml | 7 + .../src/main/res/anim/right_out_activity.xml | 7 + .../app/src/main/res/anim/shake_anim.xml | 8 + .../src/main/res/anim/shake_interpolator.xml | 4 + .../main/res/drawable-xxhdpi/guide_1_bg.webp | Bin 0 -> 59646 bytes .../main/res/drawable-xxhdpi/guide_2_bg.webp | Bin 0 -> 66230 bytes .../main/res/drawable-xxhdpi/guide_3_bg.webp | Bin 0 -> 68538 bytes .../res/drawable-xxhdpi/guyantvrefresh00.webp | Bin 0 -> 288 bytes .../res/drawable-xxhdpi/guyantvrefresh01.webp | Bin 0 -> 474 bytes .../res/drawable-xxhdpi/guyantvrefresh02.webp | Bin 0 -> 520 bytes .../res/drawable-xxhdpi/guyantvrefresh03.webp | Bin 0 -> 830 bytes .../res/drawable-xxhdpi/guyantvrefresh04.webp | Bin 0 -> 862 bytes .../res/drawable-xxhdpi/guyantvrefresh05.webp | Bin 0 -> 896 bytes .../res/drawable-xxhdpi/guyantvrefresh06.webp | Bin 0 -> 1300 bytes .../res/drawable-xxhdpi/guyantvrefresh07.webp | Bin 0 -> 1338 bytes .../res/drawable-xxhdpi/guyantvrefresh08.webp | Bin 0 -> 1390 bytes .../res/drawable-xxhdpi/guyantvrefresh09.webp | Bin 0 -> 1808 bytes .../res/drawable-xxhdpi/guyantvrefresh10.webp | Bin 0 -> 1852 bytes .../res/drawable-xxhdpi/guyantvrefresh11.webp | Bin 0 -> 1900 bytes .../res/drawable-xxhdpi/guyantvrefresh12.webp | Bin 0 -> 2424 bytes .../res/drawable-xxhdpi/guyantvrefresh13.webp | Bin 0 -> 2466 bytes .../res/drawable-xxhdpi/guyantvrefresh14.webp | Bin 0 -> 2518 bytes .../res/drawable-xxhdpi/guyantvrefresh15.webp | Bin 0 -> 2780 bytes .../res/drawable-xxhdpi/guyantvrefresh16.webp | Bin 0 -> 2806 bytes .../res/drawable-xxhdpi/guyantvrefresh17.webp | Bin 0 -> 2836 bytes .../res/drawable-xxhdpi/guyantvrefresh18.webp | Bin 0 -> 3238 bytes .../res/drawable-xxhdpi/guyantvrefresh19.webp | Bin 0 -> 3274 bytes .../res/drawable-xxhdpi/guyantvrefresh20.webp | Bin 0 -> 3310 bytes .../res/drawable-xxhdpi/guyantvrefresh21.webp | Bin 0 -> 3870 bytes .../res/drawable-xxhdpi/guyantvrefresh22.webp | Bin 0 -> 3866 bytes .../res/drawable-xxhdpi/guyantvrefresh23.webp | Bin 0 -> 3870 bytes .../res/drawable-xxhdpi/guyantvrefresh24.webp | Bin 0 -> 3980 bytes .../res/drawable-xxhdpi/guyantvrefresh25.webp | Bin 0 -> 3992 bytes .../res/drawable-xxhdpi/guyantvrefresh26.webp | Bin 0 -> 4132 bytes .../res/drawable-xxhdpi/guyantvrefresh27.webp | Bin 0 -> 4222 bytes .../res/drawable-xxhdpi/guyantvrefresh28.webp | Bin 0 -> 4226 bytes .../res/drawable-xxhdpi/guyantvrefresh29.webp | Bin 0 -> 4232 bytes .../res/drawable-xxhdpi/guyantvrefresh30.webp | Bin 0 -> 4296 bytes .../res/drawable-xxhdpi/guyantvrefresh31.webp | Bin 0 -> 4296 bytes .../res/drawable-xxhdpi/guyantvrefresh32.webp | Bin 0 -> 4296 bytes .../main/res/drawable-xxhdpi/loading00.webp | Bin 0 -> 3342 bytes .../main/res/drawable-xxhdpi/loading01.webp | Bin 0 -> 784 bytes .../main/res/drawable-xxhdpi/loading02.webp | Bin 0 -> 918 bytes .../main/res/drawable-xxhdpi/loading03.webp | Bin 0 -> 1028 bytes .../main/res/drawable-xxhdpi/loading04.webp | Bin 0 -> 1110 bytes .../main/res/drawable-xxhdpi/loading05.webp | Bin 0 -> 1148 bytes .../main/res/drawable-xxhdpi/loading06.webp | Bin 0 -> 1262 bytes .../main/res/drawable-xxhdpi/loading07.webp | Bin 0 -> 1358 bytes .../main/res/drawable-xxhdpi/loading08.webp | Bin 0 -> 1498 bytes .../main/res/drawable-xxhdpi/loading09.webp | Bin 0 -> 1590 bytes .../main/res/drawable-xxhdpi/loading10.webp | Bin 0 -> 1684 bytes .../main/res/drawable-xxhdpi/loading11.webp | Bin 0 -> 1810 bytes .../main/res/drawable-xxhdpi/loading12.webp | Bin 0 -> 1952 bytes .../main/res/drawable-xxhdpi/loading13.webp | Bin 0 -> 2092 bytes .../main/res/drawable-xxhdpi/loading14.webp | Bin 0 -> 2200 bytes .../main/res/drawable-xxhdpi/loading15.webp | Bin 0 -> 2302 bytes .../main/res/drawable-xxhdpi/loading16.webp | Bin 0 -> 2360 bytes .../main/res/drawable-xxhdpi/loading17.webp | Bin 0 -> 2434 bytes .../main/res/drawable-xxhdpi/loading18.webp | Bin 0 -> 2532 bytes .../main/res/drawable-xxhdpi/loading19.webp | Bin 0 -> 2632 bytes .../main/res/drawable-xxhdpi/loading20.webp | Bin 0 -> 2752 bytes .../main/res/drawable-xxhdpi/loading21.webp | Bin 0 -> 2752 bytes .../main/res/drawable-xxhdpi/loading22.webp | Bin 0 -> 2762 bytes .../main/res/drawable-xxhdpi/loading23.webp | Bin 0 -> 2776 bytes .../main/res/drawable-xxhdpi/loading24.webp | Bin 0 -> 2822 bytes .../main/res/drawable-xxhdpi/loading25.webp | Bin 0 -> 2876 bytes .../main/res/drawable-xxhdpi/loading26.webp | Bin 0 -> 3320 bytes .../main/res/drawable-xxhdpi/loading27.webp | Bin 0 -> 3340 bytes .../main/res/drawable-xxhdpi/loading28.webp | Bin 0 -> 3362 bytes .../main/res/drawable-xxhdpi/loading29.webp | Bin 0 -> 3364 bytes .../main/res/drawable-xxhdpi/loading30.webp | Bin 0 -> 3342 bytes .../main/res/drawable-xxhdpi/logo_big_ic.png | Bin 0 -> 161468 bytes .../res/drawable-xxhdpi/update_app_top_bg.png | Bin 0 -> 189650 bytes .../app/src/main/res/drawable/add_ic.xml | 18 + .../main/res/drawable/arrows_bottom_ic.xml | 16 + .../src/main/res/drawable/arrows_left_ic.xml | 16 + .../src/main/res/drawable/arrows_right_ic.xml | 16 + .../src/main/res/drawable/arrows_top_ic.xml | 16 + .../res/drawable/avatar_placeholder_ic.xml | 64 + .../app/src/main/res/drawable/bg_bule_17.xml | 7 + .../res/drawable/bg_example_dialog_series.xml | 9 + .../bg_example_dialog_un_collection.xml | 9 + .../main/res/drawable/bg_example_me_login.xml | 9 + .../main/res/drawable/bg_example_num_h.xml | 10 + .../main/res/drawable/bg_example_num_n.xml | 9 + .../drawable/bg_example_seekbar_player.xml | 15 + .../bg_example_shape_seekbar_player.xml | 4 + .../drawable/bg_example_text_think_again.xml | 9 + .../bg_example_text_un_collection.xml | 9 + .../main/res/drawable/bg_powder_red_17.xml | 7 + .../main/res/drawable/bg_seekbar_player.xml | 15 + .../res/drawable/bg_thumb_seekbar_player.xml | 4 + .../src/main/res/drawable/bg_unlocking.xml | 8 + .../main/res/drawable/bg_unlocking_ads.xml | 7 + .../app/src/main/res/drawable/bg_white_20.xml | 7 + .../res/drawable/button_circle_selector.xml | 37 + .../res/drawable/button_rect_selector.xml | 17 + .../app/src/main/res/drawable/camera_ic.xml | 13 + .../main/res/drawable/checkbox_checked_ic.xml | 11 + .../main/res/drawable/checkbox_disable_ic.xml | 12 + .../main/res/drawable/checkbox_selector.xml | 13 + .../main/res/drawable/checkbox_selector_2.xml | 13 + .../app/src/main/res/drawable/close_icon.xml | 18 + .../main/res/drawable/compound_normal_ic.xml | 11 + .../res/drawable/countdown_color_selector.xml | 16 + .../main/res/drawable/countdown_selector.xml | 38 + .../app/src/main/res/drawable/delete_ic.xml | 31 + .../src/main/res/drawable/dialog_input_bg.xml | 11 + .../app/src/main/res/drawable/example_bg.xml | 32 + .../res/drawable/guide_indicator_selected.xml | 6 + .../drawable/guide_indicator_unselected.xml | 6 + .../res/drawable/home_explore_selector.xml | 10 + .../main/res/drawable/home_home_off_ic.xml | 25 + .../src/main/res/drawable/home_home_on_ic.xml | 46 + .../main/res/drawable/home_home_selector.xml | 10 + .../main/res/drawable/home_me_selector.xml | 10 + .../res/drawable/home_my_list_selector.xml | 10 + .../res/drawable/home_rewards_selector.xml | 10 + .../res/drawable/home_search_bar_gray_bg.xml | 8 + .../home_search_bar_transparent_bg.xml | 9 + .../src/main/res/drawable/image_error_ic.xml | 40 + .../main/res/drawable/image_loading_ic.xml | 43 + .../res/drawable/image_preview_indicator.xml | 6 + .../app/src/main/res/drawable/info_ic.xml | 27 + .../app/src/main/res/drawable/login_qq_ic.xml | 21 + .../src/main/res/drawable/login_wechat_ic.xml | 41 + .../app/src/main/res/drawable/my_loading.xml | 35 + .../src/main/res/drawable/my_refresh_head.xml | 37 + .../app/src/main/res/drawable/phone_ic.xml | 24 + .../res/drawable/progress_gradient_bg.xml | 22 + .../main/res/drawable/progress_loading_bg.xml | 6 + .../res/drawable/radiobutton_checked_ic.xml | 11 + .../res/drawable/radiobutton_disable_ic.xml | 12 + .../res/drawable/radiobutton_selector.xml | 13 + .../app/src/main/res/drawable/reboot_ic.xml | 21 + .../src/main/res/drawable/roll_accent_bg.xml | 235 + .../app/src/main/res/drawable/safe_ic.xml | 24 + .../app/src/main/res/drawable/search_ic.xml | 57 + .../app/src/main/res/drawable/share_ic.xml | 36 + .../src/main/res/drawable/share_link_ic.xml | 10 + .../src/main/res/drawable/share_moment_ic.xml | 31 + .../app/src/main/res/drawable/share_qq_ic.xml | 10 + .../src/main/res/drawable/share_qzone_ic.xml | 10 + .../src/main/res/drawable/share_wechat_ic.xml | 13 + .../src/main/res/drawable/status_empty_ic.xml | 709 +++ .../src/main/res/drawable/status_error_ic.xml | 799 +++ .../main/res/drawable/status_network_ic.xml | 723 +++ .../src/main/res/drawable/status_order_ic.xml | 904 +++ .../app/src/main/res/drawable/succeed_ic.xml | 13 + .../src/main/res/drawable/tips_error_ic.xml | 36 + .../src/main/res/drawable/tips_finish_ic.xml | 30 + .../src/main/res/drawable/tips_warning_ic.xml | 32 + .../res/drawable/transparent_selector.xml | 17 + .../res/drawable/video_brightness_high_ic.xml | 11 + .../res/drawable/video_brightness_low_ic.xml | 11 + .../drawable/video_brightness_medium_ic.xml | 11 + .../main/res/drawable/video_lock_close_ic.xml | 11 + .../main/res/drawable/video_lock_open_ic.xml | 11 + .../res/drawable/video_progress_ball_bg.xml | 9 + .../main/res/drawable/video_progress_bg.xml | 31 + .../drawable/video_schedule_forward_ic.xml | 11 + .../res/drawable/video_schedule_rewind_ic.xml | 11 + .../res/drawable/video_volume_high_ic.xml | 11 + .../main/res/drawable/video_volume_low_ic.xml | 11 + .../res/drawable/video_volume_medium_ic.xml | 11 + .../res/drawable/video_volume_mute_ic.xml | 11 + .../app/src/main/res/drawable/videocam_ic.xml | 14 + .../src/main/res/drawable/white_selector.xml | 17 + .../src/main/res/layout/about_activity.xml | 94 + .../res/layout/activity_video_play_dh.xml | 22 + .../src/main/res/layout/browser_activity.xml | 47 + .../src/main/res/layout/browser_fragment.xml | 27 + .../res/layout/custom_bubble_attach_popup.xml | 33 + .../layout/custom_progress_dialog_view_dh.xml | 29 + .../res/layout/example_detail_player_view.xml | 13 + .../example_detail_player_view_controller.xml | 234 + .../main/res/layout/example_dialog_series.xml | 180 + .../layout/example_dialog_un_collection.xml | 77 + .../src/main/res/layout/example_emptyview.xml | 31 + .../main/res/layout/example_item_detail.xml | 7 + .../main/res/layout/example_item_num_data.xml | 43 + .../res/layout/example_item_recommend.xml | 7 + .../res/layout/example_item_series_top.xml | 19 + .../main/res/layout/example_network_error.xml | 50 + .../layout/example_recommend_player_view.xml | 14 + ...ample_recommend_player_view_controller.xml | 173 + .../main/res/layout/example_refresh_head.xml | 13 + .../app/src/main/res/layout/find_fragment.xml | 44 + .../res/layout/fragment_categories_tab.xml | 23 + .../src/main/res/layout/fragment_list_tab.xml | 65 + .../app/src/main/res/layout/home_activity.xml | 28 + .../src/main/res/layout/home_banner_item.xml | 92 + .../app/src/main/res/layout/home_fragment.xml | 89 + .../main/res/layout/home_navigation_item.xml | 29 + .../main/res/layout/image_preview_item.xml | 7 + .../app/src/main/res/layout/input_dialog.xml | 16 + .../main/res/layout/item_home_critically.xml | 113 + .../src/main/res/layout/item_home_genres.xml | 28 + .../src/main/res/layout/item_home_short.xml | 76 + .../app/src/main/res/layout/item_home_top.xml | 39 + .../app/src/main/res/layout/item_list_tab.xml | 234 + .../src/main/res/layout/item_me_history.xml | 26 + .../src/main/res/layout/item_search_hot.xml | 88 + .../main/res/layout/item_search_search.xml | 16 + .../layout/layout_controller_player_dh.xml | 237 + .../main/res/layout/layout_home_top_item.xml | 58 + .../main/res/layout/layout_item_video_dh.xml | 19 + .../main/res/layout/layout_progress_dh.xml | 12 + .../app/src/main/res/layout/line_layout.xml | 12 + .../src/main/res/layout/message_dialog.xml | 14 + .../src/main/res/layout/message_fragment.xml | 65 + .../app/src/main/res/layout/mine_fragment.xml | 120 + .../src/main/res/layout/setting_activity.xml | 45 + .../src/main/res/layout/splash_activity.xml | 10 + .../src/main/res/layout/status_activity.xml | 57 + .../src/main/res/layout/tab_item_design.xml | 31 + .../src/main/res/layout/tab_item_sliding.xml | 28 + .../app/src/main/res/layout/tips_dialog.xml | 43 + .../app/src/main/res/layout/ui_dialog.xml | 76 + .../main/res/layout/video_play_activity.xml | 35 + .../app/src/main/res/layout/wait_dialog.xml | 43 + .../main/res/layout/widget_player_view.xml | 166 + .../main/res/layout/widget_status_layout.xml | 52 + .../src/main/res/mipmap-xhdpi/launcher_ic.png | Bin 0 -> 19156 bytes .../src/main/res/mipmap-xxhdpi/bg_splash.webp | Bin 0 -> 760178 bytes .../mipmap-xxhdpi/checkbox_checked_ic.webp | Bin 0 -> 1584 bytes .../close_insufficient_bottom.png | Bin 0 -> 2046 bytes .../mipmap-xxhdpi/compound_normal_ic_1.webp | Bin 0 -> 1140 bytes .../mipmap-xxhdpi/compound_normal_ic_2.webp | Bin 0 -> 1230 bytes .../decoration_modify_background.png | Bin 0 -> 2125 bytes .../main/res/mipmap-xxhdpi/episodes_post.png | Bin 0 -> 1569 bytes .../mipmap-xxhdpi/home_explore_off_ic.webp | Bin 0 -> 2080 bytes .../res/mipmap-xxhdpi/home_explore_on_ic.webp | Bin 0 -> 2980 bytes .../res/mipmap-xxhdpi/home_home_off_ic.webp | Bin 0 -> 2376 bytes .../res/mipmap-xxhdpi/home_home_on_ic.webp | Bin 0 -> 2932 bytes .../res/mipmap-xxhdpi/home_me_off_ic.webp | Bin 0 -> 2236 bytes .../main/res/mipmap-xxhdpi/home_me_on_ic.webp | Bin 0 -> 2834 bytes .../mipmap-xxhdpi/home_my_list_off_ic.webp | Bin 0 -> 1896 bytes .../res/mipmap-xxhdpi/home_my_list_on_ic.webp | Bin 0 -> 2720 bytes .../mipmap-xxhdpi/home_rewards_off_ic.webp | Bin 0 -> 1828 bytes .../res/mipmap-xxhdpi/home_rewards_on_ic.webp | Bin 0 -> 2530 bytes .../main/res/mipmap-xxhdpi/ic_app_logo.webp | Bin 0 -> 1939280 bytes .../main/res/mipmap-xxhdpi/ic_home_add.webp | Bin 0 -> 646 bytes .../res/mipmap-xxhdpi/ic_home_notices.webp | Bin 0 -> 1572 bytes .../main/res/mipmap-xxhdpi/ic_home_paly.webp | Bin 0 -> 984 bytes .../res/mipmap-xxhdpi/ic_home_search.webp | Bin 0 -> 1730 bytes .../main/res/mipmap-xxhdpi/ic_home_top.webp | Bin 0 -> 2174 bytes .../res/mipmap-xxhdpi/ic_list_detele_n.webp | Bin 0 -> 1520 bytes .../res/mipmap-xxhdpi/ic_list_detele_y.webp | Bin 0 -> 1574 bytes .../res/mipmap-xxhdpi/ic_list_menu_bg.webp | Bin 0 -> 16300 bytes .../res/mipmap-xxhdpi/ic_list_menu_edit.webp | Bin 0 -> 1192 bytes .../mipmap-xxhdpi/ic_list_menu_grid_mode.webp | Bin 0 -> 1014 bytes .../main/res/mipmap-xxhdpi/ic_list_more.webp | Bin 0 -> 964 bytes .../main/res/mipmap-xxhdpi/ic_list_start.png | Bin 0 -> 786 bytes .../mipmap-xxhdpi/ic_play_serise_play.webp | Bin 0 -> 3116 bytes .../res/mipmap-xxhdpi/ic_search_search.webp | Bin 0 -> 1366 bytes .../main/res/mipmap-xxhdpi/ic_unlocking.png | Bin 0 -> 1713 bytes .../main/res/mipmap-xxhdpi/ic_video_ads.png | Bin 0 -> 2004 bytes .../res/mipmap-xxhdpi/icon_home_good.webp | Bin 0 -> 1074 bytes .../res/mipmap-xxhdpi/icon_list_share.png | Bin 0 -> 1115 bytes .../main/res/mipmap-xxhdpi/iv_des_down.webp | Bin 0 -> 254 bytes .../main/res/mipmap-xxhdpi/iv_des_top.webp | Bin 0 -> 260 bytes .../res/mipmap-xxhdpi/iv_example_back.webp | Bin 0 -> 434 bytes .../res/mipmap-xxhdpi/iv_example_close.webp | Bin 0 -> 524 bytes .../iv_example_collection_h.webp | Bin 0 -> 2552 bytes .../iv_example_collection_n.webp | Bin 0 -> 1140 bytes .../iv_example_drama_series.webp | Bin 0 -> 536 bytes .../res/mipmap-xxhdpi/iv_example_lock.webp | Bin 0 -> 302 bytes .../res/mipmap-xxhdpi/iv_example_play.webp | Bin 0 -> 5030 bytes .../iv_example_search_empty.webp | Bin 0 -> 16888 bytes .../res/mipmap-xxhdpi/iv_example_stop.webp | Bin 0 -> 4330 bytes .../mipmap-xxhdpi/iv_left_episode_player.webp | Bin 0 -> 1180 bytes .../main/res/mipmap-xxhdpi/iv_login_icon.webp | Bin 0 -> 5774 bytes .../res/mipmap-xxhdpi/iv_me_agreement.webp | Bin 0 -> 1402 bytes .../main/res/mipmap-xxhdpi/iv_me_help.webp | Bin 0 -> 2134 bytes .../main/res/mipmap-xxhdpi/iv_me_privacy.webp | Bin 0 -> 3134 bytes .../main/res/mipmap-xxhdpi/iv_me_right.webp | Bin 0 -> 356 bytes .../main/res/mipmap-xxhdpi/iv_me_setting.webp | Bin 0 -> 2654 bytes .../res/mipmap-xxhdpi/iv_play_quality.webp | Bin 0 -> 330 bytes .../iv_right_episode_player.webp | Bin 0 -> 2096 bytes .../res/mipmap-xxhdpi/iv_series_top_bg.webp | Bin 0 -> 3016 bytes .../mipmap-xxhdpi/iv_series_top_right.webp | Bin 0 -> 1320 bytes .../main/res/mipmap-xxhdpi/iv_vip_tag.webp | Bin 0 -> 1230 bytes .../main/res/mipmap-xxhdpi/iv_vip_tag_n.webp | Bin 0 -> 608 bytes .../main/res/mipmap-xxhdpi/launcher_ic.png | Bin 0 -> 32860 bytes .../src/main/res/mipmap-xxhdpi/main_order.png | Bin 0 -> 931 bytes .../res/mipmap-xxhdpi/page_unlock_main.png | Bin 0 -> 7716 bytes .../res/mipmap-xxhdpi/play_security_pager.png | Bin 0 -> 2156 bytes .../res/mipmap-xxhdpi/status_nothing.webp | Bin 0 -> 69980 bytes .../main/res/mipmap-xxxhdpi/launcher_ic.png | Bin 0 -> 50429 bytes .../app/src/main/res/raw/loading.json | 1 + .../app/src/main/res/raw/progress.json | 1 + .../app/src/main/res/raw/province.json | 5537 +++++++++++++++++ .../app/src/main/res/values/attrs.xml | 5 + .../app/src/main/res/values/colors.xml | 26 + .../app/src/main/res/values/dimens.xml | 11 + .../app/src/main/res/values/integers.xml | 6 + .../app/src/main/res/values/strings.xml | 295 + .../app/src/main/res/values/styles.xml | 106 + .../app/src/main/res/values/themes.xml | 16 + .../app/src/main/res/xml/file_paths.xml | 14 + .../main/res/xml/network_security_config.xml | 4 + Android_Mireo/build.gradle | 42 + Android_Mireo/common.gradle | 59 + Android_Mireo/configs.gradle | 41 + Android_Mireo/gradle.properties | 21 + Android_Mireo/gradlew | 160 + Android_Mireo/gradlew.bat | 90 + Android_Mireo/library/base/build.gradle | 18 + Android_Mireo/library/base/proguard-base.pro | 61 + .../library/base/src/main/AndroidManifest.xml | 1 + .../main/java/com/hjq/base/BaseActivity.kt | 141 + .../src/main/java/com/hjq/base/BaseAdapter.kt | 179 + .../src/main/java/com/hjq/base/BaseDialog.kt | 935 +++ .../main/java/com/hjq/base/BaseFragment.kt | 166 + .../java/com/hjq/base/FragmentPagerAdapter.kt | 99 + .../com/hjq/base/action/ActivityAction.kt | 40 + .../java/com/hjq/base/action/AnimAction.kt | 27 + .../java/com/hjq/base/action/BundleAction.kt | 82 + .../java/com/hjq/base/action/ClickAction.kt | 32 + .../java/com/hjq/base/action/HandlerAction.kt | 38 + .../com/hjq/base/action/KeyboardAction.kt | 34 + .../com/hjq/base/action/ResourcesAction.kt | 40 + .../main/res-sw/values-sw1024dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw1024dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw1280dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw1280dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw1365dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw1365dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw240dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw240dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw320dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw320dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw360dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw360dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw362dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw362dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw384dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw384dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw392dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw392dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw400dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw400dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw410dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw410dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw411dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw411dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw432dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw432dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw480dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw480dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw533dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw533dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw540dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw540dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw592dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw592dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw600dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw600dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw640dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw640dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw662dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw662dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw720dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw720dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw768dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw768dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw800dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw800dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw811dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw811dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw820dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw820dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw960dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw960dp/dimens_sp.xml | 32 + .../main/res-sw/values-sw961dp/dimens_dp.xml | 389 ++ .../main/res-sw/values-sw961dp/dimens_sp.xml | 32 + .../base/src/main/res-sw/values/dimens_dp.xml | 389 ++ .../base/src/main/res-sw/values/dimens_sp.xml | 32 + .../src/main/res/anim/layout_fall_down.xml | 5 + .../main/res/anim/layout_fall_down_item.xml | 24 + .../src/main/res/anim/layout_from_bottom.xml | 5 + .../main/res/anim/layout_from_bottom_item.xml | 15 + .../src/main/res/anim/layout_from_right.xml | 5 + .../main/res/anim/layout_from_right_item.xml | 15 + .../src/main/res/anim/window_bottom_in.xml | 5 + .../src/main/res/anim/window_bottom_out.xml | 5 + .../base/src/main/res/anim/window_ios_in.xml | 18 + .../base/src/main/res/anim/window_ios_out.xml | 18 + .../base/src/main/res/anim/window_left_in.xml | 5 + .../src/main/res/anim/window_left_out.xml | 5 + .../src/main/res/anim/window_right_in.xml | 5 + .../src/main/res/anim/window_right_out.xml | 5 + .../src/main/res/anim/window_scale_in.xml | 39 + .../src/main/res/anim/window_scale_out.xml | 19 + .../base/src/main/res/anim/window_top_in.xml | 5 + .../base/src/main/res/anim/window_top_out.xml | 5 + .../base/src/main/res/values/colors.xml | 60 + .../base/src/main/res/values/integers.xml | 4 + .../base/src/main/res/values/styles.xml | 50 + Android_Mireo/library/widget/build.gradle | 6 + .../widget/src/main/AndroidManifest.xml | 1 + .../com/hjq/widget/layout/CustomViewStub.kt | 64 + .../hjq/widget/layout/NestedLinearLayout.kt | 222 + .../hjq/widget/layout/NestedScrollWebView.kt | 124 + .../com/hjq/widget/layout/NestedViewPager.kt | 88 + .../hjq/widget/layout/NoScrollViewPager.kt | 30 + .../java/com/hjq/widget/layout/SettingBar.kt | 391 ++ .../com/hjq/widget/layout/WrapRecyclerView.kt | 316 + .../java/com/hjq/widget/view/ClearEditText.kt | 96 + .../java/com/hjq/widget/view/CountdownView.kt | 54 + .../com/hjq/widget/view/PasswordEditText.kt | 126 + .../java/com/hjq/widget/view/PlayButton.kt | 197 + .../com/hjq/widget/view/PressAlphaTextView.kt | 15 + .../java/com/hjq/widget/view/RegexEditText.kt | 130 + .../com/hjq/widget/view/ScaleImageView.kt | 34 + .../com/hjq/widget/view/SlantedTextView.kt | 308 + .../java/com/hjq/widget/view/SmartTextView.kt | 61 + .../src/main/res/drawable/input_delete_ic.xml | 15 + .../src/main/res/drawable/password_off_ic.xml | 32 + .../src/main/res/drawable/password_on_ic.xml | 25 + .../main/res/drawable/rating_star_fill_ic.xml | 20 + .../main/res/drawable/rating_star_half_ic.xml | 66 + .../main/res/drawable/rating_star_off_ic.xml | 20 + .../widget/src/main/res/values/attrs.xml | 67 + Android_Mireo/local.properties | 8 + Android_Mireo/maven.gradle | 11 + Android_Mireo/settings.gradle | 3 + GiftAgainNew/.idea/.gitignore | 3 + GiftAgainNew/.idea/GiftAgainNew.iml | 9 + GiftAgainNew/.idea/misc.xml | 5 + GiftAgainNew/.idea/modules.xml | 8 + GiftAgainNew/.idea/vcs.xml | 6 + 557 files changed, 42392 insertions(+) create mode 100644 Android_Mireo/.gitignore create mode 100644 Android_Mireo/app/AppMireo.jks create mode 100644 Android_Mireo/app/build.gradle create mode 100644 Android_Mireo/app/gradle.properties create mode 100644 Android_Mireo/app/proguard-app.pro create mode 100644 Android_Mireo/app/proguard-sdk.pro create mode 100644 Android_Mireo/app/src/main/AndroidManifest.xml create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/action/StatusAction.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/action/TitleBarAction.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/action/ToastAction.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNet.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNetAspect.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Log.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/LogAspect.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Permissions.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/PermissionsAspect.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClick.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClickAspect.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppApplication.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/BaseEventBus.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/app/TitleBarFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CancelCollectApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CreateHistoryApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CustomerRegisterApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DetailsRecommendRes.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DoCollectApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/ExampleRecommendDataRes.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HistoryBean.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeBannerApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeCategoriesApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeDayMaxRechargeShortPlayRankApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeModuleApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeRecommendApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeVideoListApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyCollectionsApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyHistoryApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/RecommendBean.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchHotApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchSearchApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoRes.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/HttpBodyInterceptor.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/ResultException.java create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/TokenException.java create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/CharsetInterceptor.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpCacheManager.java create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpData.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpListData.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestHandler.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestServer.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/ActivityManager.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/CacheDataManager.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/PickerLayoutManager.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/AppConfig.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/CrashHandler.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/DebugLoggerTree.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MaterialHeader.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/PermissionCallback.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/SmartBallPulseFooter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/TitleBarStyle.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/other/ToastStyle.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/AboutActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/BrowserActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/HomeActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SearchActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SettingActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SplashActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeBannerAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCategoriesTabAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCriticallyAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeGenresAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeShortAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeTopAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/LostTabAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/MeHistoryAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/NavigationAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchHotAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchSearchAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/TabAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/CommonDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/InputDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/MessageDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/TipsDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/WaitDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/BrowserFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeCategoriesTabFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ListTabFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MessageFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/SharedViewModel.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/popup/CustomBubbleAttachPopup.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExamplePlayerDetailDataRes.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDataAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDialogFragment.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesNumAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleUnFavoriteDialog.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/FfmpegRenderersFactory.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/LoadingLine.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/MyHeaderView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/TranslatesRes.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayAdapter.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/DHStringUtils.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/ExampleStand.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsMMKVUtils.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsSystemUtlis.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/TranslatesUtils.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/BrowserView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/CustomNestedScrollView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/LoadingAnimationView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/PasswordView.kt create mode 100644 Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/StatusLayout.kt create mode 100644 Android_Mireo/app/src/main/res/anim/left_in_activity.xml create mode 100644 Android_Mireo/app/src/main/res/anim/left_out_activity.xml create mode 100644 Android_Mireo/app/src/main/res/anim/right_in_activity.xml create mode 100644 Android_Mireo/app/src/main/res/anim/right_out_activity.xml create mode 100644 Android_Mireo/app/src/main/res/anim/shake_anim.xml create mode 100644 Android_Mireo/app/src/main/res/anim/shake_interpolator.xml create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_1_bg.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_2_bg.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_3_bg.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh00.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh01.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh02.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh03.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh04.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh05.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh06.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh07.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh08.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh09.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh10.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh11.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh12.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh13.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh14.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh15.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh16.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh17.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh18.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh19.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh20.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh21.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh22.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh23.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh24.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh25.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh26.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh27.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh28.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh29.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh30.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh31.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh32.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading00.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading01.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading02.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading03.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading04.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading05.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading06.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading07.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading08.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading09.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading10.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading11.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading12.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading13.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading14.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading15.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading16.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading17.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading18.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading19.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading20.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading21.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading22.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading23.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading24.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading25.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading26.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading27.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading28.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading29.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/loading30.webp create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/logo_big_ic.png create mode 100644 Android_Mireo/app/src/main/res/drawable-xxhdpi/update_app_top_bg.png create mode 100644 Android_Mireo/app/src/main/res/drawable/add_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/arrows_bottom_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/arrows_left_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/arrows_right_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/arrows_top_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/avatar_placeholder_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_bule_17.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_dialog_series.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_dialog_un_collection.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_me_login.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_num_h.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_num_n.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_seekbar_player.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_shape_seekbar_player.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_text_think_again.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_example_text_un_collection.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_powder_red_17.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_seekbar_player.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_thumb_seekbar_player.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_unlocking.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_unlocking_ads.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/bg_white_20.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/button_circle_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/button_rect_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/camera_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/checkbox_checked_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/checkbox_disable_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/checkbox_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/checkbox_selector_2.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/close_icon.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/compound_normal_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/countdown_color_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/countdown_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/delete_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/dialog_input_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/example_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/guide_indicator_selected.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/guide_indicator_unselected.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_explore_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_home_off_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_home_on_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_home_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_me_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_my_list_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_rewards_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_search_bar_gray_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/home_search_bar_transparent_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/image_error_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/image_loading_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/image_preview_indicator.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/info_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/login_qq_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/login_wechat_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/my_loading.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/my_refresh_head.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/phone_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/progress_gradient_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/progress_loading_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/radiobutton_checked_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/radiobutton_disable_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/radiobutton_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/reboot_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/roll_accent_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/safe_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/search_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_link_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_moment_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_qq_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_qzone_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/share_wechat_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/status_empty_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/status_error_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/status_network_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/status_order_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/succeed_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/tips_error_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/tips_finish_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/tips_warning_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/transparent_selector.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_brightness_high_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_brightness_low_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_brightness_medium_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_lock_close_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_lock_open_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_progress_ball_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_progress_bg.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_schedule_forward_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_schedule_rewind_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_volume_high_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_volume_low_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_volume_medium_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/video_volume_mute_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/videocam_ic.xml create mode 100644 Android_Mireo/app/src/main/res/drawable/white_selector.xml create mode 100644 Android_Mireo/app/src/main/res/layout/about_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/activity_video_play_dh.xml create mode 100644 Android_Mireo/app/src/main/res/layout/browser_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/browser_fragment.xml create mode 100644 Android_Mireo/app/src/main/res/layout/custom_bubble_attach_popup.xml create mode 100644 Android_Mireo/app/src/main/res/layout/custom_progress_dialog_view_dh.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_detail_player_view.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_detail_player_view_controller.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_dialog_series.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_dialog_un_collection.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_emptyview.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_item_detail.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_item_num_data.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_item_recommend.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_item_series_top.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_network_error.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_recommend_player_view.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_recommend_player_view_controller.xml create mode 100644 Android_Mireo/app/src/main/res/layout/example_refresh_head.xml create mode 100644 Android_Mireo/app/src/main/res/layout/find_fragment.xml create mode 100644 Android_Mireo/app/src/main/res/layout/fragment_categories_tab.xml create mode 100644 Android_Mireo/app/src/main/res/layout/fragment_list_tab.xml create mode 100644 Android_Mireo/app/src/main/res/layout/home_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/home_banner_item.xml create mode 100644 Android_Mireo/app/src/main/res/layout/home_fragment.xml create mode 100644 Android_Mireo/app/src/main/res/layout/home_navigation_item.xml create mode 100644 Android_Mireo/app/src/main/res/layout/image_preview_item.xml create mode 100644 Android_Mireo/app/src/main/res/layout/input_dialog.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_home_critically.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_home_genres.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_home_short.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_home_top.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_list_tab.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_me_history.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_search_hot.xml create mode 100644 Android_Mireo/app/src/main/res/layout/item_search_search.xml create mode 100644 Android_Mireo/app/src/main/res/layout/layout_controller_player_dh.xml create mode 100644 Android_Mireo/app/src/main/res/layout/layout_home_top_item.xml create mode 100644 Android_Mireo/app/src/main/res/layout/layout_item_video_dh.xml create mode 100644 Android_Mireo/app/src/main/res/layout/layout_progress_dh.xml create mode 100644 Android_Mireo/app/src/main/res/layout/line_layout.xml create mode 100644 Android_Mireo/app/src/main/res/layout/message_dialog.xml create mode 100644 Android_Mireo/app/src/main/res/layout/message_fragment.xml create mode 100644 Android_Mireo/app/src/main/res/layout/mine_fragment.xml create mode 100644 Android_Mireo/app/src/main/res/layout/setting_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/splash_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/status_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/tab_item_design.xml create mode 100644 Android_Mireo/app/src/main/res/layout/tab_item_sliding.xml create mode 100644 Android_Mireo/app/src/main/res/layout/tips_dialog.xml create mode 100644 Android_Mireo/app/src/main/res/layout/ui_dialog.xml create mode 100644 Android_Mireo/app/src/main/res/layout/video_play_activity.xml create mode 100644 Android_Mireo/app/src/main/res/layout/wait_dialog.xml create mode 100644 Android_Mireo/app/src/main/res/layout/widget_player_view.xml create mode 100644 Android_Mireo/app/src/main/res/layout/widget_status_layout.xml create mode 100644 Android_Mireo/app/src/main/res/mipmap-xhdpi/launcher_ic.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/bg_splash.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/checkbox_checked_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/close_insufficient_bottom.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_1.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_2.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/decoration_modify_background.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/episodes_post.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_off_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_on_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_home_off_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_home_on_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_off_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_on_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_my_list_off_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_my_list_on_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_off_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_on_ic.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_app_logo.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_add.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_notices.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_paly.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_search.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_top.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_detele_n.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_detele_y.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_bg.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_edit.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_grid_mode.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_more.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_start.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_play_serise_play.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_search_search.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_unlocking.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_video_ads.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/icon_home_good.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/icon_list_share.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_des_down.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_des_top.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_back.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_close.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_collection_h.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_collection_n.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_drama_series.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_lock.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_play.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_search_empty.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_stop.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_left_episode_player.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_login_icon.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_agreement.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_help.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_privacy.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_right.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_setting.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_play_quality.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_right_episode_player.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_series_top_bg.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_series_top_right.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_vip_tag.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_vip_tag_n.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/launcher_ic.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/main_order.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/page_unlock_main.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/play_security_pager.png create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxhdpi/status_nothing.webp create mode 100644 Android_Mireo/app/src/main/res/mipmap-xxxhdpi/launcher_ic.png create mode 100644 Android_Mireo/app/src/main/res/raw/loading.json create mode 100644 Android_Mireo/app/src/main/res/raw/progress.json create mode 100644 Android_Mireo/app/src/main/res/raw/province.json create mode 100644 Android_Mireo/app/src/main/res/values/attrs.xml create mode 100644 Android_Mireo/app/src/main/res/values/colors.xml create mode 100644 Android_Mireo/app/src/main/res/values/dimens.xml create mode 100644 Android_Mireo/app/src/main/res/values/integers.xml create mode 100644 Android_Mireo/app/src/main/res/values/strings.xml create mode 100644 Android_Mireo/app/src/main/res/values/styles.xml create mode 100644 Android_Mireo/app/src/main/res/values/themes.xml create mode 100644 Android_Mireo/app/src/main/res/xml/file_paths.xml create mode 100644 Android_Mireo/app/src/main/res/xml/network_security_config.xml create mode 100644 Android_Mireo/build.gradle create mode 100644 Android_Mireo/common.gradle create mode 100644 Android_Mireo/configs.gradle create mode 100644 Android_Mireo/gradle.properties create mode 100644 Android_Mireo/gradlew create mode 100644 Android_Mireo/gradlew.bat create mode 100644 Android_Mireo/library/base/build.gradle create mode 100644 Android_Mireo/library/base/proguard-base.pro create mode 100644 Android_Mireo/library/base/src/main/AndroidManifest.xml create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/BaseActivity.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/BaseAdapter.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/BaseDialog.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/BaseFragment.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/FragmentPagerAdapter.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/ActivityAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/AnimAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/BundleAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/ClickAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/HandlerAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/KeyboardAction.kt create mode 100644 Android_Mireo/library/base/src/main/java/com/hjq/base/action/ResourcesAction.kt create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values/dimens_dp.xml create mode 100644 Android_Mireo/library/base/src/main/res-sw/values/dimens_sp.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_fall_down.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_fall_down_item.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_from_bottom.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_from_bottom_item.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_from_right.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/layout_from_right_item.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_bottom_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_bottom_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_ios_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_ios_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_left_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_left_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_right_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_right_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_scale_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_scale_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_top_in.xml create mode 100644 Android_Mireo/library/base/src/main/res/anim/window_top_out.xml create mode 100644 Android_Mireo/library/base/src/main/res/values/colors.xml create mode 100644 Android_Mireo/library/base/src/main/res/values/integers.xml create mode 100644 Android_Mireo/library/base/src/main/res/values/styles.xml create mode 100644 Android_Mireo/library/widget/build.gradle create mode 100644 Android_Mireo/library/widget/src/main/AndroidManifest.xml create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/CustomViewStub.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedLinearLayout.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedScrollWebView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedViewPager.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NoScrollViewPager.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/SettingBar.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/WrapRecyclerView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ClearEditText.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/CountdownView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PasswordEditText.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PlayButton.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PressAlphaTextView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/RegexEditText.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ScaleImageView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SlantedTextView.kt create mode 100644 Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SmartTextView.kt create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/input_delete_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/password_off_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/password_on_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/rating_star_fill_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/rating_star_half_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/drawable/rating_star_off_ic.xml create mode 100644 Android_Mireo/library/widget/src/main/res/values/attrs.xml create mode 100644 Android_Mireo/local.properties create mode 100644 Android_Mireo/maven.gradle create mode 100644 Android_Mireo/settings.gradle create mode 100644 GiftAgainNew/.idea/.gitignore create mode 100644 GiftAgainNew/.idea/GiftAgainNew.iml create mode 100644 GiftAgainNew/.idea/misc.xml create mode 100644 GiftAgainNew/.idea/modules.xml create mode 100644 GiftAgainNew/.idea/vcs.xml diff --git a/Android_Mireo/.gitignore b/Android_Mireo/.gitignore new file mode 100644 index 0000000..34b8758 --- /dev/null +++ b/Android_Mireo/.gitignore @@ -0,0 +1,16 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties +/app/release \ No newline at end of file diff --git a/Android_Mireo/app/AppMireo.jks b/Android_Mireo/app/AppMireo.jks new file mode 100644 index 0000000000000000000000000000000000000000..e23aeab91789b4b61764cc9f4b04221be40f592e GIT binary patch literal 2652 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 + variant.outputs.all { output -> + outputFileName = rootProject.getName() + '_v' + variant.versionName + '_' + variant.buildType.name + if (variant.buildType.name == buildTypes.release.getName()) { + outputFileName += '_' + new Date().format('MMdd') + } + outputFileName += '.apk' + } + } +} + +dependencies { + implementation project(':library:base') + implementation project(':library:widget') + + implementation 'com.github.getActivity:XXPermissions:12.3' + + implementation 'com.github.getActivity:TitleBar:9.2' + + implementation 'com.github.getActivity:ToastUtils:9.5' + + implementation 'com.github.getActivity:EasyHttp:13.0' + implementation 'com.squareup.okhttp3:okhttp:3.14.9' + + implementation 'com.google.code.gson:gson:2.8.8' + implementation 'com.github.getActivity:GsonFactory:5.2' + + implementation 'com.github.getActivity:ShapeView:9.0' + + implementation 'org.aspectj:aspectjrt:1.9.6' + + implementation 'com.github.bumptech.glide:glide:4.12.0' + kapt 'com.github.bumptech.glide:compiler:4.12.0' + + implementation 'com.gyf.immersionbar:immersionbar:3.0.0' + + implementation 'com.github.Baseflow:PhotoView:2.3.0' + + implementation 'com.tencent.bugly:crashreport:3.4.4' + implementation 'com.tencent.bugly:nativecrashreport:3.9.2' + + implementation 'com.airbnb.android:lottie:4.1.0' + + implementation 'com.scwang.smart:refresh-layout-kernel:2.0.3' + implementation 'com.scwang.smart:refresh-header-material:2.0.3' + + implementation 'com.jakewharton.timber:timber:4.7.1' + + implementation 'me.relex:circleindicator:2.1.6' + + implementation 'com.tencent:mmkv-static:1.2.10' + + // banner + implementation 'io.github.youth5201314:banner:2.2.3' + + implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4" + + implementation "com.afollestad.material-dialogs:core:3.1.1" + implementation "com.afollestad.material-dialogs:lifecycle:3.1.1" + + implementation "androidx.media3:media3-ui:1.4.0" + implementation "androidx.media3:media3-exoplayer:1.4.0" + implementation "androidx.media3:media3-exoplayer-dash:1.4.0" + implementation "androidx.media3:media3-exoplayer-hls:1.4.0" + implementation(files("libs/lib-decoder-ffmpeg-release.aar")) + + implementation "org.greenrobot:eventbus:3.3.1" + implementation("com.blankj:utilcodex:1.31.1") + implementation("com.github.li-xiaojun:XPopup:2.10.0") + + +} \ No newline at end of file diff --git a/Android_Mireo/app/gradle.properties b/Android_Mireo/app/gradle.properties new file mode 100644 index 0000000..f3d52d8 --- /dev/null +++ b/Android_Mireo/app/gradle.properties @@ -0,0 +1,4 @@ +StoreFile = AppMireo.jks +StorePassword = appmireo +KeyAlias = appmireo +KeyPassword = appmireo \ No newline at end of file diff --git a/Android_Mireo/app/proguard-app.pro b/Android_Mireo/app/proguard-app.pro new file mode 100644 index 0000000..692091e --- /dev/null +++ b/Android_Mireo/app/proguard-app.pro @@ -0,0 +1,36 @@ +#-ignorewarning + +-libraryjars libs/lib-decoder-ffmpeg-release.aar + +-keep class com.localee.mireo.app.http.api.** { + ; +} +-keep class com.localee.mireo.app.http.response.** { + ; +} +-keep class com.localee.mireo.app.http.model.** { + ; +} +-keep class com.localee.mireo.app.http.exception.** { + ; +} + +-keepclassmembernames class ** { + @com.localee.mireo.app.aop.Log ; +} + + +-keep public class * extends android.view.View{ + *** get*(); + void set*(***); + public (android.content.Context); + public (android.content.Context, android.util.AttributeSet); + public (android.content.Context, android.util.AttributeSet, int); +} +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet); + public (android.content.Context, android.util.AttributeSet, int); +} +-keepclassmembers class * { + public void *(android.view.View); +} \ No newline at end of file diff --git a/Android_Mireo/app/proguard-sdk.pro b/Android_Mireo/app/proguard-sdk.pro new file mode 100644 index 0000000..af74931 --- /dev/null +++ b/Android_Mireo/app/proguard-sdk.pro @@ -0,0 +1,45 @@ +# Glide +-keep public class * implements com.bumptech.glide.module.GlideModule +-keep class * extends com.bumptech.glide.module.AppGlideModule { + (...); +} +-keep public enum com.bumptech.glide.load.ImageHeaderParser$** { + **[] $VALUES; + public *; +} +-keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder { + *** rewind(); +} + +# for DexGuard only +#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule + +# Bugly +-dontwarn com.tencent.bugly.** +-keep public class com.tencent.bugly.**{*;} + +# AOP +-adaptclassstrings +-keepattributes InnerClasses, EnclosingMethod, Signature, *Annotation* + +-keepnames @org.aspectj.lang.annotation.Aspect class * { + public ; +} + +# OkHttp3 +-keepattributes Signature +-keepattributes *Annotation* +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** +-dontwarn okio.** +-dontwarn org.conscrypt.** + +-keep class com.gyf.immersionbar.* {*;} +-dontwarn com.gyf.immersionbar.** + +# com.hjq +-keep class com.hjq.permissions.** {*;} +-keep class com.hjq.bar.** {*;} +-keep class com.hjq.toast.** {*;} +-keep class com.hjq.shape.** {*;} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/AndroidManifest.xml b/Android_Mireo/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..cb255ab --- /dev/null +++ b/Android_Mireo/app/src/main/AndroidManifest.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/StatusAction.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/StatusAction.kt new file mode 100644 index 0000000..9a1d1f5 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/StatusAction.kt @@ -0,0 +1,74 @@ +package com.localee.mireo.app.action + +import android.graphics.drawable.Drawable +import android.net.ConnectivityManager +import android.net.NetworkInfo +import androidx.annotation.DrawableRes +import androidx.annotation.RawRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import com.localee.mireo.app.R +import com.localee.mireo.app.widget.StatusLayout +import com.localee.mireo.app.widget.StatusLayout.OnRetryListener + + +interface StatusAction { + + + fun getStatusLayout(): StatusLayout? + + + fun showLoading(@RawRes id: Int = R.raw.loading) { + getStatusLayout()?.let { + it.show() + it.setAnimResource(id) + it.setHint("") + it.setOnRetryListener(null) + } + } + + + fun showComplete() { + getStatusLayout()?.let { + if (!it.isShow()) { + return + } + it.hide() + } + } + + + fun showEmpty() { + showLayout(R.drawable.status_empty_ic, R.string.status_layout_no_data, null) + } + + + fun showError(listener: OnRetryListener?) { + getStatusLayout()?.let { + val manager: ConnectivityManager? = ContextCompat.getSystemService(it.context, ConnectivityManager::class.java) + if (manager != null) { + val info: NetworkInfo? = manager.activeNetworkInfo + if (info == null || !info.isConnected) { + showLayout(R.drawable.status_network_ic, R.string.status_layout_error_network, listener) + return + } + } + showLayout(R.drawable.status_error_ic, R.string.status_layout_error_request, listener) + } + } + + fun showLayout(@DrawableRes drawableId: Int, @StringRes stringId: Int, listener: OnRetryListener?) { + getStatusLayout()?.let { + showLayout(ContextCompat.getDrawable(it.context, drawableId), it.context.getString(stringId), listener) + } + } + + fun showLayout(drawable: Drawable?, hint: CharSequence?, listener: OnRetryListener?) { + getStatusLayout()?.let { + it.show() + it.setIcon(drawable) + it.setHint(hint) + it.setOnRetryListener(listener) + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/TitleBarAction.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/TitleBarAction.kt new file mode 100644 index 0000000..2af85fb --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/TitleBarAction.kt @@ -0,0 +1,94 @@ +package com.localee.mireo.app.action + +import android.graphics.drawable.Drawable +import android.view.View +import android.view.ViewGroup +import androidx.annotation.StringRes +import com.hjq.bar.OnTitleBarListener +import com.hjq.bar.TitleBar + +interface TitleBarAction : OnTitleBarListener { + + fun getTitleBar(): TitleBar? + + override fun onLeftClick(view: View) {} + + override fun onTitleClick(view: View) {} + + override fun onRightClick(view: View) {} + + fun setTitle(@StringRes id: Int) { + getTitleBar()?.setTitle(id) + } + + fun setTitle(title: CharSequence?) { + getTitleBar()?.title = title + } + + fun setLeftTitle(id: Int) { + getTitleBar()?.setLeftTitle(id) + } + + fun setLeftTitle(text: CharSequence?) { + getTitleBar()?.leftTitle = text + } + + fun getLeftTitle(): CharSequence? { + return getTitleBar()?.leftTitle + } + + fun setRightTitle(id: Int) { + getTitleBar()?.setRightTitle(id) + } + + fun setRightTitle(text: CharSequence?) { + getTitleBar()?.rightTitle = text + } + + fun getRightTitle(): CharSequence? { + return getTitleBar()?.rightTitle + } + + fun setLeftIcon(id: Int) { + getTitleBar()?.setLeftIcon(id) + } + + fun setLeftIcon(drawable: Drawable?) { + getTitleBar()?.leftIcon = drawable + } + + fun getLeftIcon(): Drawable? { + return getTitleBar()?.leftIcon + } + + fun setRightIcon(id: Int) { + getTitleBar()?.setRightIcon(id) + } + + fun setRightIcon(drawable: Drawable?) { + getTitleBar()?.rightIcon = drawable + } + + fun getRightIcon(): Drawable? { + return getTitleBar()?.rightIcon + } + + fun obtainTitleBar(group: ViewGroup?): TitleBar? { + if (group == null) { + return null + } + for (i in 0 until group.childCount) { + val view = group.getChildAt(i) + if (view is TitleBar) { + return view + } + if (view is ViewGroup) { + val titleBar = obtainTitleBar(view) + if (titleBar != null) { + return titleBar + } + } + } + return null + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/ToastAction.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/ToastAction.kt new file mode 100644 index 0000000..d873451 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/action/ToastAction.kt @@ -0,0 +1,19 @@ +package com.localee.mireo.app.action + +import androidx.annotation.StringRes +import com.hjq.toast.ToastUtils + +interface ToastAction { + + fun toast(text: CharSequence?) { + ToastUtils.show(text) + } + + fun toast(@StringRes id: Int) { + ToastUtils.show(id) + } + + fun toast(`object`: Any?) { + ToastUtils.show(`object`) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNet.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNet.kt new file mode 100644 index 0000000..1a69774 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNet.kt @@ -0,0 +1,7 @@ +package com.localee.mireo.app.aop + +@kotlin.annotation.Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FUNCTION, + AnnotationTarget.PROPERTY_GETTER, + AnnotationTarget.PROPERTY_SETTER) +annotation class CheckNet \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNetAspect.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNetAspect.kt new file mode 100644 index 0000000..6ba2961 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/CheckNetAspect.kt @@ -0,0 +1,36 @@ +package com.localee.mireo.app.aop + +import android.app.* +import android.net.ConnectivityManager +import android.net.NetworkInfo +import androidx.core.content.ContextCompat +import com.localee.mireo.app.R +import com.localee.mireo.app.manager.ActivityManager +import com.hjq.toast.ToastUtils +import org.aspectj.lang.ProceedingJoinPoint +import org.aspectj.lang.annotation.Around +import org.aspectj.lang.annotation.Aspect +import org.aspectj.lang.annotation.Pointcut + +@Suppress("unused") +@Aspect +class CheckNetAspect { + + @Pointcut("execution(@com.localee.mireo.app.aop.CheckNet * *(..))") + fun method() {} + + @Around("method() && @annotation(checkNet)") + @Throws(Throwable::class) + fun aroundJoinPoint(joinPoint: ProceedingJoinPoint, checkNet: CheckNet) { + val application: Application = ActivityManager.getInstance().getApplication() + val manager: ConnectivityManager? = ContextCompat.getSystemService(application, ConnectivityManager::class.java) + if (manager != null) { + val info: NetworkInfo? = manager.activeNetworkInfo + if (info == null || !info.isConnected) { + ToastUtils.show(R.string.common_network_hint) + return + } + } + joinPoint.proceed() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Log.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Log.kt new file mode 100644 index 0000000..9bb1a46 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Log.kt @@ -0,0 +1,8 @@ +package com.localee.mireo.app.aop + +@kotlin.annotation.Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FUNCTION, + AnnotationTarget.PROPERTY_GETTER, + AnnotationTarget.PROPERTY_SETTER, + AnnotationTarget.CONSTRUCTOR) +annotation class Log constructor(val value: String = "AppLog") \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/LogAspect.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/LogAspect.kt new file mode 100644 index 0000000..8420d5f --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/LogAspect.kt @@ -0,0 +1,96 @@ +package com.localee.mireo.app.aop + +import android.os.Looper +import android.os.Trace +import org.aspectj.lang.ProceedingJoinPoint +import org.aspectj.lang.Signature +import org.aspectj.lang.annotation.Around +import org.aspectj.lang.annotation.Aspect +import org.aspectj.lang.annotation.Pointcut +import org.aspectj.lang.reflect.CodeSignature +import org.aspectj.lang.reflect.MethodSignature +import timber.log.Timber +import java.util.concurrent.TimeUnit + +@Suppress("unused") +@Aspect +class LogAspect { + + @Pointcut("execution(@com.localee.mireo.app.aop.Log *.new(..))") + fun constructor() {} + + @Pointcut("execution(@com.localee.mireo.app.aop.Log * *(..))") + fun method() {} + + @Around("(method() || constructor()) && @annotation(log)") + @Throws(Throwable::class) + fun aroundJoinPoint(joinPoint: ProceedingJoinPoint, log: Log): Any? { + enterMethod(joinPoint, log) + val startNanos: Long = System.nanoTime() + val result: Any? = joinPoint.proceed() + val stopNanos: Long = System.nanoTime() + exitMethod(joinPoint, log, result, TimeUnit.NANOSECONDS.toMillis(stopNanos - startNanos)) + return result + } + + private fun enterMethod(joinPoint: ProceedingJoinPoint, log: Log) { + val codeSignature: CodeSignature = joinPoint.signature as CodeSignature + + val className: String = codeSignature.declaringType.name + val methodName: String = codeSignature.name + val parameterNames: Array = codeSignature.parameterNames + val parameterValues: Array = joinPoint.args + + val builder: StringBuilder = + getMethodLogInfo(className, methodName, parameterNames, parameterValues) + log(log.value, builder.toString()) + val section: String = builder.substring(2) + Trace.beginSection(section) + } + + private fun getMethodLogInfo(className: String, methodName: String, parameterNames: Array, parameterValues: Array): StringBuilder { + val builder: StringBuilder = StringBuilder("\u21E2 ") + builder.append(className) + .append(".") + .append(methodName) + .append('(') + for (i in parameterValues.indices) { + if (i > 0) { + builder.append(", ") + } + builder.append(parameterNames[i]).append('=') + builder.append(parameterValues[i].toString()) + } + builder.append(')') + if (Looper.myLooper() != Looper.getMainLooper()) { + builder.append(" [Thread:\"").append(Thread.currentThread().name).append("\"]") + } + return builder + } + + private fun exitMethod(joinPoint: ProceedingJoinPoint, log: Log, result: Any?, lengthMillis: Long) { + Trace.endSection() + val signature: Signature = joinPoint.signature + val className: String? = signature.declaringType.name + val methodName: String? = signature.name + val builder: StringBuilder = StringBuilder("\u21E0 ") + .append(className) + .append(".") + .append(methodName) + .append(" [") + .append(lengthMillis) + .append("ms]") + + // 判断方法是否有返回值 + if (signature is MethodSignature && signature.returnType != Void.TYPE) { + builder.append(" = ") + builder.append(result.toString()) + } + log(log.value, builder.toString()) + } + + private fun log(tag: String?, msg: String?) { + Timber.tag(tag) + Timber.d(msg) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Permissions.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Permissions.kt new file mode 100644 index 0000000..d4641ae --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/Permissions.kt @@ -0,0 +1,9 @@ +package com.localee.mireo.app.aop + +@kotlin.annotation.Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FUNCTION, + AnnotationTarget.PROPERTY_GETTER, + AnnotationTarget.PROPERTY_SETTER) +annotation class Permissions constructor( + vararg val value: String +) \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/PermissionsAspect.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/PermissionsAspect.kt new file mode 100644 index 0000000..804b73b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/PermissionsAspect.kt @@ -0,0 +1,58 @@ +package com.localee.mireo.app.aop + +import android.app.Activity +import com.localee.mireo.app.other.PermissionCallback +import com.hjq.permissions.XXPermissions +import com.localee.mireo.app.manager.ActivityManager +import com.tencent.bugly.crashreport.CrashReport +import org.aspectj.lang.ProceedingJoinPoint +import org.aspectj.lang.annotation.Around +import org.aspectj.lang.annotation.Aspect +import org.aspectj.lang.annotation.Pointcut +import timber.log.Timber + +@Suppress("unused") +@Aspect +class PermissionsAspect { + @Pointcut("execution(@com.localee.mireo.app.aop.Permissions * *(..))") + fun method() {} + + @Around("method() && @annotation(permissions)") + fun aroundJoinPoint(joinPoint: ProceedingJoinPoint, permissions: Permissions) { + var activity: Activity? = null + + val parameterValues: Array = joinPoint.args + for (arg: Any? in parameterValues) { + if (arg !is Activity) { + continue + } + activity = arg + break + } + if ((activity == null) || activity.isFinishing || activity.isDestroyed) { + activity = ActivityManager.getInstance().getTopActivity() + } + if ((activity == null) || activity.isFinishing || activity.isDestroyed) { + Timber.e("The activity has been destroyed and permission requests cannot be made") + return + } + requestPermissions(joinPoint, activity, permissions.value) + } + + private fun requestPermissions(joinPoint: ProceedingJoinPoint, activity: Activity, permissions: Array) { + XXPermissions.with(activity) + .permission(*permissions) + .request(object : PermissionCallback() { + override fun onGranted(permissions: MutableList?, all: Boolean) { + if (all) { + try { + // 获得权限,执行原方法 + joinPoint.proceed() + } catch (e: Throwable) { + CrashReport.postCatchedException(e) + } + } + } + }) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClick.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClick.kt new file mode 100644 index 0000000..f776414 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClick.kt @@ -0,0 +1,9 @@ +package com.localee.mireo.app.aop + +@kotlin.annotation.Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FUNCTION, + AnnotationTarget.PROPERTY_GETTER, + AnnotationTarget.PROPERTY_SETTER) +annotation class SingleClick constructor( + val value: Long = 1000 +) \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClickAspect.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClickAspect.kt new file mode 100644 index 0000000..0077ff1 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/aop/SingleClickAspect.kt @@ -0,0 +1,51 @@ +package com.localee.mireo.app.aop + +import org.aspectj.lang.ProceedingJoinPoint +import org.aspectj.lang.annotation.Around +import org.aspectj.lang.annotation.Aspect +import org.aspectj.lang.annotation.Pointcut +import org.aspectj.lang.reflect.CodeSignature +import timber.log.Timber + +@Suppress("unused") +@Aspect +class SingleClickAspect { + + private var lastTime: Long = 0 + + private var lastTag: String? = null + + @Pointcut("execution(@com.localee.mireo.app.aop.SingleClick * *(..))") + fun method() {} + + @Around("method() && @annotation(singleClick)") + @Throws(Throwable::class) + fun aroundJoinPoint(joinPoint: ProceedingJoinPoint, singleClick: SingleClick) { + val codeSignature: CodeSignature = joinPoint.signature as CodeSignature + val className: String = codeSignature.declaringType.name + val methodName: String = codeSignature.name + val builder: StringBuilder = StringBuilder("$className.$methodName") + builder.append("(") + val parameterValues: Array = joinPoint.args + for (i in parameterValues.indices) { + val arg: Any? = parameterValues[i] + if (i == 0) { + builder.append(arg) + } else { + builder.append(", ") + .append(arg) + } + } + builder.append(")") + val tag: String = builder.toString() + val currentTimeMillis: Long = System.currentTimeMillis() + if (currentTimeMillis - lastTime < singleClick.value && (tag == lastTag)) { + Timber.tag("SingleClick") + Timber.i("Within %s milliseconds, there was a rapid click:%s", singleClick.value, tag) + return + } + lastTime = currentTimeMillis + lastTag = tag + joinPoint.proceed() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppActivity.kt new file mode 100644 index 0000000..4af8b67 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppActivity.kt @@ -0,0 +1,161 @@ +package com.localee.mireo.app.app + +import android.content.Intent +import android.os.Bundle +import android.view.View +import androidx.annotation.StringRes +import com.gyf.immersionbar.ImmersionBar +import com.hjq.bar.TitleBar +import com.hjq.base.BaseActivity +import com.hjq.base.BaseDialog +import com.localee.mireo.app.R +import com.localee.mireo.app.action.TitleBarAction +import com.localee.mireo.app.action.ToastAction +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.ui.dialog.WaitDialog +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.OnHttpListener +import com.hjq.toast.ToastUtils + +abstract class AppActivity : BaseActivity(), + ToastAction, TitleBarAction, OnHttpListener { + + private var titleBar: TitleBar? = null + + private var immersionBar: ImmersionBar? = null + + private var dialog: BaseDialog? = null + + private var dialogCount: Int = 0 + + open fun isShowDialog(): Boolean { + return dialog != null && dialog!!.isShowing + } + + open fun showDialog() { + if (isFinishing || isDestroyed) { + return + } + dialogCount++ + postDelayed(Runnable { + if ((dialogCount <= 0) || isFinishing || isDestroyed) { + return@Runnable + } + if (dialog == null) { + dialog = WaitDialog.Builder(this) + .setCancelable(false) + .create() + } + if (!dialog!!.isShowing) { + dialog!!.show() + } + }, 300) + } + + open fun hideDialog() { + if (isFinishing || isDestroyed) { + return + } + if (dialogCount > 0) { + dialogCount-- + } + if ((dialogCount != 0) || (dialog == null) || !dialog!!.isShowing) { + return + } + dialog?.dismiss() + } + + override fun initLayout() { + super.initLayout() + + val titleBar = getTitleBar() + titleBar?.setOnTitleBarListener(this) + + if (isStatusBarEnabled()) { + getStatusBarConfig().init() + + if (titleBar != null) { + ImmersionBar.setTitleBar(this, titleBar) + } + } + } + + protected open fun isStatusBarEnabled(): Boolean { + return true + } + + open fun isStatusBarDarkFont(): Boolean { + return true + } + + open fun getStatusBarConfig(): ImmersionBar { + if (immersionBar == null) { + immersionBar = createStatusBarConfig() + } + return immersionBar!! + } + + protected open fun createStatusBarConfig(): ImmersionBar { + return ImmersionBar.with(this) // 默认状态栏字体颜色为黑色 + .statusBarDarkFont(false) // 指定导航栏背景颜色 + .navigationBarColor(R.color.black) // 状态栏字体和导航栏内容自动变色,必须指定状态栏颜色和导航栏颜色才可以自动变色 + .autoDarkModeEnable(true, 0.2f) + } + + override fun setTitle(@StringRes id: Int) { + title = getString(id) + } + + override fun setTitle(title: CharSequence?) { + super.setTitle(title) + getTitleBar()?.title = title + } + + override fun getTitleBar(): TitleBar? { + if (titleBar == null) { + titleBar = obtainTitleBar(getContentView()) + } + return titleBar + } + + override fun onLeftClick(view: View) { + onBackPressed() + } + + override fun startActivityForResult(intent: Intent, requestCode: Int, options: Bundle?) { + super.startActivityForResult(intent, requestCode, options) + overridePendingTransition(R.anim.right_in_activity, R.anim.right_out_activity) + } + + override fun finish() { + super.finish() + overridePendingTransition(R.anim.left_in_activity, R.anim.left_out_activity) + } + + override fun onHttpStart(api: IRequestApi) { + showDialog() + } + + override fun onHttpSuccess(result: Any) { + if (result is HttpData<*>) { + toast(result.getMessage()) + } + + } + + override fun onHttpFail(throwable: Throwable) { + ToastUtils.show(throwable.message) + } + + override fun onHttpEnd(api: IRequestApi) { + hideDialog() + } + + override fun onDestroy() { + super.onDestroy() + if (isShowDialog()) { + hideDialog() + } + dialog = null + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppAdapter.kt new file mode 100644 index 0000000..e7ed0e2 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppAdapter.kt @@ -0,0 +1,140 @@ +package com.localee.mireo.app.app + +import android.content.Context +import android.view.View +import androidx.annotation.IntRange +import androidx.annotation.LayoutRes +import com.hjq.base.BaseAdapter +import java.util.* + +abstract class AppAdapter constructor(context: Context) : + BaseAdapter.AppViewHolder>(context) { + + private var dataSet: MutableList = ArrayList() + + private var pageNumber = 1 + + private var lastPage = false + + private var tag: Any? = null + + override fun getItemCount(): Int { + return getCount() + } + + open fun getCount(): Int { + return dataSet.size + } + + open fun setData(data: MutableList?) { + if (data == null) { + dataSet.clear() + } else { + dataSet = data + } + notifyDataSetChanged() + } + + open fun getData(): MutableList { + return dataSet + } + + open fun addData(data: MutableList?) { + if (data == null || data.isEmpty()) { + return + } + dataSet.addAll(data) + notifyItemRangeInserted(dataSet.size - data.size, data.size) + } + + open fun clearData() { + dataSet.clear() + notifyDataSetChanged() + } + + open fun containsItem(@IntRange(from = 0) position: Int): Boolean { + return containsItem(getItem(position)) + } + + open fun containsItem(item: T?): Boolean { + return if (item == null) { + false + } else dataSet.contains(item) + } + + open fun getItem(@IntRange(from = 0) position: Int): T { + return dataSet[position] + } + + open fun setItem(@IntRange(from = 0) position: Int, item: T) { + dataSet[position] = item + notifyItemChanged(position) + } + + open fun addItem(item: T) { + addItem(dataSet.size, item) + } + + open fun addItem(@IntRange(from = 0) position: Int, item: T) { + var finalPosition = position + if (finalPosition < dataSet.size) { + dataSet.add(finalPosition, item) + } else { + dataSet.add(item) + finalPosition = dataSet.size - 1 + } + notifyItemInserted(finalPosition) + } + + open fun removeItem(item: T) { + val index = dataSet.indexOf(item) + if (index != -1) { + removeItem(index) + } + } + + open fun removeItem(@IntRange(from = 0) position: Int) { + dataSet.removeAt(position) + notifyItemRemoved(position) + } + + open fun getPageNumber(): Int { + return pageNumber + } + + open fun setPageNumber(@IntRange(from = 0) number: Int) { + pageNumber = number + } + + open fun isLastPage(): Boolean { + return lastPage + } + + open fun setLastPage(last: Boolean) { + lastPage = last + } + + open fun getTag(): Any? { + return tag + } + + open fun setTag(tag: Any) { + this.tag = tag + } + + abstract inner class AppViewHolder : BaseViewHolder { + + constructor(@LayoutRes id: Int) : super(id) + + constructor(itemView: View) : super(itemView) + } + + inner class SimpleViewHolder : AppViewHolder { + + constructor(@LayoutRes id: Int) : super(id) + + constructor(itemView: View) : super(itemView) + + override fun onBindView(position: Int) {} + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppApplication.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppApplication.kt new file mode 100644 index 0000000..a558b89 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppApplication.kt @@ -0,0 +1,171 @@ +package com.localee.mireo.app.app + +import android.app.Activity +import android.app.Application +import android.content.Context +import android.net.ConnectivityManager +import android.net.Network +import android.os.Build +import androidx.core.content.ContextCompat +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import com.google.gson.reflect.TypeToken +import com.google.gson.stream.JsonToken +import com.hjq.bar.TitleBar +import com.hjq.gson.factory.GsonFactory +import com.hjq.http.EasyConfig +import com.hjq.http.config.IRequestInterceptor +import com.hjq.http.model.HttpHeaders +import com.hjq.http.model.HttpParams +import com.hjq.http.request.HttpRequest +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.aop.Log +import com.localee.mireo.app.http.exception.HttpBodyInterceptor +import com.localee.mireo.app.http.model.RequestHandler +import com.localee.mireo.app.http.model.RequestServer +import com.localee.mireo.app.manager.ActivityManager +import com.localee.mireo.app.other.AppConfig +import com.localee.mireo.app.other.CrashHandler +import com.localee.mireo.app.other.DebugLoggerTree +import com.localee.mireo.app.other.MaterialHeader +import com.localee.mireo.app.other.SmartBallPulseFooter +import com.localee.mireo.app.other.TitleBarStyle +import com.localee.mireo.app.other.ToastStyle +import com.localee.mireo.app.utils.MsMMKVUtils +import com.localee.mireo.app.utils.MsSystemUtlis +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.tencent.bugly.crashreport.CrashReport +import com.tencent.mmkv.MMKV +import okhttp3.OkHttpClient +import timber.log.Timber + +class AppApplication : Application() { + + @Log("启动耗时") + override fun onCreate() { + super.onCreate() + instance = this; + initSdk(this) + } + + override fun onLowMemory() { + super.onLowMemory() + } + + override fun onTrimMemory(level: Int) { + super.onTrimMemory(level) + } + + companion object { + lateinit var instance: Application; + var isCurrentPage: Boolean = true + + fun initSdk(application: Application) { + TitleBar.setDefaultStyle(TitleBarStyle()) + + SmartRefreshLayout.setDefaultRefreshHeaderCreator { context: Context, layout: RefreshLayout -> + MaterialHeader(context).setColorSchemeColors( + ContextCompat.getColor( + context, + R.color.common_accent_color + ) + ) + } + SmartRefreshLayout.setDefaultRefreshFooterCreator { context: Context, layout: RefreshLayout -> + SmartBallPulseFooter(context) + } + SmartRefreshLayout.setDefaultRefreshInitializer { context: Context, layout: RefreshLayout -> + layout.setEnableHeaderTranslationContent(true) + .setEnableFooterTranslationContent(true) + .setEnableFooterFollowWhenNoMoreData(true) + .setEnableLoadMoreWhenContentNotFull(false) + .setEnableOverScrollDrag(false) + } + + ToastUtils.init(application, ToastStyle()) + ToastUtils.setDebugMode(AppConfig.isDebug()) + + CrashHandler.register(application) + + ActivityManager.getInstance().init(application) + + MMKV.initialize(application) + + val okHttpClient: OkHttpClient = OkHttpClient.Builder() + .addInterceptor(HttpBodyInterceptor()) + .build() + + + EasyConfig.with(okHttpClient) + .setLogEnabled(AppConfig.isLogEnable()) + .setServer(RequestServer()) + .setHandler(RequestHandler(application)) + .setRetryCount(1) + .setInterceptor(object : IRequestInterceptor { + override fun interceptArguments( + httpRequest: HttpRequest<*>, + params: HttpParams, + headers: HttpHeaders + ) { + headers.put("Content-Type", "application/json; charset=utf-8") + headers.put("Content-Type", "text/plain; charset=utf-8") + + headers.put("Authorization", MsMMKVUtils.getToken()) + headers.put( + "device-id", + MsSystemUtlis.getDeviceId(instance).toString() + ) + headers.put( + "lang-key", + "en" + ) + headers.put("system-type", "android") + headers.put("app_id", "nice_short") + headers.put("system_version", "12") + headers.put("model", Build.MODEL) + headers.put("brand", Build.MANUFACTURER + "-" + Build.PRODUCT) + headers.put( + "app_version", + MsSystemUtlis.getVerNameInfo(instance) + ) +// headers.put("security","true") + + + } + }) + + .into() + + GsonFactory.setJsonCallback { typeToken: TypeToken<*>, fieldName: String?, jsonToken: JsonToken -> + CrashReport.postCatchedException(IllegalArgumentException("Type parsing exception:$typeToken#$fieldName,the type returned by the background is:$jsonToken")) + } + + if (AppConfig.isLogEnable()) { + Timber.plant(DebugLoggerTree()) + } + + val connectivityManager: ConnectivityManager? = + ContextCompat.getSystemService(application, ConnectivityManager::class.java) + if (connectivityManager != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + connectivityManager.registerDefaultNetworkCallback(object : + ConnectivityManager.NetworkCallback() { + override fun onLost(network: Network) { + val topActivity: Activity? = ActivityManager.getInstance().getTopActivity() + if (topActivity !is LifecycleOwner) { + return + } + val lifecycleOwner: LifecycleOwner = topActivity + if (lifecycleOwner.lifecycle.currentState != Lifecycle.State.RESUMED) { + return + } + ToastUtils.show(R.string.common_network_error) + } + }) + } + } + } + + +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppFragment.kt new file mode 100644 index 0000000..697234b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/AppFragment.kt @@ -0,0 +1,46 @@ +package com.localee.mireo.app.app + +import com.hjq.base.BaseFragment +import com.localee.mireo.app.action.ToastAction +import com.localee.mireo.app.http.model.HttpData +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.OnHttpListener +import com.hjq.toast.ToastUtils + +abstract class AppFragment : BaseFragment(), + ToastAction, OnHttpListener { + + open fun isShowDialog(): Boolean { + val activity: A = getAttachActivity() ?: return false + return activity.isShowDialog() + } + + open fun showDialog() { + getAttachActivity()?.showDialog() + } + + open fun hideDialog() { + getAttachActivity()?.hideDialog() + } + + + override fun onHttpStart(api: IRequestApi) { + showDialog() + } + + override fun onHttpSuccess(result: Any) { + if (result !is HttpData<*>) { + return + } + toast(result.getMessage()) + + } + + override fun onHttpFail(throwable: Throwable) { + ToastUtils.show(throwable.message) + } + + override fun onHttpEnd(api: IRequestApi) { + hideDialog() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/BaseEventBus.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/BaseEventBus.kt new file mode 100644 index 0000000..bc398e4 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/BaseEventBus.kt @@ -0,0 +1,4 @@ +package com.localee.mireo.app.app + + +data class BaseEventBus(val code: String, val data: T) diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/TitleBarFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/TitleBarFragment.kt new file mode 100644 index 0000000..c246f54 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/app/TitleBarFragment.kt @@ -0,0 +1,69 @@ +package com.localee.mireo.app.app + +import android.os.Bundle +import android.view.* +import com.gyf.immersionbar.ImmersionBar +import com.hjq.bar.TitleBar +import com.localee.mireo.app.R +import com.localee.mireo.app.action.TitleBarAction + + +abstract class TitleBarFragment : AppFragment(), TitleBarAction { + + private var titleBar: TitleBar? = null + + private var immersionBar: ImmersionBar? = null + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val titleBar = getTitleBar() + titleBar?.setOnTitleBarListener(this) + + if (isStatusBarEnabled()) { + getStatusBarConfig().init() + if (titleBar != null) { + ImmersionBar.setTitleBar(this, titleBar) + } + } + } + + override fun onResume() { + super.onResume() + if (isStatusBarEnabled()) { + getStatusBarConfig().init() + } + } + + open fun isStatusBarEnabled(): Boolean { + return false + } + + protected fun getStatusBarConfig(): ImmersionBar { + if (immersionBar == null) { + immersionBar = createStatusBarConfig() + } + return immersionBar!! + } + + protected fun createStatusBarConfig(): ImmersionBar { + return ImmersionBar.with(this) + .statusBarDarkFont(false) + .navigationBarColor(R.color.black) + .autoDarkModeEnable(true, 0.2f) + } + + protected open fun isStatusBarDarkFont(): Boolean { + return getAttachActivity()!!.isStatusBarDarkFont() + } + + override fun getTitleBar(): TitleBar? { + if (titleBar == null || !isLoading()) { + titleBar = obtainTitleBar(view as ViewGroup) + } + return titleBar + } + + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CancelCollectApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CancelCollectApi.kt new file mode 100644 index 0000000..8ff3a23 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CancelCollectApi.kt @@ -0,0 +1,17 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class CancelCollectApi : IRequestApi { + + override fun getApi(): String { + return "cancelCollect" + } + + var short_play_id: Int? = null + + var video_id: Int? = null + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CreateHistoryApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CreateHistoryApi.kt new file mode 100644 index 0000000..3991399 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CreateHistoryApi.kt @@ -0,0 +1,18 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class CreateHistoryApi : IRequestApi { + + override fun getApi(): String { + return "createHistory" + } + + var short_play_id: Int? = null + + var video_id: Int? = null + + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CustomerRegisterApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CustomerRegisterApi.kt new file mode 100644 index 0000000..096b1fd --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/CustomerRegisterApi.kt @@ -0,0 +1,19 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class CustomerRegisterApi : IRequestApi { + + override fun getApi(): String { + return "customer/register" + } + + class Bean : Serializable{ + var token: String? = null + var customer_id: Int? = null + var auto_login: Boolean = false + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DetailsRecommendRes.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DetailsRecommendRes.kt new file mode 100644 index 0000000..d220931 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DetailsRecommendRes.kt @@ -0,0 +1,29 @@ +package com.localee.mireo.app.http.api + + +data class DetailsRecommendRes( + val brief: String, + val description: String, + val list: List, + val tag: String, + val title: String +) { + + data class Item( + val all_coins: Int, + val buy_type: Int, + val collect_total: Int, + val description: String, + val episode_total: Int, + val horizontally_img: String, + val video_url: String, + val id: Int, + val image_url: String, + val name: String, + val process: Int, + val short_id: Int, + val short_play_id: Int?, + val tag_type: String, + val watch_total: Int + ) +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DoCollectApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DoCollectApi.kt new file mode 100644 index 0000000..8c92e98 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/DoCollectApi.kt @@ -0,0 +1,25 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class DoCollectApi : IRequestApi { + + override fun getApi(): String { + return "collect" + } + + private var short_play_id: String? = null + + private var video_id: String? = null + + fun setShortPlayId(short_play_id: String?): com.localee.mireo.app.http.api.DoCollectApi = apply { + this.short_play_id = short_play_id + } + + fun setVideoId(video_id: String?): com.localee.mireo.app.http.api.DoCollectApi = apply { + this.video_id = video_id + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/ExampleRecommendDataRes.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/ExampleRecommendDataRes.kt new file mode 100644 index 0000000..42caa6e --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/ExampleRecommendDataRes.kt @@ -0,0 +1,39 @@ +package com.localee.mireo.app.http.api + +data class ExampleRecommendDataRes( + val list: List, + val pagination: Pagination +) { + + data class Data( + val all_price_total: Int, + val buy_type: Int, + var collect_total: Int?, + val description: String, + val episode_total: Int, + val id: Int, + val image_url: String, + var is_collect: Boolean, + val name: String, + val process: Int, + val video_info: VideoInfo?, + val watch_total: Int + ) + + data class Pagination( + val current_page: Int, + val page_size: Int, + val page_total: Int, + val total_size: Int + ) + + data class VideoInfo( + val episode: Int, + val id: Int, + val is_vip: Int, + val short_play_id: Int, + val short_play_video_id: Int, + val video_url: String, + val image_url: String + ) +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HistoryBean.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HistoryBean.kt new file mode 100644 index 0000000..6c53c46 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HistoryBean.kt @@ -0,0 +1,33 @@ +package com.localee.mireo.app.http.api + +class HistoryBean ( + val list: List, + val pagination: Pagination +) { + + data class Data( + val name: String, + val short_play_video_id: Int, + var description: String, + val short_play_id: Int, + val image_url: String, + val episode_total: Int, + val current_episode: String, + var is_collect: Boolean, + var is_check: Boolean, + val categoryList: List + ) + + data class Pagination( + val current_page: Int, + val page_size: Int, + val page_total: Int, + val total_size: Int + ) + + data class categoryBean( + val id: String, + val name: String + ) + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeBannerApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeBannerApi.kt new file mode 100644 index 0000000..ea3c2e1 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeBannerApi.kt @@ -0,0 +1,31 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class HomeBannerApi : IRequestApi { + + override fun getApi(): String { + return "getBanners" + } + + class Bean : Serializable{ + var id: Int? = null + var short_id: Int? = null + var short_play_id: Int? = null + var name: String? = null + var description: String? = null + var process: Int? = null + var image_url: String? = null + var horizontally_img: String? = null + var buy_type: Int? = null + var tag_type: String? = null + var all_coins: Int? = null + var collect_total: Int? = null + var watch_total: Int? = null + var episode_total: Int? = null + var search_click_total: Int? = null + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeCategoriesApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeCategoriesApi.kt new file mode 100644 index 0000000..87d3a93 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeCategoriesApi.kt @@ -0,0 +1,22 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class HomeCategoriesApi : IRequestApi { + + override fun getApi(): String { + return "getCategories" + } + + class Bean( + val list: List, + ) { + + data class Data( + val id: Int, + val name: String + ) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeDayMaxRechargeShortPlayRankApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeDayMaxRechargeShortPlayRankApi.kt new file mode 100644 index 0000000..9e2e176 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeDayMaxRechargeShortPlayRankApi.kt @@ -0,0 +1,18 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class HomeDayMaxRechargeShortPlayRankApi : IRequestApi { + + override fun getApi(): String { + return "homeRanking" + } + + class Bean { + var list: List? = null + + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeModuleApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeModuleApi.kt new file mode 100644 index 0000000..2af6f08 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeModuleApi.kt @@ -0,0 +1,32 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class HomeModuleApi : IRequestApi { + + override fun getApi(): String { + return "homeModuleData" + } + + class Bean : Serializable { + var bannerData: List? = null + var recommandData: RecommandDataBean? = null + var manualNewestRecommand: RecommandDataBean? = null + var hotData: List? = null + var newTopThree: List? = null + var highestPayment: List? = null + var hottestPist: List? = null + + } + + class RecommandDataBean { + var title: String? = null + var list: List? = null + + } + + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeRecommendApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeRecommendApi.kt new file mode 100644 index 0000000..cc349ea --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeRecommendApi.kt @@ -0,0 +1,19 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class HomeRecommendApi : IRequestApi { + + override fun getApi(): String { + return "getRecommands" + } + + var current_page: Int? = null + var page_size: Int? = null + var revolution: String? = null + + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeVideoListApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeVideoListApi.kt new file mode 100644 index 0000000..fd76e34 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/HomeVideoListApi.kt @@ -0,0 +1,33 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class HomeVideoListApi : IRequestApi { + + override fun getApi(): String { + return "videoList" + } + + var category_id : Int? = null + var current_page : Int? = null + var page_size : Int? = null + + class Bean ( + val list: List, + val pagination: Pagination + ) { + + data class Pagination( + val current_page: Int, + val page_size: Int, + val page_total: Int, + val total_size: Int + ) + + + + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyCollectionsApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyCollectionsApi.kt new file mode 100644 index 0000000..2fba14a --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyCollectionsApi.kt @@ -0,0 +1,16 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + +class MyCollectionsApi : IRequestApi { + + override fun getApi(): String { + return "myCollections" + } + + var current_page: Int? = null + + var page_size: Int? = null + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyHistoryApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyHistoryApi.kt new file mode 100644 index 0000000..70deaec --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/MyHistoryApi.kt @@ -0,0 +1,16 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + +class MyHistoryApi : IRequestApi { + + override fun getApi(): String { + return "myHistorys" + } + + var current_page: Int? = null + + var page_size: Int? = null + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/RecommendBean.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/RecommendBean.kt new file mode 100644 index 0000000..4f235fa --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/RecommendBean.kt @@ -0,0 +1,26 @@ +package com.localee.mireo.app.http.api + +class RecommendBean( + var id: Int, + var short_id: Int, + var short_play_id: Int, + var name: String, + var description: String, + var process: Int, + var image_url: String, + var horizontally_img: String, + var buy_type: String, + var tag_type: String, + var all_coins: String, + var collect_total: String, + var watch_total: Int, + var episode_total: String, + var search_click_total: String, + val category: List, + val categoryList: List + +) { + data class categoryBean( + val id: String, val name: String + ) +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchHotApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchHotApi.kt new file mode 100644 index 0000000..de5c895 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchHotApi.kt @@ -0,0 +1,41 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class SearchHotApi : IRequestApi { + + override fun getApi(): String { + return "search/hots" + } + + class Bean( + val list: List, + ) { + + data class Data( + val id: String, + val short_id: Int, + var short_play_id: Int, + val name: String, + val description: String, + val process: Int, + val image_url: String, + var horizontally_img: String, + var buy_type: Int, + var tag_type: String, + var all_coins: Int, + var collect_total: String, + var watch_total: String, + var episode_total: String, + var search_click_total: Boolean, + val categoryList: List + ) + + data class categoryBean( + val id: String, + val name: String + ) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchSearchApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchSearchApi.kt new file mode 100644 index 0000000..a96b328 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/SearchSearchApi.kt @@ -0,0 +1,43 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class SearchSearchApi : IRequestApi { + + override fun getApi(): String { + return "search" + } + + var search : String? = null + + class Bean( + val list: List, + ) { + + data class Data( + val id: String, + val short_id: Int, + var short_play_id: Int, + val name: String, + val description: String, + val process: Int, + val image_url: String, + var horizontally_img: String, + var buy_type: Int, + var tag_type: String, + var all_coins: Int, + var collect_total: String, + var watch_total: String, + var episode_total: String, + var search_click_total: Boolean, + val categoryList: List + ) + + data class categoryBean( + val id: String, + val name: String + ) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoApi.kt new file mode 100644 index 0000000..0448312 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoApi.kt @@ -0,0 +1,14 @@ +package com.localee.mireo.app.http.api + +import com.hjq.http.config.IRequestApi + + +class UserInfoApi : IRequestApi { + + override fun getApi(): String { + return "customer/info" + } + + var short_video_id : Int? = null + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoRes.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoRes.kt new file mode 100644 index 0000000..0f0a64b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/UserInfoRes.kt @@ -0,0 +1,30 @@ +package com.localee.mireo.app.http.api + +class UserInfoRes ( + val avator: String = "", + val coin_left_total: Int = 0, + val country: String = "", + val country_code: String = "", + val customer_id: String = "", + val email: String = "", + val family_name: String = "", + val fn: String = "", + val giving_name: String = "", + val id: String = "", + val ip_address: String = "0.0.0.0", + val is_guide_vip: Boolean = false, + val is_tourist: Boolean = true, + val is_vip: Boolean = false, + val ln: String = "", + val registered_days: Int = 0, + val send_coin_left_total: Int = 0, + val third_access_platform: String = "", + val vip_end_time: Int = 0, + val vip_type: String = "" +) { + companion object { + fun createWithDefaults(): UserInfoRes { + return UserInfoRes() + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt new file mode 100644 index 0000000..76e5fc6 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/api/VideoDetailsApi.kt @@ -0,0 +1,165 @@ +package com.localee.mireo.app.http.api + +import android.os.Parcel +import android.os.Parcelable +import com.hjq.http.config.IRequestApi +import java.io.Serializable + + +class VideoDetailsApi : IRequestApi { + + override fun getApi(): String { + return "getVideoDetails" + } + + var short_play_id: Int? = null + + var video_id: Int? = null + + + data class Bean( + val episodeList: List, + val is_collect: Boolean, + val show_share_coin: Boolean, + val share_coin: Int, + val install_coins: Int, + val unlock_video_ad_count: Int, + val revolution: Int, + val discount: Int, + var business_model: String, + val shortPlayInfo: ShortPlayInfo, + val video_info: VideoInfo + ) { + + data class Episode( + val coins: Int, + val episode: Int, + val id: Int, + var is_lock: Boolean, + val is_vip: Int, + val short_play_id: Int, + val short_play_video_id: Int, + val video_url: String, + val vip_coins: Int, + var play_seconds: String?, + var promise_view_ad: Int, + ): Parcelable { + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt() + ) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeInt(coins) + parcel.writeInt(episode) + parcel.writeInt(id) + parcel.writeByte(if (is_lock) 1 else 0) + parcel.writeInt(is_vip) + parcel.writeInt(short_play_id) + parcel.writeInt(short_play_video_id) + parcel.writeString(video_url) + parcel.writeInt(vip_coins) + parcel.writeString(play_seconds) + parcel.writeInt(promise_view_ad) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): Episode { + return Episode(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + data class ShortPlayInfo( + val all_coins: Int, + val buy_type: Int, + var collect_total: Int, + val description: String, + val episode_total: Int, + val id: Int, + val image_url: String, + var is_collect: Boolean, + val name: String, + val process: Int, + val short_id: Int, + val watch_total: Int + ): Parcelable { + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readByte() != 0.toByte(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt() + ) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeInt(all_coins) + parcel.writeInt(buy_type) + parcel.writeInt(collect_total) + parcel.writeString(description) + parcel.writeInt(episode_total) + parcel.writeInt(id) + parcel.writeString(image_url) + parcel.writeByte(if (is_collect) 1 else 0) + parcel.writeString(name) + parcel.writeInt(process) + parcel.writeInt(short_id) + parcel.writeInt(watch_total) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): ShortPlayInfo { + return ShortPlayInfo(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + data class VideoInfo( + val coins: Int, + val episode: Int, + val id: Int, + val is_vip: Int, + val short_id: Int, + val short_play_id: Int, + val short_play_video_id: Int, + val promise_view_ad: Int, + val video_url: String, + val vip_coins: Int + ) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/HttpBodyInterceptor.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/HttpBodyInterceptor.kt new file mode 100644 index 0000000..8aeef45 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/HttpBodyInterceptor.kt @@ -0,0 +1,85 @@ +package com.localee.mireo.app.http.exception + +import okhttp3.Interceptor +import okhttp3.Response +import okhttp3.ResponseBody +import java.io.IOException + + +class HttpBodyInterceptor : Interceptor { + val EN_STR_TAG = '$' + + @kotlin.jvm.Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + val k_center = chain.proceed(chain.request()) + + return if (k_center.body() != null && k_center.body()!!.contentType() != null) { + val actiity = k_center.body()!!.contentType() + val circle = k_center.body()!!.string() + val str = deStr(circle) + val current = ResponseBody.create(actiity, str) + k_center.newBuilder().body(current).build() + } else { + + k_center + } + } + + fun deStr(data: String): String { + return String(deStrBytes(data), Charsets.UTF_8) + } + + // Decrypt bytes from hex string + fun deStrBytes(data: String): ByteArray { + if (!data.startsWith(EN_STR_TAG)) { + throw IllegalArgumentException("Invalid encoded string") + } + val hexData = data.substring(1) + val bytes = hexData.chunked(2).map { it.toInt(16).toByte() }.toByteArray() + return de(bytes) + } + + // Decrypt data + fun de(data: ByteArray): ByteArray { + if (data.isEmpty()) { + return data + } + val saltLen = data[0].toInt() + val salt = data.slice(1 until 1 + saltLen).toByteArray() + return deWithSalt(data.slice(1 + saltLen until data.size).toByteArray(), salt) + } + + // Decrypt data with salt + fun deWithSalt(data: ByteArray, salt: ByteArray): ByteArray { + val decryptedData = cxEd(data) + return removeSalt(decryptedData, salt) + } + + // Encrypt/Decrypt data by flipping bits + fun cxEd(data: ByteArray): ByteArray { + return data.map { (it.toInt() xor 0xFF).toByte() }.toByteArray() + } + + // Remove salt from data + fun removeSalt(data: ByteArray, salt: ByteArray): ByteArray { + if (salt.isEmpty()) return data + val ret = mutableListOf() + var idx = 0 + val sl = salt.size + data.forEach { + val s = salt[idx % sl] + ret.add(calRemoveSalt(it, s)) + idx++ + } + return ret.toByteArray() + } + + fun calRemoveSalt(v: Byte, s: Byte): Byte { + return if (v >= s) { + (v - s).toByte() + } else { + (0xFF - (s - v) + 1).toByte() + } + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/ResultException.java b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/ResultException.java new file mode 100644 index 0000000..684548c --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/ResultException.java @@ -0,0 +1,27 @@ +package com.localee.mireo.app.http.exception; + +import androidx.annotation.NonNull; + +import com.localee.mireo.app.http.model.HttpData; +import com.hjq.http.exception.HttpException; + + +public final class ResultException extends HttpException { + + private final HttpData mData; + + public ResultException(String message, HttpData data) { + super(message); + mData = data; + } + + public ResultException(String message, Throwable cause, HttpData data) { + super(message, cause); + mData = data; + } + + @NonNull + public HttpData getHttpData() { + return mData; + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/TokenException.java b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/TokenException.java new file mode 100644 index 0000000..1803d33 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/exception/TokenException.java @@ -0,0 +1,15 @@ +package com.localee.mireo.app.http.exception; + +import com.hjq.http.exception.HttpException; + + +public final class TokenException extends HttpException { + + public TokenException(String message) { + super(message); + } + + public TokenException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/CharsetInterceptor.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/CharsetInterceptor.kt new file mode 100644 index 0000000..3f9c35c --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/CharsetInterceptor.kt @@ -0,0 +1,22 @@ +package com.localee.mireo.app.http.model + +import okhttp3.Interceptor +import okhttp3.Response + +class CharsetInterceptor : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + val response = chain.proceed(request) + + val contentType = response.header("Content-Type") + val newContentType = if (contentType?.contains("charset=") == true) { + contentType + } else { + "$contentType; charset=utf-8" + } + + return response.newBuilder() + .header("Content-Type", newContentType) + .build() + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpCacheManager.java b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpCacheManager.java new file mode 100644 index 0000000..98db64f --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpCacheManager.java @@ -0,0 +1,64 @@ +package com.localee.mireo.app.http.model; + +import androidx.annotation.NonNull; +import com.hjq.gson.factory.GsonFactory; +import com.hjq.http.config.IRequestApi; +import com.hjq.http.request.HttpRequest; +import com.tencent.mmkv.MMKV; + + +public final class HttpCacheManager { + + private static final MMKV HTTP_CACHE_CONTENT = MMKV.mmkvWithID("http_cache_content");; + + private static final MMKV HTTP_CACHE_TIME = MMKV.mmkvWithID("http_cache_time"); + + @NonNull + public static String generateCacheKey(@NonNull HttpRequest httpRequest) { + IRequestApi requestApi = httpRequest.getRequestApi(); + return "请替换成当前的用户 id" + "\n" + requestApi.getApi() + "\n" + GsonFactory.getSingletonGson().toJson(requestApi); + } + + public static String readHttpCache(@NonNull String cacheKey) { + String cacheValue = HTTP_CACHE_CONTENT.getString(cacheKey, null); + if (cacheValue == null || cacheValue.isEmpty() || "{}".equals(cacheValue)) { + return null; + } + return cacheValue; + } + + public static boolean writeHttpCache(String cacheKey, String cacheValue) { + return HTTP_CACHE_CONTENT.putString(cacheKey, cacheValue).commit(); + } + + public static boolean deleteHttpCache(String cacheKey) { + return HTTP_CACHE_CONTENT.remove(cacheKey).commit(); + } + + public static void clearCache() { + HTTP_CACHE_CONTENT.clearMemoryCache(); + HTTP_CACHE_CONTENT.clearAll(); + + HTTP_CACHE_TIME.clearMemoryCache(); + HTTP_CACHE_TIME.clearAll(); + } + + public static long getHttpCacheTime(String cacheKey) { + return HTTP_CACHE_TIME.getLong(cacheKey, 0); + } + + public static boolean setHttpCacheTime(String cacheKey, long cacheTime) { + return HTTP_CACHE_TIME.putLong(cacheKey, cacheTime).commit(); + } + + public static boolean isCacheInvalidate(String cacheKey, long maxCacheTime) { + if (maxCacheTime == Long.MAX_VALUE) { + return false; + } + long httpCacheTime = getHttpCacheTime(cacheKey); + if (httpCacheTime == 0) { + return true; + } + return httpCacheTime + maxCacheTime < System.currentTimeMillis(); + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpData.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpData.kt new file mode 100644 index 0000000..2a11f49 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpData.kt @@ -0,0 +1,30 @@ +package com.localee.mireo.app.http.model + +open class HttpData { + + private val code: Int = 0 + + private val msg: String? = null + + private val data: T? = null + + fun getCode(): Int { + return code + } + + fun getMessage(): String? { + return msg + } + + fun getData(): T? { + return data + } + + fun isRequestSucceed(): Boolean { + return code == 200 + } + + fun isTokenFailure(): Boolean { + return code == 1001 + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpListData.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpListData.kt new file mode 100644 index 0000000..9ce6973 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/HttpListData.kt @@ -0,0 +1,38 @@ +package com.localee.mireo.app.http.model + +import com.localee.mireo.app.http.model.HttpListData.ListBean +import kotlin.math.ceil + +class HttpListData : HttpData?>() { + + class ListBean { + + private val pageIndex: Int = 0 + + private val pageSize: Int = 0 + + private val totalNumber: Int = 0 + + private val items: MutableList? = null + + fun isLastPage(): Boolean { + return ceil((totalNumber.toFloat() / pageSize.toFloat())) <= pageIndex + } + + fun getTotalNumber(): Int { + return totalNumber + } + + fun getPageIndex(): Int { + return pageIndex + } + + fun getPageSize(): Int { + return pageSize + } + + fun getItems(): MutableList? { + return items + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestHandler.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestHandler.kt new file mode 100644 index 0000000..318b0d6 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestHandler.kt @@ -0,0 +1,238 @@ +package com.localee.mireo.app.http.model + +import android.app.Application +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.net.ConnectivityManager +import com.google.gson.JsonSyntaxException +import com.hjq.gson.factory.GsonFactory +import com.hjq.http.EasyLog +import com.hjq.http.config.IRequestHandler +import com.hjq.http.exception.CancelException +import com.hjq.http.exception.DataException +import com.hjq.http.exception.HttpException +import com.hjq.http.exception.NetworkException +import com.hjq.http.exception.NullBodyException +import com.hjq.http.exception.ResponseException +import com.hjq.http.exception.ServerException +import com.hjq.http.exception.TimeoutException +import com.hjq.http.request.HttpRequest +import com.localee.mireo.app.http.exception.ResultException +import com.localee.mireo.app.R +import com.localee.mireo.app.http.exception.TokenException +import com.tencent.mmkv.MMKV +import okhttp3.Headers +import okhttp3.Response +import okhttp3.ResponseBody +import java.io.IOException +import java.io.InputStream +import java.lang.reflect.GenericArrayType +import java.lang.reflect.Type +import java.net.SocketTimeoutException +import java.net.UnknownHostException + + +class RequestHandler constructor(private val mApplication: Application) : IRequestHandler { + + + override fun requestSuccess(httpRequest: HttpRequest<*>, response: Response, type: Type): Any { + if (Response::class.java == type) { + return response + } + + + if (!response.isSuccessful) { + throw ResponseException( + String.format( + mApplication.getString(R.string.http_response_error), + response.code(), response.message() + ), response + ) + } + if (Headers::class.java == type) { + return response.headers() + } + + val body = response.body() + ?: throw NullBodyException(mApplication.getString(R.string.http_response_null_body)) + if (ResponseBody::class.java == type) { + return body + } +// val decryptedString = response.body()?.string()?.let { decrypt(it) } +// +// body = ResponseBody.create(response.body()!!.contentType(), decryptedString) + + // 如果是用数组接收,判断一下是不是用 byte[] 类型进行接收的 + if (type is GenericArrayType) { + val genericComponentType = type.genericComponentType + if (Byte::class.javaPrimitiveType == genericComponentType) { + return body.bytes() + } + } + + if (InputStream::class.java == type) { + return body.byteStream() + } + + if (Bitmap::class.java == type) { + return BitmapFactory.decodeStream(body.byteStream()) + } + + val text: String + try { + text = body.string() + } catch (e: IOException) { + throw DataException(mApplication.getString(R.string.http_data_explain_error), e) + } + + EasyLog.printJson(httpRequest, text) + + if (String::class.java == type) { + return text + } + + val result: Any + + try { + result = GsonFactory.getSingletonGson().fromJson(text, type) + } catch (e: JsonSyntaxException) { + throw DataException(mApplication.getString(R.string.http_data_explain_error), e) + } + + if (result is HttpData<*>) { + val model = result + val headers = response.headers() + val headersSize = headers.size() + val headersMap: MutableMap = HashMap(headersSize) + for (i in 0 until headersSize) { + headersMap[headers.name(i)] = headers.value(i) + } + + if (model.isRequestSucceed()) { + return result + } + + if (model.isTokenFailure()) { + throw TokenException( + mApplication.getString(R.string.http_token_error) + ) + } + + throw ResultException(model.getMessage(), model) + } + return result + } + + override fun requestFail(httpRequest: HttpRequest<*>, throwable: Throwable): Throwable { + if (throwable is HttpException) { + if (throwable is TokenException) { + } + return throwable + } + + if (throwable is SocketTimeoutException) { + return TimeoutException( + mApplication.getString(R.string.http_server_out_time), + throwable + ) + } + + if (throwable is UnknownHostException) { + val info = + (mApplication.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).activeNetworkInfo + if (info != null && info.isConnected) { + return ServerException( + mApplication.getString(R.string.http_server_error), + throwable + ) + } + return NetworkException(mApplication.getString(R.string.http_network_error), throwable) + } + + if (throwable is IOException) { + return CancelException(mApplication.getString(R.string.http_request_cancel), throwable) + } + + return HttpException(throwable.message, throwable) + } + + + override fun readCache(httpRequest: HttpRequest<*>, type: Type, cacheTime: Long): Any? { + val cacheKey: String = + HttpCacheManager.generateCacheKey( + httpRequest + ) + val cacheValue: String = + HttpCacheManager.readHttpCache( + cacheKey + ) + if (cacheValue == null || cacheValue.isEmpty() || "{}" == cacheValue) { + return null + } + EasyLog.printLog(httpRequest, "----- read cache key -----") + EasyLog.printJson(httpRequest, cacheKey) + EasyLog.printLog(httpRequest, "----- read cache value -----") + EasyLog.printJson(httpRequest, cacheValue) + EasyLog.printLog(httpRequest, "cacheTime = $cacheTime") + val cacheInvalidate: Boolean = + HttpCacheManager.isCacheInvalidate( + cacheKey, + cacheTime + ) + EasyLog.printLog(httpRequest, "cacheInvalidate = $cacheInvalidate") + if (cacheInvalidate) { + return null + } + return GsonFactory.getSingletonGson().fromJson(cacheValue, type) + } + + override fun writeCache(httpRequest: HttpRequest<*>, response: Response, result: Any): Boolean { + val cacheKey = + HttpCacheManager.generateCacheKey( + httpRequest + ) + val cacheValue = GsonFactory.getSingletonGson().toJson(result) + if (cacheValue == null || cacheValue.isEmpty() || "{}" == cacheValue) { + return false + } + EasyLog.printLog(httpRequest, "----- write cache key -----") + EasyLog.printJson(httpRequest, cacheKey) + EasyLog.printLog(httpRequest, "----- write cache value -----") + EasyLog.printJson(httpRequest, cacheValue) + val writeHttpCacheResult = + HttpCacheManager.writeHttpCache( + cacheKey, + cacheValue + ) + EasyLog.printLog(httpRequest, "writeHttpCacheResult = $writeHttpCacheResult") + val refreshHttpCacheTimeResult = + HttpCacheManager.setHttpCacheTime( + cacheKey, + System.currentTimeMillis() + ) + EasyLog.printLog(httpRequest, "refreshHttpCacheTimeResult = $refreshHttpCacheTimeResult") + return writeHttpCacheResult && refreshHttpCacheTimeResult + } + + override fun deleteCache(httpRequest: HttpRequest<*>): Boolean { + val cacheKey = + HttpCacheManager.generateCacheKey( + httpRequest + ) + EasyLog.printLog(httpRequest, "----- delete cache key -----") + EasyLog.printJson(httpRequest, cacheKey) + val deleteHttpCacheResult = + HttpCacheManager.deleteHttpCache( + cacheKey + ) + EasyLog.printLog(httpRequest, "deleteHttpCacheResult = $deleteHttpCacheResult") + return deleteHttpCacheResult + } + + override fun clearCache() { + HttpCacheManager.clearCache() + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestServer.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestServer.kt new file mode 100644 index 0000000..cce51ca --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/http/model/RequestServer.kt @@ -0,0 +1,12 @@ +package com.localee.mireo.app.http.model + +import com.localee.mireo.app.other.AppConfig +import com.hjq.http.config.IRequestServer + +class RequestServer : IRequestServer { + + override fun getHost(): String { + return AppConfig.getHostUrl() + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/ActivityManager.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/ActivityManager.kt new file mode 100644 index 0000000..24c8937 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/ActivityManager.kt @@ -0,0 +1,183 @@ +package com.localee.mireo.app.manager + +import android.app.Activity +import android.app.Application +import android.app.Application.ActivityLifecycleCallbacks +import android.os.Bundle +import androidx.collection.ArrayMap +import timber.log.Timber +import java.util.* + +class ActivityManager private constructor() : ActivityLifecycleCallbacks { + + companion object { + + @Suppress("StaticFieldLeak") + private val activityManager: ActivityManager by lazy { ActivityManager() } + + fun getInstance(): ActivityManager { + return activityManager + } + + private fun getObjectTag(`object`: Any): String { + return `object`.javaClass.name + Integer.toHexString(`object`.hashCode()) + } + } + + private val activitySet: ArrayMap = ArrayMap() + + private val lifecycleCallbacks: ArrayList = ArrayList() + + private lateinit var application: Application + + private var topActivity: Activity? = null + + private var resumedActivity: Activity? = null + + fun init(application: Application) { + this.application = application + this.application.registerActivityLifecycleCallbacks(this) + } + + fun getApplication(): Application { + return application + } + + fun getTopActivity(): Activity? { + return topActivity + } + + fun getResumedActivity(): Activity? { + return resumedActivity + } + + fun isForeground(): Boolean { + return getResumedActivity() != null + } + + fun registerApplicationLifecycleCallback(callback: ApplicationLifecycleCallback) { + lifecycleCallbacks.add(callback) + } + fun unregisterApplicationLifecycleCallback(callback: ApplicationLifecycleCallback) { + lifecycleCallbacks.remove(callback) + } + + fun finishActivity(clazz: Class?) { + if (clazz == null) { + return + } + val keys: Array = activitySet.keys.toTypedArray() + for (key: String? in keys) { + val activity: Activity? = activitySet[key] + if (activity == null || activity.isFinishing) { + continue + } + if ((activity.javaClass == clazz)) { + activity.finish() + activitySet.remove(key) + break + } + } + } + + fun finishAllActivities() { + finishAllActivities(null as Class?) + } + + @SafeVarargs + fun finishAllActivities(vararg classArray: Class?) { + val keys: Array = activitySet.keys.toTypedArray() + for (key: String? in keys) { + val activity: Activity? = activitySet[key] + if (activity == null || activity.isFinishing) { + continue + } + var whiteClazz = false + for (clazz: Class? in classArray) { + if ((activity.javaClass == clazz)) { + whiteClazz = true + } + } + if (whiteClazz) { + continue + } + + activity.finish() + activitySet.remove(key) + } + } + + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { + Timber.i("%s - onCreate", activity.javaClass.simpleName) + if (activitySet.size == 0) { + for (callback: ApplicationLifecycleCallback? in lifecycleCallbacks) { + callback?.onApplicationCreate(activity) + } + Timber.i("%s - onApplicationCreate", activity.javaClass.simpleName) + } + activitySet[getObjectTag(activity)] = activity + topActivity = activity + } + + override fun onActivityStarted(activity: Activity) { + Timber.i("%s - onStart", activity.javaClass.simpleName) + } + + override fun onActivityResumed(activity: Activity) { + Timber.i("%s - onResume", activity.javaClass.simpleName) + if (topActivity === activity && resumedActivity == null) { + for (callback: ApplicationLifecycleCallback in lifecycleCallbacks) { + callback.onApplicationForeground(activity) + } + Timber.i("%s - onApplicationForeground", activity.javaClass.simpleName) + } + topActivity = activity + resumedActivity = activity + } + + override fun onActivityPaused(activity: Activity) { + Timber.i("%s - onPause", activity.javaClass.simpleName) + } + + override fun onActivityStopped(activity: Activity) { + Timber.i("%s - onStop", activity.javaClass.simpleName) + if (resumedActivity === activity) { + resumedActivity = null + } + if (resumedActivity == null) { + for (callback: ApplicationLifecycleCallback in lifecycleCallbacks) { + callback.onApplicationBackground(activity) + } + Timber.i("%s - onApplicationBackground", activity.javaClass.simpleName) + } + } + + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) { + Timber.i("%s - onSaveInstanceState", activity.javaClass.simpleName) + } + + override fun onActivityDestroyed(activity: Activity) { + Timber.i("%s - onDestroy", activity.javaClass.simpleName) + activitySet.remove(getObjectTag(activity)) + if (topActivity === activity) { + topActivity = null + } + if (activitySet.size == 0) { + for (callback: ApplicationLifecycleCallback in lifecycleCallbacks) { + callback.onApplicationDestroy(activity) + } + Timber.i("%s - onApplicationDestroy", activity.javaClass.simpleName) + } + } + + interface ApplicationLifecycleCallback { + + fun onApplicationCreate(activity: Activity) + + fun onApplicationDestroy(activity: Activity) + + fun onApplicationBackground(activity: Activity) + + fun onApplicationForeground(activity: Activity) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/CacheDataManager.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/CacheDataManager.kt new file mode 100644 index 0000000..91e73e2 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/CacheDataManager.kt @@ -0,0 +1,77 @@ +package com.localee.mireo.app.manager + +import android.content.Context +import android.os.Environment +import com.tencent.bugly.crashreport.CrashReport +import java.io.File +import java.math.BigDecimal + +object CacheDataManager { + + fun getTotalCacheSize(context: Context): String { + var cacheSize: Long = getFolderSize(context.cacheDir) + if ((Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)) { + cacheSize += getFolderSize(context.externalCacheDir!!) + } + return getFormatSize(cacheSize.toDouble()) + } + + fun clearAllCache(context: Context) { + deleteDir(context.cacheDir) + if ((Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)) { + deleteDir(context.externalCacheDir) + } + } + + private fun deleteDir(dir: File?): Boolean { + if (dir == null) { + return false + } + if (!dir.isDirectory) { + return dir.delete() + } + val children: Array = dir.list() ?: return false + for (child: String in children) { + deleteDir(File(dir, child)) + } + return false + } + + private fun getFolderSize(file: File): Long { + var size: Long = 0 + try { + val list: Array = file.listFiles() ?: return 0 + for (temp: File in list) { + size += if (temp.isDirectory) { + getFolderSize(temp) + } else { + temp.length() + } + } + } catch (e: Exception) { + CrashReport.postCatchedException(e) + } + return size + } + + fun getFormatSize(size: Double): String { + val kiloByte: Double = size / 1024 + if (kiloByte < 1) { + // return size + "Byte"; + return "0K" + } + val megaByte: Double = kiloByte / 1024 + if (megaByte < 1) { + return BigDecimal(kiloByte).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "K" + } + val gigaByte: Double = megaByte / 1024 + if (gigaByte < 1) { + return BigDecimal(megaByte).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "M" + } + val teraBytes: Double = gigaByte / 1024 + if (teraBytes < 1) { + return BigDecimal(gigaByte).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB" + } + return BigDecimal(teraBytes).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB" + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/PickerLayoutManager.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/PickerLayoutManager.kt new file mode 100644 index 0000000..1bb93f3 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/manager/PickerLayoutManager.kt @@ -0,0 +1,186 @@ +package com.localee.mireo.app.manager + +import android.content.Context +import android.view.View +import androidx.core.view.ViewCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearSnapHelper +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.Recycler +import kotlin.math.abs +import kotlin.math.min + +class PickerLayoutManager private constructor( + context: Context, orientation: Int, reverseLayout: Boolean, maxItem: Int, scale: Float, alpha: Boolean) : + LinearLayoutManager(context, orientation, reverseLayout) { + + private val linearSnapHelper: LinearSnapHelper = LinearSnapHelper() + private val maxItem: Int + private val scale: Float + private val alpha: Boolean + private var recyclerView: RecyclerView? = null + private var listener: OnPickerListener? = null + + init { + this.maxItem = maxItem + this.alpha = alpha + this.scale = scale + } + + override fun onAttachedToWindow(recyclerView: RecyclerView) { + super.onAttachedToWindow(recyclerView) + this.recyclerView = recyclerView + this.recyclerView!!.clipToPadding = false + // 添加 LinearSnapHelper + linearSnapHelper.attachToRecyclerView(this.recyclerView) + } + + override fun onDetachedFromWindow(recyclerView: RecyclerView?, recycler: Recycler?) { + super.onDetachedFromWindow(recyclerView, recycler) + this.recyclerView = null + } + + override fun isAutoMeasureEnabled(): Boolean { + return maxItem == 0 + } + + override fun onMeasure(recycler: Recycler, state: RecyclerView.State, widthSpec: Int, heightSpec: Int) { + var width: Int = chooseSize(widthSpec, paddingLeft + paddingRight, ViewCompat.getMinimumWidth(recyclerView!!)) + var height: Int = chooseSize(heightSpec, paddingTop + paddingBottom, ViewCompat.getMinimumHeight(recyclerView!!)) + if (state.itemCount != 0 && maxItem != 0) { + val itemView: View = recycler.getViewForPosition(0) + measureChildWithMargins(itemView, widthSpec, heightSpec) + if (orientation == HORIZONTAL) { + val measuredWidth: Int = itemView.measuredWidth + val paddingHorizontal: Int = (maxItem - 1) / 2 * measuredWidth + recyclerView!!.setPadding(paddingHorizontal, 0, paddingHorizontal, 0) + width = measuredWidth * maxItem + } else if (orientation == VERTICAL) { + val measuredHeight: Int = itemView.measuredHeight + val paddingVertical: Int = (maxItem - 1) / 2 * measuredHeight + recyclerView!!.setPadding(0, paddingVertical, 0, paddingVertical) + height = measuredHeight * maxItem + } + } + setMeasuredDimension(width, height) + } + + override fun onScrollStateChanged(state: Int) { + super.onScrollStateChanged(state) + if (state != RecyclerView.SCROLL_STATE_IDLE) { + return + } + recyclerView?.let { + listener?.onPicked(it, getPickedPosition()) + } + } + + override fun onLayoutChildren(recycler: Recycler, state: RecyclerView.State) { + super.onLayoutChildren(recycler, state) + if (itemCount < 0 || state.isPreLayout) { + return + } + if (orientation == HORIZONTAL) { + scaleHorizontalChildView() + } else if (orientation == VERTICAL) { + scaleVerticalChildView() + } + } + + override fun scrollHorizontallyBy(dx: Int, recycler: Recycler?, state: RecyclerView.State?): Int { + scaleHorizontalChildView() + return super.scrollHorizontallyBy(dx, recycler, state) + } + + override fun scrollVerticallyBy(dy: Int, recycler: Recycler?, state: RecyclerView.State?): Int { + scaleVerticalChildView() + return super.scrollVerticallyBy(dy, recycler, state) + } + + private fun scaleHorizontalChildView() { + val mid: Float = width / 2.0f + for (i in 0 until childCount) { + val childView: View = getChildAt(i) ?: continue + val childMid: Float = + (getDecoratedLeft(childView) + getDecoratedRight(childView)) / 2.0f + val scale: Float = 1.0f + (-1 * (1 - scale)) * min(mid, abs(mid - childMid)) / mid + childView.scaleX = scale + childView.scaleY = scale + if (alpha) { + childView.alpha = scale + } + } + } + + private fun scaleVerticalChildView() { + val mid: Float = height / 2.0f + for (i in 0 until childCount) { + val childView: View = getChildAt(i) ?: continue + val childMid: Float = (getDecoratedTop(childView) + getDecoratedBottom(childView)) / 2.0f + val scale: Float = 1.0f + (-1 * (1 - scale)) * (min(mid, abs(mid - childMid))) / mid + childView.scaleX = scale + childView.scaleY = scale + if (alpha) { + childView.alpha = scale + } + } + } + + fun getPickedPosition(): Int { + val itemView: View = linearSnapHelper.findSnapView(this) ?: return 0 + return getPosition(itemView) + } + + fun setOnPickerListener(listener: OnPickerListener?) { + this.listener = listener + } + + interface OnPickerListener { + + fun onPicked(recyclerView: RecyclerView, position: Int) + } + + class Builder constructor(private val context: Context) { + + private var orientation: Int = VERTICAL + private var reverseLayout: Boolean = false + private var listener: OnPickerListener? = null + private var maxItem: Int = 3 + private var scale: Float = 0.6f + private var alpha: Boolean = true + + fun setOrientation(@RecyclerView.Orientation orientation: Int): Builder = apply { + this.orientation = orientation + } + + fun setReverseLayout(reverseLayout: Boolean): Builder = apply { + this.reverseLayout = reverseLayout + } + + fun setMaxItem(maxItem: Int): Builder = apply { + this.maxItem = maxItem + } + + fun setScale(scale: Float): Builder = apply { + this.scale = scale + } + + fun setAlpha(alpha: Boolean): Builder = apply { + this.alpha = alpha + } + + fun setOnPickerListener(listener: OnPickerListener?): Builder = apply { + this.listener = listener + } + + fun build(): PickerLayoutManager { + val layoutManager = PickerLayoutManager(context, orientation, reverseLayout, maxItem, scale, alpha) + layoutManager.setOnPickerListener(listener) + return layoutManager + } + + fun into(recyclerView: RecyclerView) { + recyclerView.layoutManager = build() + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/AppConfig.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/AppConfig.kt new file mode 100644 index 0000000..276f853 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/AppConfig.kt @@ -0,0 +1,34 @@ +package com.localee.mireo.app.other + +import com.localee.mireo.app.BuildConfig + +object AppConfig { + + fun isDebug(): Boolean { + return BuildConfig.DEBUG + } + + fun getBuildType(): String { + return BuildConfig.BUILD_TYPE + } + + fun isLogEnable(): Boolean { + return BuildConfig.LOG_ENABLE + } + + fun getPackageName(): String { + return BuildConfig.APPLICATION_ID + } + + fun getVersionName(): String { + return BuildConfig.VERSION_NAME + } + + fun getVersionCode(): Int { + return BuildConfig.VERSION_CODE + } + + fun getHostUrl(): String { + return BuildConfig.HOST_URL + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/CrashHandler.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/CrashHandler.kt new file mode 100644 index 0000000..9aa74c4 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/CrashHandler.kt @@ -0,0 +1,56 @@ +package com.localee.mireo.app.other + +import android.app.* +import android.content.* +import android.os.Process + +class CrashHandler private constructor(private val application: Application) : + Thread.UncaughtExceptionHandler { + + companion object { + + private const val CRASH_FILE_NAME: String = "crash_file" + + private const val KEY_CRASH_TIME: String = "key_crash_time" + + fun register(application: Application) { + Thread.setDefaultUncaughtExceptionHandler(CrashHandler(application)) + } + } + + private val nextHandler: Thread.UncaughtExceptionHandler? = Thread.getDefaultUncaughtExceptionHandler() + + init { + if ((javaClass.name == nextHandler?.javaClass?.name)) { + throw IllegalStateException("are you ok?") + } + } + + @Suppress("ApplySharedPref") + override fun uncaughtException(thread: Thread, throwable: Throwable) { + val sharedPreferences: SharedPreferences = application.getSharedPreferences( + CRASH_FILE_NAME, Context.MODE_PRIVATE) + val currentCrashTime: Long = System.currentTimeMillis() + val lastCrashTime: Long = sharedPreferences.getLong(KEY_CRASH_TIME, 0) + sharedPreferences.edit().putLong(KEY_CRASH_TIME, currentCrashTime).commit() + + val deadlyCrash: Boolean = currentCrashTime - lastCrashTime < 1000 * 60 * 5 +// if (AppConfig.isDebug()) { +// CrashActivity.start(application, throwable) +// } else { +// if (!deadlyCrash) { +// // 如果不是致命的异常就自动重启应用 +// RestartActivity.start(application) +// } +// } + + // 不去触发系统的崩溃处理(com.android.internal.os.RuntimeInit$KillApplicationHandler) + if (nextHandler != null && !nextHandler.javaClass.name + .startsWith("com.android.internal.os")) { + nextHandler.uncaughtException(thread, throwable) + } + + Process.killProcess(Process.myPid()) + System.exit(10) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/DebugLoggerTree.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/DebugLoggerTree.kt new file mode 100644 index 0000000..b3b03a7 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/DebugLoggerTree.kt @@ -0,0 +1,19 @@ +package com.localee.mireo.app.other + +import android.os.Build +import timber.log.Timber.DebugTree + +class DebugLoggerTree : DebugTree() { + + companion object { + private const val MAX_TAG_LENGTH: Int = 23 + } + + override fun createStackElementTag(element: StackTraceElement): String { + val tag: String = "(" + element.fileName + ":" + element.lineNumber + ")" + if (tag.length <= MAX_TAG_LENGTH || Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + return tag + } + return tag.substring(0, MAX_TAG_LENGTH) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MaterialHeader.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MaterialHeader.kt new file mode 100644 index 0000000..bf8c1c2 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MaterialHeader.kt @@ -0,0 +1,239 @@ +package com.localee.mireo.app.other + +import android.content.Context +import android.content.res.TypedArray +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Path +import android.util.AttributeSet +import android.widget.ImageView +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes +import androidx.core.content.ContextCompat +import com.localee.mireo.app.R +import com.scwang.smart.refresh.header.material.CircleImageView +import com.scwang.smart.refresh.header.material.MaterialProgressDrawable +import com.scwang.smart.refresh.layout.api.RefreshHeader +import com.scwang.smart.refresh.layout.api.RefreshKernel +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.constant.RefreshState +import com.scwang.smart.refresh.layout.constant.SpinnerStyle +import com.scwang.smart.refresh.layout.simple.SimpleComponent +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min +import kotlin.math.pow + +class MaterialHeader @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + SimpleComponent(context, attrs, 0), RefreshHeader { + + companion object { + + const val BALL_STYLE_LARGE: Int = 0 + + const val BALL_STYLE_DEFAULT: Int = 1 + + private val CIRCLE_BG_LIGHT: Int = Color.parseColor("#FAFAFA") + private const val MAX_PROGRESS_ANGLE: Float = 0.8f + } + + private var finished: Boolean = false + private var circleDiameter: Int + private var circleView: ImageView + private var progressDrawable: MaterialProgressDrawable + private var waveHeight: Int = 0 + private var headHeight: Int = 0 + private var bezierPath: Path + private var bezierPaint: Paint + private var refreshState: RefreshState? = null + private var showBezierWave: Boolean = false + private var scrollableWhenRefreshing: Boolean = true + + init { + mSpinnerStyle = SpinnerStyle.MatchLayout + minimumHeight = resources.getDimension(R.dimen.dp_100).toInt() + progressDrawable = MaterialProgressDrawable(this) + progressDrawable.setColorSchemeColors( + Color.parseColor("#0099CC"), + Color.parseColor("#FF4444"), + Color.parseColor("#669900"), + Color.parseColor("#AA66CC"), + Color.parseColor("#FF8800")) + circleView = CircleImageView(context, CIRCLE_BG_LIGHT) + circleView.setImageDrawable(progressDrawable) + circleView.alpha = 0f + addView(circleView) + circleDiameter = resources.getDimension(R.dimen.dp_40).toInt() + bezierPath = Path() + bezierPaint = Paint() + bezierPaint.isAntiAlias = true + bezierPaint.style = Paint.Style.FILL + val typedArray: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.MaterialHeader) + showBezierWave = typedArray.getBoolean(R.styleable.MaterialHeader_srlShowBezierWave, showBezierWave) + scrollableWhenRefreshing = typedArray.getBoolean(R.styleable.MaterialHeader_srlScrollableWhenRefreshing, scrollableWhenRefreshing) + bezierPaint.color = typedArray.getColor(R.styleable.MaterialHeader_srlPrimaryColor, Color.parseColor("#11BBFF")) + if (typedArray.hasValue(R.styleable.MaterialHeader_srlShadowRadius)) { + val radius: Int = typedArray.getDimensionPixelOffset(R.styleable.MaterialHeader_srlShadowRadius, 0) + val color: Int = typedArray.getColor(R.styleable.MaterialHeader_mhShadowColor, Color.parseColor("#000000")) + bezierPaint.setShadowLayer(radius.toFloat(), 0f, 0f, color) + setLayerType(LAYER_TYPE_SOFTWARE, null) + } + showBezierWave = typedArray.getBoolean(R.styleable.MaterialHeader_mhShowBezierWave, showBezierWave) + scrollableWhenRefreshing = typedArray.getBoolean(R.styleable.MaterialHeader_mhScrollableWhenRefreshing, scrollableWhenRefreshing) + if (typedArray.hasValue(R.styleable.MaterialHeader_mhPrimaryColor)) { + bezierPaint.color = typedArray.getColor(R.styleable.MaterialHeader_mhPrimaryColor, Color.parseColor("#11BBFF")) + } + if (typedArray.hasValue(R.styleable.MaterialHeader_mhShadowRadius)) { + val radius: Int = typedArray.getDimensionPixelOffset(R.styleable.MaterialHeader_mhShadowRadius, 0) + val color: Int = typedArray.getColor(R.styleable.MaterialHeader_mhShadowColor, Color.parseColor("#000000")) + bezierPaint.setShadowLayer(radius.toFloat(), 0f, 0f, color) + setLayerType(LAYER_TYPE_SOFTWARE, null) + } + typedArray.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec)) + + circleView.measure(MeasureSpec.makeMeasureSpec(circleDiameter, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(circleDiameter, MeasureSpec.EXACTLY)) + } + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + if (childCount == 0) { + return + } + val width: Int = measuredWidth + val circleWidth: Int = circleView.measuredWidth + val circleHeight: Int = circleView.measuredHeight + if (isInEditMode && headHeight > 0) { + val circleTop: Int = headHeight - circleHeight / 2 + circleView.layout((width / 2 - circleWidth / 2), circleTop, + (width / 2 + circleWidth / 2), circleTop + circleHeight) + progressDrawable.showArrow(true) + progressDrawable.setStartEndTrim(0f, MAX_PROGRESS_ANGLE) + progressDrawable.setArrowScale(1f) + circleView.alpha = 1f + circleView.visibility = VISIBLE + } else { + circleView.layout((width / 2 - circleWidth / 2), -circleHeight, (width / 2 + circleWidth / 2), 0) + } + } + + override fun dispatchDraw(canvas: Canvas) { + if (showBezierWave) { + // 重置画笔 + bezierPath.reset() + bezierPath.lineTo(0f, headHeight.toFloat()) + // 绘制贝塞尔曲线 + bezierPath.quadTo(measuredWidth / 2f, headHeight + waveHeight * 1.9f, measuredWidth.toFloat(), headHeight.toFloat()) + bezierPath.lineTo(measuredWidth.toFloat(), 0f) + canvas.drawPath(bezierPath, bezierPaint) + } + super.dispatchDraw(canvas) + } + + override fun onInitialized(kernel: RefreshKernel, height: Int, maxDragHeight: Int) { + if (!showBezierWave) { + kernel.requestDefaultTranslationContentFor(this, false) + } + if (isInEditMode) { + headHeight = height / 2 + waveHeight = headHeight + } + } + + override fun onMoving(dragging: Boolean, percent: Float, offset: Int, height: Int, maxDragHeight: Int) { + if (refreshState == RefreshState.Refreshing) { + return + } + if (showBezierWave) { + headHeight = min(offset, height) + waveHeight = max(0, offset - height) + postInvalidate() + } + if (dragging || (!progressDrawable.isRunning && !finished)) { + if (refreshState != RefreshState.Refreshing) { + val originalDragPercent: Float = 1f * offset / height + val dragPercent: Float = min(1f, abs(originalDragPercent)) + val adjustedPercent: Float = max(dragPercent - .4, 0.0).toFloat() * 5 / 3 + val extraOs: Float = (abs(offset) - height).toFloat() + val tensionSlingshotPercent: Float = max(0f, (min(extraOs, height.toFloat() * 2) / height.toFloat())) + val tensionPercent: Float = ((tensionSlingshotPercent / 4) - (tensionSlingshotPercent / 4).toDouble().pow(2.0)).toFloat() * 2f + val strokeStart: Float = adjustedPercent * .8f + progressDrawable.showArrow(true) + progressDrawable.setStartEndTrim(0f, min(MAX_PROGRESS_ANGLE, strokeStart)) + progressDrawable.setArrowScale(min(1f, adjustedPercent)) + val rotation: Float = (-0.25f + (.4f * adjustedPercent) + (tensionPercent * 2)) * .5f + progressDrawable.setProgressRotation(rotation) + } + val targetY: Float = offset / 2f + circleDiameter / 2f + circleView.translationY = min(offset.toFloat(), targetY) + circleView.alpha = min(1f, 4f * offset / circleDiameter) + } + } + + override fun onReleased(layout: RefreshLayout, height: Int, maxDragHeight: Int) { + progressDrawable.start() + } + + override fun onStateChanged(refreshLayout: RefreshLayout, oldState: RefreshState, newState: RefreshState) { + refreshState = newState + if (newState == RefreshState.PullDownToRefresh) { + finished = false + circleView.visibility = VISIBLE + circleView.translationY = 0f + circleView.scaleX = 1f + circleView.scaleY = 1f + } + } + + override fun onFinish(layout: RefreshLayout, success: Boolean): Int { + progressDrawable.stop() + circleView.animate().scaleX(0f).scaleY(0f) + finished = true + return 0 + } + + fun setProgressBackgroundResource(@ColorRes id: Int): MaterialHeader = apply { + setProgressBackgroundColor(ContextCompat.getColor(context, id)) + } + + fun setProgressBackgroundColor(@ColorInt color: Int): MaterialHeader = apply { + circleView.setBackgroundColor(color) + } + + fun setColorSchemeColors(@ColorInt vararg colors: Int): MaterialHeader = apply { + progressDrawable.setColorSchemeColors(*colors) + } + + fun setColorSchemeResources(@ColorRes vararg ids: Int): MaterialHeader = apply { + val colors = IntArray(ids.size) + for (i in ids.indices) { + colors[i] = ContextCompat.getColor(context, ids[i]) + } + setColorSchemeColors(*colors) + } + + fun setBallStyle(style: Int): MaterialHeader = apply { + if (style != BALL_STYLE_LARGE && style != BALL_STYLE_DEFAULT) { + return@apply + } + circleDiameter = if (style == BALL_STYLE_LARGE) resources.getDimension(R.dimen.dp_56).toInt() else resources.getDimension(R.dimen.dp_40).toInt() + // force the bounds of the progress circle inside the circle view to + // update by setting it to null before updating its size and then + // re-setting it + circleView.setImageDrawable(null) + progressDrawable.updateSizes(style) + circleView.setImageDrawable(progressDrawable) + } + + fun setShowBezierWave(show: Boolean): MaterialHeader = apply { + showBezierWave = show + } + + fun setScrollableWhenRefreshing(scrollable: Boolean): MaterialHeader = apply { + scrollableWhenRefreshing = scrollable + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt new file mode 100644 index 0000000..c81a7d8 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/MsConstants.kt @@ -0,0 +1,65 @@ +package com.localee.mireo.app.other + +object MsConstants { + + const val ACCESS_TOKEN = "access_token" + const val APP_LANG = "app_langs" + + const val CONSTANTS_User_STRING = "CONSTANTS_User_STRING" + + const val Constants_web = "https://www.mireotv.com/" + const val Constants_user_agreement = "https://www.mireotv.com/user_policy" + const val Constants_privacy_policy = "https://www.mireotv.com/private" + + const val EVENT_VIDEO_CLOSE = "event_video_close" + const val EVENT_VIDEO_NEXT = "event_video_next" + const val EVENT_VIDEO_HOME_NEXT = "event_video_home_next" + const val EVENT_VIDEO_PLAY = "event_video_play" + const val EVENT_VIDEO_UPDATE = "event_video_update" + const val EVENT_SELECT_COLLECT = "event_select_collect" + const val EVENT_SELECT_HOME_COLLECT = "event_select_home_collect" + const val EVENT_CLICK_COLLECTION = "event_click_Collection" + const val EVENT_TO_LOGIN = "event_to_login" + const val EVENT_SHOW_AD = "event_show_ad" + const val EVENT_ADD_IN = "event_add_in" + const val EVENT_TO_HOME = "event_to_home" + const val EVENT_DELE_ACC = "event_dele_acc" + const val EVENT_UPDATE_MAIN = "event_update_main" + const val EVENT_UPDATE_USER = "event_update_user_info" + const val EVENT_MAIN_UPDATE_USER_INFO = "event_update_user_info" + const val CLOSE_VIDEO = "close_video" + const val EVENT_SHOW_ADS = "event_show_ads" + const val EVENT_UPDATE_COLLECTION = "event_update_Collection" + + + var ExampleIsCurrentPage: Boolean = true + var Exampleplaying: Boolean = false + var ExampleDetailPlaying: Boolean = false + var Exampleready: Boolean = false + var ExampleDetailCanPlay: Boolean = true + var CanNotification: Boolean = false + var WebRefresh: Boolean = false + var isBannerScrolling: Boolean = true + var seek = true + const val Constants_RecommendPlayerView_PLAYER_STATUS_FINISHExample = + "Constants_RecommendPlayerView_PLAYER_STATUS_FINISHExample" + const val Constants_DetailPlayerView_PLAYER_STATUS_FINISHExample = + "Constants_DetailPlayerView_PLAYER_STATUS_FINISHE" + const val Constants_RecommendPlayerView_CLOSEExample = + "Constants_RecommendPlayerView_CLOSEExample" + const val Constants_RecommendPlayerView_DramaSeriesExample = + "Constants_RecommendPlayerView_DramaSeriesExample" + const val Constants_Episodes_Series_Data_currentPositionExample = + "Constants_Episodes_Series_Data_currentPositionExample" + const val Constants_Episodes_Series_Data_ListExample = + "Constants_Episodes_Series_Data_ListExample" + const val CONSTANTS_Translates_STRING = "CONSTANTS_Translates_STRING" + const val CONSTANTS_quality_refresh = "CONSTANTS_quality_refresh" + const val CONSTANTS_quality = "CONSTANTS_quality" + const val Constants_Episodes_Series_DataExample = "Constants_Episodes_Series_DataExample" + + const val CONSTANTS_short_play_id = "CONSTANTS_short_play_id" + const val CONSTANTS_activity_id = "CONSTANTS_activity_id" + const val CONSTANTS_stop_play = "CONSTANTS_stop_play" + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/PermissionCallback.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/PermissionCallback.kt new file mode 100644 index 0000000..f3483f0 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/PermissionCallback.kt @@ -0,0 +1,188 @@ +package com.localee.mireo.app.other + +import android.app.Activity +import android.content.* +import android.os.* +import com.hjq.base.BaseDialog +import com.localee.mireo.app.manager.* +import com.localee.mireo.app.ui.dialog.MessageDialog +import com.hjq.permissions.OnPermissionCallback +import com.hjq.permissions.Permission +import com.hjq.permissions.XXPermissions +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.manager.ActivityManager +import java.util.* +import com.localee.mireo.app.R + +abstract class PermissionCallback : OnPermissionCallback { + + override fun onDenied(permissions: MutableList, never: Boolean) { + if (never) { + showPermissionDialog(permissions) + return + } + if (permissions.size == 1 && (Permission.ACCESS_BACKGROUND_LOCATION == permissions[0])) { + ToastUtils.show(R.string.common_permission_fail_4) + return + } + ToastUtils.show(R.string.common_permission_fail_1) + } + + protected fun showPermissionDialog(permissions: MutableList) { + val activity: Activity? = ActivityManager.getInstance().getTopActivity() + if ((activity == null) || activity.isFinishing || activity.isDestroyed) { + return + } + MessageDialog.Builder(activity) + .setTitle(R.string.common_permission_alert) + .setMessage(getPermissionHint(activity, permissions)) + .setConfirm(R.string.common_permission_goto) + .setCancel(null) + .setCancelable(false) + .setListener(object : MessageDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?) { + XXPermissions.startPermissionActivity(activity, permissions) + } + }) + .show() + } + + protected fun getPermissionHint(context: Context, permissions: MutableList): String { + if (permissions.isEmpty()) { + return context.getString(R.string.common_permission_fail_2) + } + val hints: MutableList = ArrayList() + for (permission: String? in permissions) { + when (permission) { + Permission.READ_EXTERNAL_STORAGE, + Permission.WRITE_EXTERNAL_STORAGE, + Permission.MANAGE_EXTERNAL_STORAGE -> { + val hint: String = context.getString(R.string.common_permission_storage) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.CAMERA -> { + val hint: String = context.getString(R.string.common_permission_camera) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.RECORD_AUDIO -> { + val hint: String = context.getString(R.string.common_permission_microphone) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.ACCESS_FINE_LOCATION, + Permission.ACCESS_COARSE_LOCATION, + Permission.ACCESS_BACKGROUND_LOCATION -> { + val hint: String = if (!permissions.contains(Permission.ACCESS_FINE_LOCATION) && + !permissions.contains(Permission.ACCESS_COARSE_LOCATION)) { + context.getString(R.string.common_permission_location_background) + } else { + context.getString(R.string.common_permission_location) + } + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.READ_PHONE_STATE, + Permission.CALL_PHONE, + Permission.ADD_VOICEMAIL, + Permission.USE_SIP, + Permission.READ_PHONE_NUMBERS, + Permission.ANSWER_PHONE_CALLS -> { + val hint: String = context.getString(R.string.common_permission_phone) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.GET_ACCOUNTS, + Permission.READ_CONTACTS, + Permission.WRITE_CONTACTS -> { + val hint: String = context.getString(R.string.common_permission_contacts) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.READ_CALENDAR, + Permission.WRITE_CALENDAR -> { + val hint: String = context.getString(R.string.common_permission_calendar) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.READ_CALL_LOG, + Permission.WRITE_CALL_LOG, + Permission.PROCESS_OUTGOING_CALLS -> { + val hint: String = context.getString(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) R.string.common_permission_call_log else R.string.common_permission_phone) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.BODY_SENSORS -> { + val hint: String = context.getString(R.string.common_permission_sensors) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.ACTIVITY_RECOGNITION -> { + val hint: String = context.getString(R.string.common_permission_activity_recognition) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.SEND_SMS, + Permission.RECEIVE_SMS, + Permission.READ_SMS, + Permission.RECEIVE_WAP_PUSH, + Permission.RECEIVE_MMS -> { + val hint: String = context.getString(R.string.common_permission_sms) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.REQUEST_INSTALL_PACKAGES -> { + val hint: String = context.getString(R.string.common_permission_install) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.NOTIFICATION_SERVICE -> { + val hint: String = context.getString(R.string.common_permission_notification) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.SYSTEM_ALERT_WINDOW -> { + val hint: String = context.getString(R.string.common_permission_window) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + Permission.WRITE_SETTINGS -> { + val hint: String = context.getString(R.string.common_permission_setting) + if (!hints.contains(hint)) { + hints.add(hint) + } + } + } + } + if (hints.isNotEmpty()) { + val builder: StringBuilder = StringBuilder() + for (text: String? in hints) { + if (builder.isEmpty()) { + builder.append(text) + } else { + builder.append("、") + .append(text) + } + } + builder.append(" ") + return context.getString(R.string.common_permission_fail_3, builder.toString()) + } + return context.getString(R.string.common_permission_fail_2) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/SmartBallPulseFooter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/SmartBallPulseFooter.kt new file mode 100644 index 0000000..9fa1174 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/SmartBallPulseFooter.kt @@ -0,0 +1,149 @@ +package com.localee.mireo.app.other + +import android.animation.TimeInterpolator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.util.AttributeSet +import android.view.animation.AccelerateDecelerateInterpolator +import androidx.annotation.ColorInt +import androidx.core.graphics.ColorUtils +import com.localee.mireo.app.R +import com.scwang.smart.refresh.layout.api.RefreshFooter +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.constant.SpinnerStyle +import com.scwang.smart.refresh.layout.simple.SimpleComponent +import kotlin.math.min + +class SmartBallPulseFooter @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null +) : + SimpleComponent(context, attrs, 0), RefreshFooter { + + private val interpolator: TimeInterpolator = AccelerateDecelerateInterpolator() + + private var noMoreData: Boolean = false + private var manualNormalColor: Boolean = false + private var manualAnimationColor: Boolean = false + private val paint: Paint = Paint() + private var normalColor: Int = Color.parseColor("#EEEEEE") + + private var animatingColor: IntArray = intArrayOf( + Color.parseColor("#30B399"), + Color.parseColor("#FF4600"), + Color.parseColor("#142DCC") + ) + + private val circleSpacing: Float + private var startTime: Long = 0 + private var started: Boolean = false + private val textWidth: Float + + init { + minimumHeight = resources.getDimension(R.dimen.dp_60).toInt() + paint.color = Color.WHITE + paint.style = Paint.Style.FILL + paint.isAntiAlias = true + mSpinnerStyle = SpinnerStyle.Translate + circleSpacing = resources.getDimension(R.dimen.dp_2) + paint.textSize = resources.getDimension(R.dimen.sp_14) + textWidth = paint.measureText(getContext().getString(R.string.common_no_more_data)) + } + + override fun dispatchDraw(canvas: Canvas) { + val width: Int = width + val height: Int = height + if (noMoreData) { + paint.color = Color.parseColor("#898989") + canvas.drawText( + context.getString(R.string.common_no_more_data), + (width - textWidth) / 2, (height - paint.textSize) / 2, paint + ) + } else { + val radius: Float = (min(width, height) - circleSpacing * 2) / 7 + val x: Float = width / 2f - (radius * 2 + circleSpacing) + val y: Float = height / 2f + val now: Long = System.currentTimeMillis() + for (i in 0..2) { + val time: Long = now - startTime - (120 * (i + 1)) + var percent: Float = if (time > 0) ((time % 750) / 750f) else 0f + percent = interpolator.getInterpolation(percent) + canvas.save() + val translateX: Float = x + ((radius * 2) * i) + (circleSpacing * i) + if (percent < 0.5) { + val scale: Float = 1 - percent * 2 * 0.7f + val translateY: Float = y - scale * 10 + canvas.translate(translateX, translateY) + } else { + val scale: Float = percent * 2 * 0.7f - 0.4f + val translateY: Float = y + scale * 10 + canvas.translate(translateX, translateY) + } + paint.color = animatingColor[i % animatingColor.size] + canvas.drawCircle(0f, 0f, radius / 3, paint) + canvas.restore() + } + } + if (started) { + postInvalidate() + } + } + + override fun onStartAnimator(layout: RefreshLayout, height: Int, maxDragHeight: Int) { + if (started) { + return + } + invalidate() + started = true + startTime = System.currentTimeMillis() + } + + override fun onFinish(layout: RefreshLayout, success: Boolean): Int { + started = false + startTime = 0 + paint.color = normalColor + return 0 + } + + override fun setPrimaryColors(@ColorInt vararg colors: Int) { + if (!manualAnimationColor && colors.size > 1) { + setAnimatingColor(colors[0]) + manualAnimationColor = false + } + if (!manualNormalColor) { + if (colors.size > 1) { + setNormalColor(colors[1]) + } else if (colors.isNotEmpty()) { + setNormalColor(ColorUtils.compositeColors(Color.parseColor("#99FFFFFF"), colors[0])) + } + manualNormalColor = false + } + } + + override fun setNoMoreData(noMoreData: Boolean): Boolean { + this.noMoreData = noMoreData + return true + } + + fun setSpinnerStyle(style: SpinnerStyle?): SmartBallPulseFooter = apply { + mSpinnerStyle = style + } + + fun setNormalColor(@ColorInt color: Int): SmartBallPulseFooter = apply { + normalColor = color + manualNormalColor = true + if (!started) { + paint.color = color + } + } + + fun setAnimatingColor(@ColorInt color: Int): SmartBallPulseFooter = apply { + animatingColor = intArrayOf(color) + manualAnimationColor = true + if (started) { + paint.color = color + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/TitleBarStyle.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/TitleBarStyle.kt new file mode 100644 index 0000000..c49ed16 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/TitleBarStyle.kt @@ -0,0 +1,74 @@ +package com.localee.mireo.app.other + +import android.content.* +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Drawable +import android.widget.TextView +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.ContextCompat +import com.hjq.bar.style.LightBarStyle +import com.localee.mireo.app.R +import com.hjq.widget.view.PressAlphaTextView + +class TitleBarStyle : LightBarStyle() { + + override fun newTitleView(context: Context): TextView { + return AppCompatTextView(context) + } + + override fun newLeftView(context: Context): TextView { + return PressAlphaTextView(context) + } + + override fun newRightView(context: Context): TextView { + return PressAlphaTextView(context) + } + + override fun getTitleBarBackground(context: Context): Drawable { + return ColorDrawable(ContextCompat.getColor(context, R.color.common_primary_color)) + } + + override fun getBackButtonDrawable(context: Context): Drawable? { + return ContextCompat.getDrawable(context, R.drawable.arrows_left_ic) + } + + override fun getLeftTitleBackground(context: Context): Drawable? { + return null + } + + override fun getRightTitleBackground(context: Context): Drawable? { + return null + } + + override fun getChildHorizontalPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.dp_12).toInt() + } + + override fun getChildVerticalPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.dp_14).toInt() + } + + override fun getTitleSize(context: Context): Float { + return context.resources.getDimension(R.dimen.sp_15) + } + + override fun getLeftTitleSize(context: Context): Float { + return context.resources.getDimension(R.dimen.sp_13) + } + + override fun getRightTitleSize(context: Context): Float { + return context.resources.getDimension(R.dimen.sp_13) + } + + override fun getTitleIconPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.dp_2).toInt() + } + + override fun getLeftIconPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.dp_2).toInt() + } + + override fun getRightIconPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.dp_2).toInt() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/ToastStyle.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/ToastStyle.kt new file mode 100644 index 0000000..606bb4a --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/other/ToastStyle.kt @@ -0,0 +1,29 @@ +package com.localee.mireo.app.other + +import android.content.Context +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import com.localee.mireo.app.R +import com.hjq.toast.style.BlackToastStyle + +class ToastStyle : BlackToastStyle() { + + override fun getBackgroundDrawable(context: Context): Drawable { + val drawable = GradientDrawable() + drawable.setColor(-0x78000000) + drawable.cornerRadius = context.resources.getDimension(R.dimen.button_circle_size) + return drawable + } + + override fun getTextSize(context: Context): Float { + return context.resources.getDimension(R.dimen.sp_14) + } + + override fun getHorizontalPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.sp_24).toInt() + } + + override fun getVerticalPadding(context: Context): Int { + return context.resources.getDimension(R.dimen.sp_16).toInt() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/AboutActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/AboutActivity.kt new file mode 100644 index 0000000..705ff62 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/AboutActivity.kt @@ -0,0 +1,45 @@ +package com.localee.mireo.app.ui.activity + +import android.content.Intent +import android.net.Uri +import android.view.View +import com.localee.mireo.app.R +import com.localee.mireo.app.aop.SingleClick +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.other.MsConstants + +class AboutActivity : AppActivity() { + + + override fun getLayoutId(): Int { + return R.layout.about_activity + } + + override fun initView() { + setOnClickListener(R.id.sb_about_web, R.id.sb_about_privacy, R.id.sb_about_agreement) + + } + + override fun initData() { + } + + @SingleClick + override fun onClick(view: View) { + when (view.id) { + R.id.sb_about_web -> { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse(MsConstants.Constants_web)) + startActivity(webIntent) + } + + R.id.sb_about_privacy -> { + BrowserActivity.start(this, MsConstants.Constants_privacy_policy) + } + + R.id.sb_about_agreement -> { + BrowserActivity.start(this, MsConstants.Constants_user_agreement) + } + + } + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/BrowserActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/BrowserActivity.kt new file mode 100644 index 0000000..b4900cf --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/BrowserActivity.kt @@ -0,0 +1,143 @@ +package com.localee.mireo.app.ui.activity + +import android.app.Activity +import android.content.* +import android.graphics.Bitmap +import android.graphics.drawable.BitmapDrawable +import android.text.TextUtils +import android.view.* +import android.webkit.WebView +import android.widget.ProgressBar +import com.localee.mireo.app.R +import com.localee.mireo.app.action.StatusAction +import com.localee.mireo.app.aop.CheckNet +import com.localee.mireo.app.aop.Log +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.widget.BrowserView +import com.localee.mireo.app.widget.BrowserView.BrowserChromeClient +import com.localee.mireo.app.widget.BrowserView.BrowserViewClient +import com.localee.mireo.app.widget.StatusLayout +import com.localee.mireo.app.widget.StatusLayout.OnRetryListener +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshListener + +class BrowserActivity : AppActivity(), StatusAction, OnRefreshListener { + + companion object { + + const val INTENT_KEY_IN_URL: String = "url" + + @CheckNet + @Log + fun start(context: Context, url: String) { + if (TextUtils.isEmpty(url)) { + return + } + val intent = Intent(context, BrowserActivity::class.java) + intent.putExtra(INTENT_KEY_IN_URL, url) + if (context !is Activity) { + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + context.startActivity(intent) + } + } + + private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_browser_hint) } + private val progressBar: ProgressBar? by lazy { findViewById(R.id.pb_browser_progress) } + private val refreshLayout: SmartRefreshLayout? by lazy { findViewById(R.id.sl_browser_refresh) } + private val browserView: BrowserView? by lazy { findViewById(R.id.wv_browser_view) } + + override fun getLayoutId(): Int { + return R.layout.browser_activity + } + + override fun initView() { + browserView?.setLifecycleOwner(this) + refreshLayout?.setOnRefreshListener(this) + } + + override fun initData() { + showLoading() + browserView?.apply { + setBrowserViewClient(AppBrowserViewClient()) + setBrowserChromeClient(AppBrowserChromeClient(this)) + loadUrl(getString(INTENT_KEY_IN_URL)!!) + } + } + + override fun getStatusLayout(): StatusLayout? { + return hintLayout + } + + override fun onLeftClick(view: View) { + finish() + } + + override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + browserView?.apply { + if (keyCode == KeyEvent.KEYCODE_BACK && canGoBack()) { + // 后退网页并且拦截该事件 + goBack() + return true + } + } + return super.onKeyDown(keyCode, event) + } + + @CheckNet + private fun reload() { + browserView?.reload() + } + + /** + * [OnRefreshListener] + */ + override fun onRefresh(refreshLayout: RefreshLayout) { + reload() + } + + private inner class AppBrowserViewClient : BrowserViewClient() { + + override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) { + post { + showError(object : OnRetryListener { + override fun onRetry(layout: StatusLayout) { + reload() + } + }) + } + } + + override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { + progressBar?.visibility = View.VISIBLE + } + + override fun onPageFinished(view: WebView, url: String) { + progressBar?.visibility = View.GONE + refreshLayout?.finishRefresh() + showComplete() + } + } + + private inner class AppBrowserChromeClient constructor(view: BrowserView) : BrowserChromeClient(view) { + + override fun onReceivedTitle(view: WebView, title: String?) { + if (title == null) { + return + } + setTitle(title) + } + + override fun onReceivedIcon(view: WebView, icon: Bitmap?) { + if (icon == null) { + return + } + setRightIcon(BitmapDrawable(resources, icon)) + } + + override fun onProgressChanged(view: WebView, newProgress: Int) { + progressBar?.progress = newProgress + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/HomeActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/HomeActivity.kt new file mode 100644 index 0000000..cb01473 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/HomeActivity.kt @@ -0,0 +1,171 @@ +package com.localee.mireo.app.ui.activity + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager.widget.ViewPager +import com.localee.mireo.app.utils.MsMMKVUtils +import com.gyf.immersionbar.ImmersionBar +import com.hjq.base.FragmentPagerAdapter +import com.hjq.http.EasyHttp +import com.hjq.http.listener.HttpCallbackProxy +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.app.AppFragment +import com.localee.mireo.app.http.api.UserInfoApi +import com.localee.mireo.app.http.api.UserInfoRes +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.ui.adapter.NavigationAdapter +import com.localee.mireo.app.ui.fragment.ExploreFragment +import com.localee.mireo.app.ui.fragment.HomeFragment +import com.localee.mireo.app.ui.fragment.MessageFragment +import com.localee.mireo.app.ui.fragment.MineFragment +import com.localee.mireo.app.ui.fragment.SharedViewModel + +class HomeActivity : AppActivity(), NavigationAdapter.OnNavigationListener { + + companion object { + + private const val INTENT_KEY_IN_FRAGMENT_INDEX: String = "fragmentIndex" + private const val INTENT_KEY_IN_FRAGMENT_CLASS: String = "fragmentClass" + + @JvmOverloads + fun start( + context: Context, + fragmentClass: Class?>? = HomeFragment::class.java + ) { + val intent = Intent(context, HomeActivity::class.java) + intent.putExtra(INTENT_KEY_IN_FRAGMENT_CLASS, fragmentClass) + if (context !is Activity) { + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + context.startActivity(intent) + } + } + + private val viewPager: ViewPager? by lazy { findViewById(R.id.vp_home_pager) } + private val navigationView: RecyclerView? by lazy { findViewById(R.id.rv_home_navigation) } + private var navigationAdapter: NavigationAdapter? = null + private var pagerAdapter: FragmentPagerAdapter>? = null + + private val viewModel: SharedViewModel by viewModels() + + override fun getLayoutId(): Int { + return R.layout.home_activity + } + + override fun initView() { + + navigationAdapter = NavigationAdapter(this).apply { + addItem( + NavigationAdapter.MenuItem( + getString(R.string.home_nav_index), + ContextCompat.getDrawable(this@HomeActivity, R.drawable.home_home_selector) + ) + ) + addItem( + NavigationAdapter.MenuItem( + getString(R.string.home_nav_explore), + ContextCompat.getDrawable(this@HomeActivity, R.drawable.home_explore_selector) + ) + ) + addItem( + NavigationAdapter.MenuItem( + getString(R.string.home_nav_my_list), + ContextCompat.getDrawable(this@HomeActivity, R.drawable.home_my_list_selector) + ) + ) + addItem( + NavigationAdapter.MenuItem( + getString(R.string.home_nav_me), + ContextCompat.getDrawable(this@HomeActivity, R.drawable.home_me_selector) + ) + ) + setOnNavigationListener(this@HomeActivity) + navigationView?.adapter = this + } + } + + override fun initData() { +// getCustomerUser() + + pagerAdapter = FragmentPagerAdapter>(this).apply { + addFragment(HomeFragment.newInstance()) + addFragment(ExploreFragment.newInstance()) + addFragment(MessageFragment.newInstance()) + addFragment(MineFragment.newInstance()) + viewPager?.adapter = this + } + onNewIntent(intent) + + viewModel.action.observe(this) { data -> + switchFragment(data); + } + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + pagerAdapter?.let { + switchFragment(it.getFragmentIndex(getSerializable(INTENT_KEY_IN_FRAGMENT_CLASS))) + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + viewPager?.let { + outState.putInt(INTENT_KEY_IN_FRAGMENT_INDEX, it.currentItem) + } + } + + override fun onRestoreInstanceState(savedInstanceState: Bundle) { + super.onRestoreInstanceState(savedInstanceState) + switchFragment(savedInstanceState.getInt(INTENT_KEY_IN_FRAGMENT_INDEX)) + } + + private fun switchFragment(fragmentIndex: Int) { + if (fragmentIndex == -1) { + return + } + when (fragmentIndex) { + 0, 1, 2, 3 -> { + viewPager?.currentItem = fragmentIndex + navigationAdapter?.setSelectedPosition(fragmentIndex) + } + } + } + + /** + * [NavigationAdapter.OnNavigationListener] + */ + override fun onNavigationItemSelected(position: Int): Boolean { + return when (position) { + 0, 1, 2, 3 -> { + viewPager?.currentItem = position + true + } + else -> false + } + } + + + override fun createStatusBarConfig(): ImmersionBar { + return super.createStatusBarConfig() + .navigationBarColor(R.color.white) + } + + override fun onBackPressed() { + moveTaskToBack(false) + } + + + override fun onDestroy() { + super.onDestroy() + viewPager?.adapter = null + navigationView?.adapter = null + navigationAdapter?.setOnNavigationListener(null) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SearchActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SearchActivity.kt new file mode 100644 index 0000000..547e460 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SearchActivity.kt @@ -0,0 +1,160 @@ +package com.localee.mireo.app.ui.activity + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.widget.EditText +import android.widget.ImageView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.localee.mireo.app.R +import com.localee.mireo.app.action.StatusAction +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.http.api.SearchHotApi +import com.localee.mireo.app.http.api.SearchSearchApi +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.adapter.SearchHotAdapter +import com.localee.mireo.app.ui.adapter.SearchSearchAdapter +import com.localee.mireo.app.widget.StatusLayout +import com.hjq.http.EasyHttp +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.HttpCallbackProxy + + +class SearchActivity : AppActivity(), StatusAction { + + private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_status_hint) } + private val ivClose: ImageView? by lazy { findViewById(R.id.iv_close) } + private val etSearch: EditText? by lazy { findViewById(R.id.et_search) } + private val recycler: RecyclerView? by lazy { findViewById(R.id.recycler) } + + private var mAdapter: SearchHotAdapter? = null + private var mKeyAdapter: SearchSearchAdapter? = null + + override fun getLayoutId(): Int { + return R.layout.status_activity + } + + override fun initView() { + + recycler?.layoutManager = + LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) + + + mAdapter = SearchHotAdapter() + mKeyAdapter = SearchSearchAdapter() + recycler?.adapter = mAdapter + + getSearchHot() + + } + + override fun initData() { + ivClose?.setOnClickListener { + finish() + } + + etSearch?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) { + } + + override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) { + if (!TextUtils.isEmpty(charSequence.toString())) { + recycler?.adapter = mKeyAdapter + getSearchSearch(charSequence.toString()) + } else { + recycler?.adapter = mAdapter + } + } + + override fun afterTextChanged(editable: Editable) { + } + }) + + mAdapter?.setOnItemClickListener { adapter, view, position -> + val searchHot: com.localee.mireo.app.http.api.SearchHotApi.Bean.Data = adapter.items.get(position) + startActivity( + Intent( + this, + VideoPlayActivity::class.java + ).apply { + searchHot.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + mKeyAdapter?.setOnItemClickListener { adapter, view, position -> + val search: com.localee.mireo.app.http.api.SearchSearchApi.Bean.Data = adapter.items.get(position) + startActivity( + Intent( + this, + VideoPlayActivity::class.java + ).apply { + search.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + + } + + fun getSearchHot() { + EasyHttp.get(this) + .api(com.localee.mireo.app.http.api.SearchHotApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it.list.isEmpty()) { + hintLayout?.show() + } else { + hintLayout?.hide() + } + mAdapter?.submitList(it.list) + } + } + + + override fun onHttpFail(throwable: Throwable) { + super.onHttpFail(throwable) + hintLayout?.show() + } + }) + } + + fun getSearchSearch(searchKey: String) { + EasyHttp.get(this) + .api(com.localee.mireo.app.http.api.SearchSearchApi().apply { + search = searchKey + }) + .request(object : HttpCallbackProxy>(this) { + + override fun onHttpStart(api: IRequestApi) { + + } + + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it.list.isEmpty()) { + hintLayout?.show() + } else { + hintLayout?.hide() + } + mKeyAdapter?.submitList(it.list) + } + } + + override fun onHttpFail(throwable: Throwable) { + super.onHttpFail(throwable) + hintLayout?.show() + } + + }) + } + + override fun getStatusLayout(): StatusLayout? { + return hintLayout + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SettingActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SettingActivity.kt new file mode 100644 index 0000000..7f20143 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SettingActivity.kt @@ -0,0 +1,47 @@ +package com.localee.mireo.app.ui.activity + +import androidx.lifecycle.lifecycleScope +import com.bumptech.glide.Glide +import com.hjq.widget.layout.SettingBar +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.manager.CacheDataManager +import com.localee.mireo.app.utils.singleClick +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + + +class SettingActivity : AppActivity(){ + + private val cleanCacheView: SettingBar? by lazy { findViewById(R.id.sb_setting_cache) } + + override fun getLayoutId(): Int { + return R.layout.setting_activity + } + + override fun initView() { + + cleanCacheView?.setOnClickListener { + singleClick { + // 清除内存缓存(必须在主线程) + Glide.get(this@SettingActivity).clearMemory() + lifecycleScope.launch(Dispatchers.IO) { + CacheDataManager.clearAllCache(this@SettingActivity) + // 清除本地缓存(必须在子线程) + Glide.get(this@SettingActivity).clearDiskCache() + withContext(Dispatchers.Main) { + // 重新获取应用缓存大小 + cleanCacheView?.setRightText(CacheDataManager.getTotalCacheSize(this@SettingActivity)) + } + } + } + } + } + + override fun initData() { + // 获取应用缓存大小 + cleanCacheView?.setRightText(CacheDataManager.getTotalCacheSize(this)) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SplashActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SplashActivity.kt new file mode 100644 index 0000000..336c6d5 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/SplashActivity.kt @@ -0,0 +1,31 @@ +package com.localee.mireo.app.ui.activity + +import com.gyf.immersionbar.BarHide +import com.gyf.immersionbar.ImmersionBar +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppActivity + + +class SplashActivity : AppActivity() { + + + override fun getLayoutId(): Int { + return R.layout.splash_activity + } + + override fun initView() { + postDelayed(Runnable { + HomeActivity.start(this@SplashActivity) + finish() + }, 300) + } + + override fun initData() { + } + + override fun createStatusBarConfig(): ImmersionBar { + return super.createStatusBarConfig() + .hideBar(BarHide.FLAG_HIDE_BAR) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt new file mode 100644 index 0000000..33ebf1b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/activity/VideoPlayActivity.kt @@ -0,0 +1,635 @@ +package com.localee.mireo.app.ui.activity + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 +import com.blankj.utilcode.util.NetworkUtils +import com.localee.mireo.app.utils.MsMMKVUtils +import com.hjq.http.EasyHttp +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.HttpCallbackProxy +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.app.BaseEventBus +import com.localee.mireo.app.http.api.CreateHistoryApi +import com.localee.mireo.app.http.api.VideoDetailsApi +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.CONSTANTS_activity_id +import com.localee.mireo.app.other.MsConstants.CONSTANTS_quality +import com.localee.mireo.app.other.MsConstants.CONSTANTS_quality_refresh +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.other.MsConstants.Constants_Episodes_Series_Data_currentPositionExample +import com.localee.mireo.app.ui.videoPaly.ExamplePlayerDetailDataRes +import com.localee.mireo.app.ui.videoPaly.ExampleSeriesDialogFragment +import com.localee.mireo.app.ui.videoPaly.ExampleUnFavoriteDialog +import com.localee.mireo.app.ui.videoPaly.VideoPlayAdapter +import com.localee.mireo.app.ui.videoPaly.VideoPlayerView +import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.app.utils.formatNumber +import com.localee.mireo.app.utils.singleClick +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +open class VideoPlayActivity : AppActivity(), VideoPlayAdapter.PlayerDetailCollection, + ExampleSeriesDialogFragment.SeriesCallBack { + + companion object { + const val INTENT_KEY_PARAMETERS: String = "parameters" + } + + private var first: Boolean = true + private var play: Boolean = true + private var qualityRefresh: Boolean = false + + // private val exampleRecommendViewModel by lazy { ViewModelProvider(this)[ExampleRecommendViewModel::class.java] } + private var currentPage = 1 + private val currentSize = 10 + private var currentPosition = 0 + private var exampleRecommendAdapter: VideoPlayAdapter? = null + private var data: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data? = null + private var revolution = + MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0).toString() + + + private val srRecommend: SmartRefreshLayout? by lazy { findViewById(R.id.sr_recommend) } + private val viewPagerExampleRecommend: ViewPager2? by lazy { findViewById(R.id.viewPager_example_recommend) } + + private val exampleNetwork: ViewGroup? by lazy { findViewById(R.id.example_network) } + private val exampleTvNoNetwork: TextView? by lazy { exampleNetwork?.findViewById(R.id.example_tv_no_network) } + private val tvExampleRetry: TextView? by lazy { exampleNetwork?.findViewById(R.id.tv_example_retry) } + + private val exampleEmpty: ViewGroup? by lazy { findViewById(R.id.example_empty) } + private val exampleTvEmpty: TextView? by lazy { exampleEmpty?.findViewById(R.id.example_tv_empty) } + + // private val avi: LoadingAnimationView? by lazy { findViewById(R.id.avi) } + private var shortVideoId: Int? = null + private var activityId: Int? = null + private var shortVideo: VideoDetailsApi.Bean.ShortPlayInfo? = null + + override fun getLayoutId(): Int { + return R.layout.video_play_activity + } + + override fun initView() { + shortVideoId = intent.getIntExtra(CONSTANTS_short_play_id, 0) + activityId = intent.getIntExtra(CONSTANTS_activity_id, 0) + EventBus.getDefault().register(this) + this.window?.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE + ) + this.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + + exampleTvNoNetwork?.text = + TranslatesUtils.translates()?.no_network + tvExampleRetry?.text = TranslatesUtils.translates()?.retry + exampleTvEmpty?.text = TranslatesUtils.translates()?.s_no_content + } + + override fun initData() { + initialization() + MsConstants.ExampleIsCurrentPage = true + if (!play) { + qualityLogic() + } else { + play = false + } + } + + fun initialization() { + + if (NetworkUtils.isConnected()) { +// avi?.start() + getVideoDetails() + + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + exampleNetwork?.visibility = View.VISIBLE + } + srRecommend?.setOnRefreshListener { + if (NetworkUtils.isConnected()) { +// avi?.start() + currentPage = 1 + viewPagerExampleRecommend?.post { + detailPlayerView()?.stop() + detailPlayerView()?.release() + } + getVideoDetails() + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + } + } + viewPagerExampleRecommend?.registerOnPageChangeCallback(object : + ViewPager2.OnPageChangeCallback() { + @SuppressLint("NotifyDataSetChanged") + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + currentPosition = position + val previousPosition = exampleRecommendAdapter?.currentPlayingPosition + if (previousPosition != position) { + exampleRecommendAdapter?.recyclerView?.post { exampleRecommendAdapter?.notifyDataSetChanged() } + } + exampleRecommendAdapter?.currentPlayingPosition = position + + previousPosition?.let { + val recyclerView = + viewPagerExampleRecommend?.getChildAt(0) as RecyclerView + val exampleDetailPlayerView = + recyclerView.layoutManager?.findViewByPosition(it) as VideoPlayerView? + if (null != exampleDetailPlayerView) { + val episode1 = + exampleRecommendAdapter?.items?.get(it) + episode1?.short_play_id?.let { it1 -> + episode1?.short_play_video_id?.let { it2 -> + createHistory( + it1, + it2 + ) + } + } + + } + } + + } + + override fun onPageScrollStateChanged(state: Int) { + super.onPageScrollStateChanged(state) + when (state) { + ViewPager2.SCROLL_STATE_IDLE -> { + if (viewPagerExampleRecommend?.currentItem == viewPagerExampleRecommend?.adapter?.itemCount?.minus( + 1 + ) + ) { + if (!first) { + getVideoDetails() + } else { + first = false + } + } + } + + ViewPager2.SCROLL_STATE_DRAGGING -> { + + } + + ViewPager2.SCROLL_STATE_SETTLING -> { + + } + } + } + }) + exampleTvEmpty?.setOnClickListener { + singleClick { + if (!NetworkUtils.isConnected()) { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + return@singleClick + } +// avi?.start() + currentPage = 1 + getVideoDetails() + } + } + tvExampleRetry?.setOnClickListener { + singleClick { + if (!NetworkUtils.isConnected()) { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + return@singleClick + } +// avi?.start() + currentPage = 1 + getVideoDetails() + } + } + } + +// override fun onHiddenChanged(hidden: Boolean) { +// super.onHiddenChanged(hidden) +// if (!hidden) { +// activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) +// MsConstants.ExampleIsCurrentPage = true +// qualityLogic() +// } else { +// activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) +// MsConstants.ExampleIsCurrentPage = false +// srRecommend?.postDelayed({ detailPlayerView()?.pause() }, 300) +// } +// } + + override fun onResume() { + super.onResume() + if (!play) { + detailPlayerView()?.play() + } else { + play = false + } + } + + private fun qualityLogic() { + if (qualityRefresh) { + viewPagerExampleRecommend?.post { + detailPlayerView()?.stop() + detailPlayerView()?.release() + } + getVideoDetails() + qualityRefresh = false + } else { + detailPlayerView()?.play() + } + } + + override fun onPause() { + super.onPause() + MsConstants.ExampleIsCurrentPage = false + srRecommend?.postDelayed({ detailPlayerView()?.pause() }, 300) + } + + fun getVideoDetails() { + EasyHttp.get(this) + .api(VideoDetailsApi().apply { + if (activityId!! != 0) { + video_id = activityId; + } + short_play_id = shortVideoId; + + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it.episodeList.isNotEmpty()) { + shortVideo = it.shortPlayInfo + exampleRecommendAdapter = VideoPlayAdapter() + exampleRecommendAdapter?.shortVideo = it.shortPlayInfo + viewPagerExampleRecommend?.adapter = exampleRecommendAdapter + exampleRecommendAdapter?.submitList(it.episodeList) + exampleRecommendAdapter?.playerDetailCollection = + this@VideoPlayActivity + createHistory( + it.episodeList[0].short_play_id, + it.episodeList[0].short_play_video_id + ); + exampleNetwork?.visibility = View.INVISIBLE + exampleEmpty?.visibility = View.INVISIBLE + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_more_data.toString()) + } else { + ToastUtils.show(getString(R.string.example_there_s_no_more_data)) + } + if (currentPage == 1) { + exampleEmpty?.visibility = View.VISIBLE + } + } +// avi?.stop() + srRecommend?.finishRefresh() + } + } + }) + +// ExampleRecommendRequest.getVideoDetails(current_page, page_size, revolution) +// .observeForever { result -> +// recommendLiveData.value = result.getOrNull() +// } + } + + fun createHistory(videoId: Int, shortPlayId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", videoId.toString()) + sMap.put("video_id", shortPlayId.toString()) + EasyHttp.post(this) + .api(CreateHistoryApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + + override fun onHttpStart(api: IRequestApi) { + } + + override fun onHttpSuccess(result: HttpData) { + } + }) + } + + fun doCollect(shortPlayId: Int, videoId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", shortPlayId.toString()) + sMap.put("video_id", videoId.toString()) + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.DoCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + val imageView = + detailPlayerView()?.findViewById(R.id.example_iv_collection_controller) + val textview = + detailPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) + imageView?.setImageResource(R.mipmap.iv_example_collection_h) + shortVideo?.collect_total = shortVideo?.collect_total?.plus(1)!! + shortVideo?.is_collect = true + textview?.text = formatNumber(shortVideo?.collect_total!!) + textview?.setTextColor(resources.getColor(R.color.example_color_F56490)) + exampleRecommendAdapter?.shortVideo = shortVideo + EventBus.getDefault().post( + BaseEventBus( + MsConstants.Constants_Episodes_Series_DataExample, + shortVideo + ) + ) + if (TranslatesUtils.translates() != null) { + toast(TranslatesUtils.translates()?.success.toString()) + } + } else { + if (TranslatesUtils.translates() != null) { + toast(TranslatesUtils.translates()?.network_error.toString()) + } else { + toast(getString(R.string.example_service_exception_please_try_again)) + } + } + } + } + }) + } + + fun doCancelCollect(shortPlayId: Int, videoId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", shortPlayId.toString()) + sMap.put("video_id", videoId.toString()) + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.CancelCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + val imageView = + detailPlayerView()?.findViewById(R.id.example_iv_collection_controller) + val textview = + detailPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) + imageView?.setImageResource(R.mipmap.iv_example_collection_n) + shortVideo?.collect_total = shortVideo?.collect_total?.minus(1)!! + shortVideo?.is_collect = false + textview?.text = formatNumber(shortVideo?.collect_total!!) + textview?.setTextColor(resources.getColor(R.color.white)) + exampleRecommendAdapter?.shortVideo = shortVideo + EventBus.getDefault().post( + BaseEventBus( + MsConstants.Constants_Episodes_Series_DataExample, + shortVideo + ) + ) + if (TranslatesUtils.translates() != null) { + toast(TranslatesUtils.translates()?.success.toString()) + } + } else { + if (TranslatesUtils.translates() != null) { + toast(TranslatesUtils.translates()?.network_error.toString()) + } else { + toast(getString(R.string.example_service_exception_please_try_again)) + } + } + } + } + }) + } + + + private fun detailPlayerView(): VideoPlayerView? { + try { + val recyclerView = viewPagerExampleRecommend?.getChildAt(0) as RecyclerView + return recyclerView.layoutManager?.findViewByPosition(currentPosition) as VideoPlayerView? + } catch (e: Exception) { + e.printStackTrace() + } + return null + } + + override fun onDestroy() { + viewPagerExampleRecommend?.post { + detailPlayerView()?.stop() + detailPlayerView()?.release() + } + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: String) { + if (MsConstants.Constants_RecommendPlayerView_DramaSeriesExample == event) { + if (exampleRecommendAdapter?.items?.isNotEmpty() == true) { + val exampleSeriesDialogFragment = ExampleSeriesDialogFragment() + val bundle = Bundle() + bundle.putInt( + Constants_Episodes_Series_Data_currentPositionExample, + currentPosition + ) + bundle.putParcelable( + MsConstants.Constants_Episodes_Series_DataExample, + shortVideo + ) + bundle.putParcelableArrayList( + MsConstants.Constants_Episodes_Series_Data_ListExample, + exampleRecommendAdapter?.items?.let { ArrayList(it) } + ) + exampleSeriesDialogFragment.seriesCallBack = this + exampleSeriesDialogFragment.arguments = bundle + exampleSeriesDialogFragment.show( + supportFragmentManager, + "ExampleSeriesDialogFragment" + ) + } + } + if (MsConstants.Constants_DetailPlayerView_PLAYER_STATUS_FINISHExample == event) { + if (viewPagerExampleRecommend?.currentItem == exampleRecommendAdapter?.items?.size?.minus( + 1 + ) + ) { +// exampleHomeViewModel.getDetailsRecommand() + viewPagerExampleRecommend?.post { + detailPlayerView()?.pause() + detailPlayerView()?.release() + viewPagerExampleRecommend?.visibility = View.GONE + } + } + currentPosition.plus(1) + .let { + exampleRecommendAdapter?.items?.get(it)?.let { it1 -> + if (it1.coins > 0) { + if (MsMMKVUtils.getMMKV().getString( + CONSTANTS_short_play_id, + "" + ) == shortVideoId.toString() + ) { + } + } + } + detailPlayerView()?.stop() + viewPagerExampleRecommend?.currentItem = it + } + } + + if (CONSTANTS_quality_refresh == event) { + revolution = + MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0) + .toString() + qualityRefresh = true + } + + if (MsConstants.Constants_RecommendPlayerView_CLOSEExample == event) { + finish() + } + if (CONSTANTS_quality == event) { + startActivity(SearchActivity::class.java) + } + + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: BaseEventBus) { +// if (MsConstants.Constants_Episodes_Series_DataExample == event.code) { +// if (exampleRecommendAdapter?.items?.get(currentPosition)?.name == event.data.name) { +// val imageView = +// detailPlayerView()?.findViewById(R.id.example_iv_collection_controller) +// val textview = +// detailPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) +// imageView?.setImageResource(if (event.data.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) +// exampleRecommendAdapter?.items?.get(currentPosition)?.collect_total = +// event.data.collect_total +// exampleRecommendAdapter?.items?.get(currentPosition)?.is_collect = +// event.data.is_collect +// textview?.text = formatNumber(event.data.collect_total) +// } +// } + } + +// override fun collection(dataRes: ExampleRecommendDataRes.Data) { +// singleClick { +// data = dataRes +// if (dataRes.is_collect) { +// val exampleUnFavoriteDialog = ExampleUnFavoriteDialog(this) +// val tvThinkAgain = +// exampleUnFavoriteDialog.findViewById(R.id.example_tv_think_again) +// val tvUnfavorite = +// exampleUnFavoriteDialog.findViewById(R.id.example_tv_unfavorite) +// val tvTitle = +// exampleUnFavoriteDialog.findViewById(R.id.example_tv_title) +// val tvContent = +// exampleUnFavoriteDialog.findViewById(R.id.example_tv_content) +// if (TranslatesUtils.translates() != null) { +// tvThinkAgain.text = TranslatesUtils.translates()?.try_again +// tvUnfavorite.text = TranslatesUtils.translates()?.collection +// tvTitle.text = TranslatesUtils.translates()?.collection +// tvContent.text = TranslatesUtils.translates()?.not_collect_warning +// } +// tvThinkAgain.setOnClickListener { exampleUnFavoriteDialog.dismiss() } +// tvUnfavorite.setOnClickListener { +// dataRes.video_info?.short_play_id?.let { +// dataRes.video_info.short_play_video_id.let { it1 -> +// doCancelCollect( +// it, it1 +// ) +// } +// } +// exampleUnFavoriteDialog.dismiss() +// } +// exampleUnFavoriteDialog.show() +// } else { +// dataRes.video_info?.short_play_id?.let { +// dataRes.video_info.short_play_video_id.let { it1 -> +// doCollect( +// it, it1 +// ) +// } +// } +// } +// } +// } + + override fun collection(episode: VideoDetailsApi.Bean.Episode) { + singleClick { + if (!episode.is_lock) { + if (shortVideo?.is_collect == true) { + val exampleUnFavoriteDialog = ExampleUnFavoriteDialog(this) + val tvThinkAgain = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_think_again) + val tvUnfavorite = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_unfavorite) + val tvTitle = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_title) + val tvContent = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_content) + if (TranslatesUtils.translates() != null) { + tvThinkAgain.text = TranslatesUtils.translates()?.try_again + tvUnfavorite.text = TranslatesUtils.translates()?.collection + tvTitle.text = TranslatesUtils.translates()?.collection + tvContent.text = TranslatesUtils.translates()?.not_collect_warning + } + tvThinkAgain.setOnClickListener { exampleUnFavoriteDialog.dismiss() } + tvUnfavorite.setOnClickListener { + episode.short_play_id.let { + episode.short_play_video_id.let { it1 -> + doCancelCollect( + it, it1 + ) + } + } + exampleUnFavoriteDialog.dismiss() + } + exampleUnFavoriteDialog.show() + } else { + episode.short_play_id.let { + episode.short_play_video_id.let { it1 -> + doCollect( + it, it1 + ) + } + } + } + } + } + } + + override fun chooseSeries(episode: VideoDetailsApi.Bean.Episode) { + postDelayed({ detailPlayerView()?.pause() }, 300) + episode.episode.minus(1) + .let { + viewPagerExampleRecommend?.currentItem = it + } + + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeBannerAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeBannerAdapter.kt new file mode 100644 index 0000000..72e1213 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeBannerAdapter.kt @@ -0,0 +1,62 @@ +package com.localee.mireo.app.ui.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.http.api.RecommendBean +import com.youth.banner.adapter.BannerAdapter + +class HomeBannerAdapter(mDatas: List) : + BannerAdapter(mDatas) { + + override fun onCreateHolder(parent: ViewGroup, viewType: Int): BannerViewHolder { + val view: View = + LayoutInflater.from(parent.context).inflate(R.layout.home_banner_item, parent, false) + + return BannerViewHolder(view) + } + + override fun onBindView( + holder: BannerViewHolder, + data: RecommendBean, + position: Int, + size: Int + ) { + Glide.with(AppApplication.instance) + .load(data.image_url) + .into(holder.imageView) + + holder.tvName.setText(data.name) + holder.tvDescription.setText(data.description) + + holder.tvAdd.setOnClickListener { + data.let { it1 -> homeBannerOnClick?.bannerAdd(it1) } + } + holder.tvPlay.setOnClickListener { + data.let { it1 -> homeBannerOnClick?.bannerPlay(it1) } + } + + } + + inner class BannerViewHolder(view: View) : RecyclerView.ViewHolder(view) { + val imageView: ImageView = view.findViewById(R.id.iv_img) + val tvName: TextView = view.findViewById(R.id.tv_name) + val tvDescription: TextView = view.findViewById(R.id.tv_description) + val tvAdd: TextView = view.findViewById(R.id.tv_add) + val tvPlay: TextView = view.findViewById(R.id.tv_play) + } + + var homeBannerOnClick: HomeBannerOnClick? = null + + interface HomeBannerOnClick { + fun bannerAdd(dataRes: RecommendBean) + fun bannerPlay(dataRes: RecommendBean) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCategoriesTabAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCategoriesTabAdapter.kt new file mode 100644 index 0000000..7dff21d --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCategoriesTabAdapter.kt @@ -0,0 +1,36 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemListTabBinding +import com.localee.mireo.app.http.api.RecommendBean + +class HomeCategoriesTabAdapter : BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemListTabBinding = ItemListTabBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: RecommendBean?) { + if (null != item) { + holder.binding.tvName.text = item.name + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCriticallyAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCriticallyAdapter.kt new file mode 100644 index 0000000..1ba21aa --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeCriticallyAdapter.kt @@ -0,0 +1,52 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemHomeCriticallyBinding +import com.localee.mireo.app.http.api.RecommendBean +import com.localee.mireo.app.utils.formatNumber + +class HomeCriticallyAdapter : + BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemHomeCriticallyBinding = ItemHomeCriticallyBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder( + holder: VH, + position: Int, + item: RecommendBean? + ) { + if (null != item) { + holder.binding.tvName.text = item.name + holder.binding.tvDescription.text = item.description + holder.binding.tvScore.text = item.all_coins + holder.binding.tvGood.text = item.watch_total?.let { formatNumber(it) } + if (item.category.isEmpty()) { + holder.binding.tvFavor.visibility = View.GONE + } else { + holder.binding.tvFavor.visibility = View.VISIBLE + holder.binding.tvFavor.text = item.category[0] + } + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeGenresAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeGenresAdapter.kt new file mode 100644 index 0000000..fda849c --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeGenresAdapter.kt @@ -0,0 +1,42 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter4.BaseQuickAdapter +import com.hjq.shape.view.ShapeTextView +import com.localee.mireo.app.databinding.ItemHomeGenresBinding + +class HomeGenresAdapter(var id: Int) : BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemHomeGenresBinding = ItemHomeGenresBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: String?) { + if (null != item) { + holder.binding.tvType.text = item + val text: ShapeTextView = holder.binding.tvType + + if (position == id) { + text.getShapeDrawableBuilder().setSolidColor(0xFFF8726D.toInt()) + .setShadowColor(0xFFF8726D.toInt()) + .intoBackground(); + } else { + text.getShapeDrawableBuilder().setSolidColor(0x00000000.toInt()) + .setShadowColor(0xFFF8726D.toInt()) + .intoBackground(); + } + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeShortAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeShortAdapter.kt new file mode 100644 index 0000000..70abf67 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeShortAdapter.kt @@ -0,0 +1,37 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemHomeShortBinding +import com.localee.mireo.app.http.api.RecommendBean + +class HomeShortAdapter : BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemHomeShortBinding = ItemHomeShortBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: RecommendBean?) { + if (null != item) { + holder.binding.tvName.text = item.name + holder.binding.tvDescription.text = item.description + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeTopAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeTopAdapter.kt new file mode 100644 index 0000000..f800d1a --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/HomeTopAdapter.kt @@ -0,0 +1,54 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.ViewGroup +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.hjq.shape.view.ShapeTextView +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.http.api.RecommendBean + +class HomeTopAdapter(var type: Int) : + BaseQuickAdapter() { + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.item_home_top, parent) + } + + override fun onBindViewHolder( + holder: QuickViewHolder, + position: Int, + item: RecommendBean? + ) { + Glide.with(AppApplication.instance) + .load(item?.image_url) + .into(holder.getView(R.id.iv_content)) + + val text: ShapeTextView = holder.getView(R.id.tv_hot) + + when (type) { + 1 -> { + text.setText("HOT") + text.getShapeDrawableBuilder().setSolidColor(0xFFFF1E63.toInt()) + .intoBackground(); + } + + 2 -> { + text.setText("NEW") + text.getShapeDrawableBuilder().setSolidColor(0xFF564FC0.toInt()) + .intoBackground(); + } + + 3 -> { + + } + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/LostTabAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/LostTabAdapter.kt new file mode 100644 index 0000000..7524e70 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/LostTabAdapter.kt @@ -0,0 +1,95 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemListTabBinding +import com.localee.mireo.app.http.api.HistoryBean + +class LostTabAdapter(var tabPosition: Int) : + BaseQuickAdapter() { + + var type = 0 + var selectEdit = false + + class VH( + parent: ViewGroup, + val binding: ItemListTabBinding = ItemListTabBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: HistoryBean.Data?) { + if (null != item) { + holder.binding.tvName.text = item.name + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + holder.binding.tvName2.text = item.name + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent2) + + if (type == 0) { + holder.binding.clOne.visibility = View.VISIBLE + holder.binding.rlTwo.visibility = View.GONE + } else { + holder.binding.clOne.visibility = View.GONE + holder.binding.rlTwo.visibility = View.VISIBLE + } + + if (selectEdit) { + holder.binding.cbOne.visibility = View.VISIBLE + holder.binding.cbTwo.visibility = View.VISIBLE + } else { + holder.binding.cbOne.visibility = View.GONE + holder.binding.cbTwo.visibility = View.GONE + } + + if (item.is_check) { + holder.binding.cbOne.isChecked = true + holder.binding.cbTwo.isChecked = true + } else { + holder.binding.cbOne.isChecked = false + holder.binding.cbTwo.isChecked = false + + } + + when (tabPosition) { + 0 -> { + if (item.categoryList?.isNotEmpty() == true) { + holder.binding.tvFavor.text = item.categoryList.get(0).name + holder.binding.tvFavor.visibility = View.VISIBLE + if (item.categoryList.size > 1) { + holder.binding.tvLove.text = item.categoryList.get(1).name + holder.binding.tvLove.visibility = View.VISIBLE + } else { + holder.binding.tvLove.visibility = View.GONE + } + } else { + holder.binding.tvFavor.visibility = View.GONE + } + } + + 1 -> { + holder.binding.tvFavor.text = + "EP" + item.current_episode + " / EP" + item.episode_total + holder.binding.tvFavor.visibility = View.VISIBLE + holder.binding.tvLove.visibility = View.GONE + } + } + + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/MeHistoryAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/MeHistoryAdapter.kt new file mode 100644 index 0000000..de6a8dc --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/MeHistoryAdapter.kt @@ -0,0 +1,38 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemMeHistoryBinding +import com.localee.mireo.app.http.api.HistoryBean + +class MeHistoryAdapter() : + BaseQuickAdapter() { + + var type = 0 + var selectEdit = false + + class VH( + parent: ViewGroup, + val binding: ItemMeHistoryBinding = ItemMeHistoryBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: HistoryBean.Data?) { + if (null != item) { + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/NavigationAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/NavigationAdapter.kt new file mode 100644 index 0000000..8bc9f84 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/NavigationAdapter.kt @@ -0,0 +1,89 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.* +import android.graphics.drawable.Drawable +import android.view.* +import android.widget.* +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.hjq.base.BaseAdapter +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppAdapter + +class NavigationAdapter constructor(context: Context) : + AppAdapter(context), BaseAdapter.OnItemClickListener { + + private var selectedPosition: Int = 0 + + private var listener: OnNavigationListener? = null + + init { + setOnItemClickListener(this) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + return ViewHolder() + } + + override fun generateDefaultLayoutManager(context: Context): RecyclerView.LayoutManager { + return GridLayoutManager(context, getCount(), RecyclerView.VERTICAL, false) + } + + fun getSelectedPosition(): Int { + return selectedPosition + } + + fun setSelectedPosition(position: Int) { + selectedPosition = position + notifyDataSetChanged() + } + + fun setOnNavigationListener(listener: OnNavigationListener?) { + this.listener = listener + } + + override fun onItemClick(recyclerView: RecyclerView?, itemView: View?, position: Int) { + if (selectedPosition == position) { + return + } + if (listener == null) { + selectedPosition = position + notifyDataSetChanged() + return + } + if (listener!!.onNavigationItemSelected(position)) { + selectedPosition = position + notifyDataSetChanged() + } + } + + inner class ViewHolder : AppViewHolder(R.layout.home_navigation_item) { + + private val iconView: ImageView? by lazy { findViewById(R.id.iv_home_navigation_icon) } + private val titleView: TextView? by lazy { findViewById(R.id.tv_home_navigation_title) } + + override fun onBindView(position: Int) { + getItem(position).apply { + iconView?.setImageDrawable(getDrawable()) + titleView?.text = getText() + iconView?.isSelected = (selectedPosition == position) + titleView?.isSelected = (selectedPosition == position) + } + } + } + + class MenuItem constructor(private val text: String?, private val drawable: Drawable?) { + + fun getText(): String? { + return text + } + + fun getDrawable(): Drawable? { + return drawable + } + } + + interface OnNavigationListener { + fun onNavigationItemSelected(position: Int): Boolean + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchHotAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchHotAdapter.kt new file mode 100644 index 0000000..a4fcb7f --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchHotAdapter.kt @@ -0,0 +1,51 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.app.AppApplication +import com.localee.mireo.app.databinding.ItemSearchHotBinding +import com.localee.mireo.app.http.api.SearchHotApi + +class SearchHotAdapter : BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemSearchHotBinding = ItemSearchHotBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: SearchHotApi.Bean.Data?) { + if (null != item) { + holder.binding.tvName.text = item.name + holder.binding.tvDescription.text = item.description + // 设置item数据 + Glide.with(AppApplication.instance) + .load(item.image_url) + .into(holder.binding.ivContent) + + if (item.categoryList?.isNotEmpty() == true) { + holder.binding.tvFavor.text = item.categoryList.get(0).name + holder.binding.tvFavor.visibility = View.VISIBLE + if (item.categoryList.size > 1) { + holder.binding.tvLove.text = item.categoryList.get(1).name + holder.binding.tvLove.visibility = View.VISIBLE + } else { + holder.binding.tvLove.visibility = View.GONE + } + } else { + holder.binding.tvFavor.visibility = View.GONE + } + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchSearchAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchSearchAdapter.kt new file mode 100644 index 0000000..ba5edd7 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/SearchSearchAdapter.kt @@ -0,0 +1,31 @@ +package com.localee.mireo.app.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter4.BaseQuickAdapter +import com.localee.mireo.app.databinding.ItemSearchSearchBinding +import com.localee.mireo.app.http.api.SearchSearchApi + +class SearchSearchAdapter : BaseQuickAdapter() { + + class VH( + parent: ViewGroup, + val binding: ItemSearchSearchBinding = ItemSearchSearchBinding.inflate( + LayoutInflater.from(parent.context), parent, false + ), + ) : RecyclerView.ViewHolder(binding.root) + + override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { + return VH(parent) + } + + override fun onBindViewHolder(holder: VH, position: Int, item: SearchSearchApi.Bean.Data?) { + if (null != item) { + holder.binding.tvKey.text = item.name + + } + + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/TabAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/TabAdapter.kt new file mode 100644 index 0000000..af05b81 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/adapter/TabAdapter.kt @@ -0,0 +1,223 @@ +package com.localee.mireo.app.ui.adapter + +import android.animation.ValueAnimator +import android.animation.ValueAnimator.AnimatorUpdateListener +import android.content.Context +import android.util.TypedValue +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver +import com.hjq.base.BaseAdapter +import com.hjq.shape.view.ShapeTextView +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppAdapter + +class TabAdapter @JvmOverloads constructor( + context: Context, + private val tabMode: Int = TAB_MODE_DESIGN, + private val fixed: Boolean = true +) : AppAdapter(context), BaseAdapter.OnItemClickListener { + + companion object { + const val TAB_MODE_DESIGN: Int = 1 + const val TAB_MODE_SLIDING: Int = 2 + } + + private var selectedPosition: Int = 0 + + private var listener: OnTabListener? = null + + init { + setOnItemClickListener(this) + registerAdapterDataObserver(TabAdapterDataObserver()) + } + + override fun getItemViewType(position: Int): Int { + return tabMode + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppViewHolder { + return when (viewType) { + TAB_MODE_DESIGN -> DesignViewHolder() + TAB_MODE_SLIDING -> SlidingViewHolder() + else -> throw IllegalArgumentException("are you ok?") + } + } + + override fun generateDefaultLayoutManager(context: Context): RecyclerView.LayoutManager { + return if (fixed) { + var count: Int = getCount() + if (count < 1) { + count = 1 + } + GridLayoutManager(context, count, RecyclerView.VERTICAL, false) + } else { + LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) + } + } + + override fun onAttachedToRecyclerView(recyclerView: RecyclerView) { + super.onAttachedToRecyclerView(recyclerView) + recyclerView.itemAnimator = null + } + + fun getSelectedPosition(): Int { + return selectedPosition + } + + fun setSelectedPosition(position: Int) { + if (selectedPosition == position) { + return + } + notifyItemChanged(selectedPosition) + selectedPosition = position + notifyItemChanged(position) + } + + fun setOnTabListener(listener: OnTabListener?) { + this.listener = listener + } + + override fun onItemClick(recyclerView: RecyclerView?, itemView: View?, position: Int) { + if (selectedPosition == position) { + return + } + if (listener == null) { + selectedPosition = position + notifyDataSetChanged() + return + } + if (listener!!.onTabSelected(recyclerView, position)) { + selectedPosition = position + notifyDataSetChanged() + } + } + + inner class DesignViewHolder : AppViewHolder(R.layout.tab_item_design) { + + private val titleView: TextView? by lazy { findViewById(R.id.tv_tab_design_title) } + private val lineView: View? by lazy { findViewById(R.id.v_tab_design_line) } + + init { + if (fixed) { + val itemView: View = getItemView() + val layoutParams: ViewGroup.LayoutParams = itemView.layoutParams + layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + itemView.layoutParams = layoutParams + } + } + + override fun onBindView(position: Int) { + titleView?.text = getItem(position) + titleView?.isSelected = (selectedPosition == position) + lineView?.visibility = + if (selectedPosition == position) View.VISIBLE else View.INVISIBLE + } + } + + inner class SlidingViewHolder : AppViewHolder(R.layout.tab_item_sliding), + AnimatorUpdateListener { + + private val titleView: ShapeTextView? by lazy { findViewById(R.id.tv_tab_sliding_title) } + + private val mDefaultTextSize: Int by lazy { + getResources().getDimension(R.dimen.sp_12).toInt() + } + private val mSelectedTextSize: Int by lazy { + getResources().getDimension(R.dimen.sp_12).toInt() + } + + init { + titleView?.setTextSize(TypedValue.COMPLEX_UNIT_PX, mDefaultTextSize.toFloat()) + if (fixed) { + val itemView: View = getItemView() + val layoutParams: ViewGroup.LayoutParams = itemView.layoutParams + layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + itemView.layoutParams = layoutParams + } + } + + override fun onBindView(position: Int) { + titleView?.let { + it.text = getItem(position) + it.isSelected = (selectedPosition == position) + val textSize: Int = it.textSize.toInt() + if (selectedPosition == position) { + it.shapeDrawableBuilder.setSolidGradientColors( + 0xFFF24C92.toInt(), + 0xFFF8726D.toInt() + ).setStrokeSize(0) + .intoBackground(); + if (textSize != mSelectedTextSize) { + startAnimator(mDefaultTextSize, mSelectedTextSize) + } + return + } else { + it.shapeDrawableBuilder.setSolidGradientColors( + 0x00000000.toInt(), + 0x00000000.toInt() + ).setStrokeSize(getResources().getDimension(R.dimen.dp_1).toInt()) + .setStrokeColor(0xFFF56490.toInt()) + .intoBackground(); + } + if (textSize != mDefaultTextSize) { + startAnimator(mSelectedTextSize, mDefaultTextSize) + } + } + } + + private fun startAnimator(start: Int, end: Int) { + val valueAnimator: ValueAnimator = ValueAnimator.ofInt(start, end) + valueAnimator.addUpdateListener(this) + valueAnimator.duration = 100 + valueAnimator.start() + } + + override fun onAnimationUpdate(animation: ValueAnimator) { + titleView?.setTextSize( + TypedValue.COMPLEX_UNIT_PX, + (animation.animatedValue as Int).toFloat() + ) + } + } + + private inner class TabAdapterDataObserver : AdapterDataObserver() { + + override fun onChanged() { + refreshLayoutManager() + } + + override fun onItemRangeChanged(positionStart: Int, itemCount: Int, payload: Any?) {} + + override fun onItemRangeChanged(positionStart: Int, itemCount: Int) {} + + override fun onItemRangeInserted(positionStart: Int, itemCount: Int) { + refreshLayoutManager() + } + + override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) { + refreshLayoutManager() + if (getSelectedPosition() > positionStart - itemCount) { + setSelectedPosition(positionStart - itemCount) + } + } + + override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) {} + + private fun refreshLayoutManager() { + if (!fixed) { + return + } + getRecyclerView()?.layoutManager = generateDefaultLayoutManager(getContext()) + } + } + + interface OnTabListener { + + fun onTabSelected(recyclerView: RecyclerView?, position: Int): Boolean + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/CommonDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/CommonDialog.kt new file mode 100644 index 0000000..384f128 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/CommonDialog.kt @@ -0,0 +1,80 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.* +import android.view.* +import android.widget.TextView +import androidx.annotation.LayoutRes +import androidx.annotation.StringRes +import com.hjq.base.BaseDialog +import com.hjq.base.action.AnimAction +import com.localee.mireo.app.R + +class CommonDialog { + + @Suppress("UNCHECKED_CAST", "LeakingThis") + open class Builder>(context: Context) : BaseDialog.Builder(context) { + + private var autoDismiss = true + + private val containerLayout: ViewGroup? by lazy { findViewById(R.id.ll_ui_container) } + private val titleView: TextView? by lazy { findViewById(R.id.tv_ui_title) } + private val cancelView: TextView? by lazy { findViewById(R.id.tv_ui_cancel) } + private val lineView: View? by lazy { findViewById(R.id.v_ui_line) } + private val confirmView: TextView? by lazy { findViewById(R.id.tv_ui_confirm) } + + init { + setContentView(R.layout.ui_dialog) + setAnimStyle(AnimAction.ANIM_IOS) + setGravity(Gravity.CENTER) + setOnClickListener(cancelView, confirmView) + } + + fun setCustomView(@LayoutRes id: Int): B { + return setCustomView(LayoutInflater.from(getContext()).inflate(id, containerLayout, false)) + } + + fun setCustomView(view: View?): B { + containerLayout?.addView(view, 1) + return this as B + } + + fun setTitle(@StringRes id: Int): B { + return setTitle(getString(id)) + } + + fun setTitle(text: CharSequence?): B { + titleView?.text = text + return this as B + } + + fun setCancel(@StringRes id: Int): B { + return setCancel(getString(id)) + } + + fun setCancel(text: CharSequence?): B { + cancelView?.text = text + lineView?.visibility = if (text == null || "" == text.toString()) View.GONE else View.VISIBLE + return this as B + } + + fun setConfirm(@StringRes id: Int): B { + return setConfirm(getString(id)) + } + + fun setConfirm(text: CharSequence?): B { + confirmView?.text = text + return this as B + } + + fun setAutoDismiss(dismiss: Boolean): B { + autoDismiss = dismiss + return this as B + } + + fun autoDismiss() { + if (autoDismiss) { + dismiss() + } + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/InputDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/InputDialog.kt new file mode 100644 index 0000000..d798477 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/InputDialog.kt @@ -0,0 +1,101 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.Context +import android.view.KeyEvent +import android.view.View +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import android.widget.TextView.OnEditorActionListener +import androidx.annotation.StringRes +import com.hjq.base.BaseDialog +import com.localee.mireo.app.R +import com.localee.mireo.app.aop.SingleClick +import com.hjq.widget.view.RegexEditText + +class InputDialog { + + class Builder(context: Context) : CommonDialog.Builder(context), + BaseDialog.OnShowListener, OnEditorActionListener { + + private val inputView: RegexEditText? by lazy { findViewById(R.id.tv_input_message) } + + private var listener: OnListener? = null + + init { + setCustomView(R.layout.input_dialog) + inputView?.setOnEditorActionListener(this) + addOnShowListener(this) + } + + fun setHint(@StringRes id: Int): Builder = apply { + setHint(getString(id)) + } + + fun setHint(text: CharSequence?): Builder = apply { + inputView?.hint = text + } + + fun setContent(@StringRes id: Int): Builder = apply { + setContent(getString(id)) + } + + fun setContent(text: CharSequence?): Builder = apply { + inputView?.setText(text) + val editable = inputView?.text ?: return@apply + val index = editable.length + if (index <= 0) { + return@apply + } + inputView?.requestFocus() + inputView?.setSelection(index) + } + + fun setInputRegex(regex: String?): Builder = apply { + inputView?.setInputRegex(regex) + } + + fun setListener(listener: OnListener?): Builder = apply { + this.listener = listener + } + + /** + * [BaseDialog.OnShowListener] + */ + override fun onShow(dialog: BaseDialog?) { + postDelayed({ showKeyboard(inputView) }, 500) + } + + @SingleClick + override fun onClick(view: View) { + when (view.id) { + R.id.tv_ui_confirm -> { + autoDismiss() + listener?.onConfirm(getDialog(), inputView?.text?.toString() ?: "") + } + R.id.tv_ui_cancel -> { + autoDismiss() + listener?.onCancel(getDialog()) + } + } + } + + /** + * [TextView.OnEditorActionListener] + */ + override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean { + if (actionId == EditorInfo.IME_ACTION_DONE) { + findViewById(R.id.tv_ui_confirm)?.let { + // 模拟点击确认按钮 + onClick(it) + } + return true + } + return false + } + } + + interface OnListener { + fun onConfirm(dialog: BaseDialog?, content: String) + fun onCancel(dialog: BaseDialog?) {} + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/MessageDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/MessageDialog.kt new file mode 100644 index 0000000..58d1ac4 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/MessageDialog.kt @@ -0,0 +1,63 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.Context +import android.view.View +import android.widget.TextView +import androidx.annotation.StringRes +import com.hjq.base.BaseDialog +import com.localee.mireo.app.R +import com.localee.mireo.app.aop.SingleClick + +class MessageDialog { + + class Builder constructor(context: Context) : CommonDialog.Builder(context) { + + private val messageView: TextView? by lazy { findViewById(R.id.tv_message_message) } + + private var listener: OnListener? = null + + init { + setCustomView(R.layout.message_dialog) + } + + fun setMessage(@StringRes id: Int): Builder = apply { + setMessage(getString(id)) + } + + fun setMessage(text: CharSequence?): Builder = apply { + messageView?.text = text + } + + fun setListener(listener: OnListener?): Builder = apply { + this.listener = listener + } + + override fun create(): BaseDialog { + if (("" == messageView?.text.toString())) { + throw IllegalArgumentException("Dialog message not null") + } + return super.create() + } + + @SingleClick + override fun onClick(view: View) { + when (view.id) { + R.id.tv_ui_confirm -> { + autoDismiss() + listener?.onConfirm(getDialog()) + } + R.id.tv_ui_cancel -> { + autoDismiss() + listener?.onCancel(getDialog()) + } + } + } + } + + interface OnListener { + + fun onConfirm(dialog: BaseDialog?) + + fun onCancel(dialog: BaseDialog?) {} + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/TipsDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/TipsDialog.kt new file mode 100644 index 0000000..d23640f --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/TipsDialog.kt @@ -0,0 +1,70 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.Context +import android.text.TextUtils +import android.widget.ImageView +import android.widget.TextView +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import com.hjq.base.BaseDialog +import com.hjq.base.action.AnimAction +import com.localee.mireo.app.R + +class TipsDialog { + + companion object { + const val ICON_FINISH: Int = R.drawable.tips_finish_ic + const val ICON_ERROR: Int = R.drawable.tips_error_ic + const val ICON_WARNING: Int = R.drawable.tips_warning_ic + } + + class Builder(context: Context) : BaseDialog.Builder(context), + Runnable, BaseDialog.OnShowListener { + + private val messageView: TextView? by lazy { findViewById(R.id.tv_tips_message) } + private val iconView: ImageView? by lazy { findViewById(R.id.iv_tips_icon) } + + private var duration = 2000 + + init { + setContentView(R.layout.tips_dialog) + setAnimStyle(AnimAction.ANIM_TOAST) + setBackgroundDimEnabled(false) + setCancelable(false) + addOnShowListener(this) + } + + fun setIcon(@DrawableRes id: Int): Builder = apply { + iconView?.setImageResource(id) + } + + fun setDuration(duration: Int): Builder = apply { + this.duration = duration + } + + fun setMessage(@StringRes id: Int): Builder = apply { + setMessage(getString(id)) + } + + fun setMessage(text: CharSequence?): Builder = apply { + messageView?.text = text + } + + override fun create(): BaseDialog { + requireNotNull(iconView?.drawable) { "The display type must be specified" } + require(!TextUtils.isEmpty(messageView?.text.toString())) { "Dialog message not null" } + return super.create() + } + + override fun onShow(dialog: BaseDialog?) { + postDelayed(this, duration.toLong()) + } + + override fun run() { + if (!isShowing()) { + return + } + dismiss() + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/WaitDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/WaitDialog.kt new file mode 100644 index 0000000..7d8069d --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/dialog/WaitDialog.kt @@ -0,0 +1,33 @@ +package com.localee.mireo.app.ui.dialog + +import android.content.* +import android.view.* +import android.widget.TextView +import androidx.annotation.StringRes +import com.hjq.base.BaseDialog +import com.hjq.base.action.AnimAction +import com.localee.mireo.app.R + +class WaitDialog { + + class Builder(context: Context) : BaseDialog.Builder(context) { + + private val messageView: TextView? by lazy { findViewById(R.id.tv_wait_message) } + + init { + setContentView(R.layout.wait_dialog) + setAnimStyle(AnimAction.ANIM_TOAST) + setBackgroundDimEnabled(false) + setCancelable(false) + } + + fun setMessage(@StringRes id: Int): Builder = apply { + setMessage(getString(id)) + } + + fun setMessage(text: CharSequence?): Builder = apply { + messageView?.text = text + messageView?.visibility = if (text == null) View.GONE else View.VISIBLE + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/BrowserFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/BrowserFragment.kt new file mode 100644 index 0000000..a2ed487 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/BrowserFragment.kt @@ -0,0 +1,104 @@ +package com.localee.mireo.app.ui.fragment + +import android.graphics.Bitmap +import android.net.Uri +import android.os.Bundle +import android.webkit.WebView +import com.localee.mireo.app.R +import com.localee.mireo.app.action.StatusAction +import com.localee.mireo.app.aop.CheckNet +import com.localee.mireo.app.aop.Log +import com.localee.mireo.app.app.AppActivity +import com.localee.mireo.app.app.AppFragment +import com.localee.mireo.app.ui.activity.BrowserActivity +import com.localee.mireo.app.widget.BrowserView +import com.localee.mireo.app.widget.BrowserView.BrowserChromeClient +import com.localee.mireo.app.widget.BrowserView.BrowserViewClient +import com.localee.mireo.app.widget.StatusLayout +import com.localee.mireo.app.widget.StatusLayout.OnRetryListener +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshListener +import java.util.* + +class BrowserFragment : AppFragment(), StatusAction, OnRefreshListener { + + companion object { + + private const val INTENT_KEY_IN_URL: String = "url" + + @Log + fun newInstance(url: String): BrowserFragment { + val fragment = BrowserFragment() + val bundle = Bundle() + bundle.putString(INTENT_KEY_IN_URL, url) + fragment.arguments = bundle + return fragment + } + } + + private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_browser_hint) } + private val refreshLayout: SmartRefreshLayout? by lazy { findViewById(R.id.sl_browser_refresh) } + private val browserView: BrowserView? by lazy { findViewById(R.id.wv_browser_view) } + + override fun getLayoutId(): Int { + return R.layout.browser_fragment + } + + override fun initView() { + browserView?.setLifecycleOwner(this) + refreshLayout?.setOnRefreshListener(this) + } + + override fun initData() { + browserView?.apply { + setBrowserViewClient(AppBrowserViewClient()) + setBrowserChromeClient(BrowserChromeClient(this)) + loadUrl(getString(INTENT_KEY_IN_URL)!!) + } + showLoading() + } + + override fun getStatusLayout(): StatusLayout { + return hintLayout!! + } + + @CheckNet + private fun reload() { + browserView?.reload() + } + + /** + * [OnRefreshListener] + */ + override fun onRefresh(refreshLayout: RefreshLayout) { + reload() + } + + private inner class AppBrowserViewClient : BrowserViewClient() { + override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) { + post { + showError(object : OnRetryListener { + override fun onRetry(layout: StatusLayout) { + reload() + } + }) + } + } + + override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {} + + override fun onPageFinished(view: WebView, url: String) { + refreshLayout?.finishRefresh() + showComplete() + } + + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + val scheme: String = Uri.parse(url).scheme ?: return true + when (scheme.lowercase(Locale.getDefault())) { + "http", "https" -> BrowserActivity.start(getAttachActivity()!!, url) + } + return true + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt new file mode 100644 index 0000000..4b999e7 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ExploreFragment.kt @@ -0,0 +1,502 @@ +package com.localee.mireo.app.ui.fragment + +import android.annotation.SuppressLint +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 +import com.blankj.utilcode.util.NetworkUtils +import com.localee.mireo.app.utils.MsMMKVUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.app.BaseEventBus +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.http.api.ExampleRecommendDataRes +import com.localee.mireo.app.http.api.HomeRecommendApi +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.CONSTANTS_quality_refresh +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.videoPaly.ExamplePlayerDetailDataRes +import com.localee.mireo.app.ui.videoPaly.ExampleRecommendAdapter +import com.localee.mireo.app.ui.videoPaly.ExampleRecommendPlayerView +import com.localee.mireo.app.ui.videoPaly.ExampleUnFavoriteDialog +import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.app.utils.formatNumber +import com.localee.mireo.app.utils.singleClick +import com.hjq.http.EasyHttp +import com.hjq.http.listener.HttpCallbackProxy +import com.hjq.toast.ToastUtils +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + + +class ExploreFragment : TitleBarFragment(), + ExampleRecommendAdapter.ExampleRecommendCollection { + + companion object { + + fun newInstance(): ExploreFragment { + return ExploreFragment() + } + } + + private var first: Boolean = true + private var play: Boolean = true + private var qualityRefresh: Boolean = false + + // private val exampleRecommendViewModel by lazy { ViewModelProvider(this)[ExampleRecommendViewModel::class.java] } + private var currentPage = 1 + private val currentSize = 10 + private var currentPosition = 0 + private var exampleRecommendAdapter: ExampleRecommendAdapter? = null + private var data: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data? = null + private var revolution = + MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0).toString() + + + private val srRecommend: SmartRefreshLayout? by lazy { findViewById(R.id.sr_recommend) } + private val viewPagerExampleRecommend: ViewPager2? by lazy { findViewById(R.id.viewPager_example_recommend) } + + private val exampleNetwork: ViewGroup? by lazy { findViewById(R.id.example_network) } + private val exampleTvNoNetwork: TextView? by lazy { exampleNetwork?.findViewById(R.id.example_tv_no_network) } + private val tvExampleRetry: TextView? by lazy { exampleNetwork?.findViewById(R.id.tv_example_retry) } + + private val exampleEmpty: ViewGroup? by lazy { findViewById(R.id.example_empty) } + private val exampleTvEmpty: TextView? by lazy { exampleEmpty?.findViewById(R.id.example_tv_empty) } + +// private val avi: LoadingAnimationView? by lazy { findViewById(R.id.avi) } + + override fun getLayoutId(): Int { + return R.layout.find_fragment + } + + override fun initView() { + EventBus.getDefault().register(this) + activity?.window?.setFlags( + WindowManager.LayoutParams.FLAG_SECURE, + WindowManager.LayoutParams.FLAG_SECURE + ) + activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + + exampleTvNoNetwork?.text = + TranslatesUtils.translates()?.no_network + tvExampleRetry?.text = TranslatesUtils.translates()?.retry + exampleTvEmpty?.text = TranslatesUtils.translates()?.s_no_content + } + + override fun initData() { + + } + + fun initialization() { + + if (NetworkUtils.isConnected()) { +// avi?.start() + getRecommands(currentPage, currentSize, revolution) + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + exampleNetwork?.visibility = View.VISIBLE + } + srRecommend?.setOnRefreshListener { + if (NetworkUtils.isConnected()) { +// avi?.start() + currentPage = 1 + viewPagerExampleRecommend?.post { + recommendPlayerView()?.stop() + recommendPlayerView()?.release() + } + getRecommands( + currentPage, + currentSize, revolution + ) + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + } + } + viewPagerExampleRecommend?.registerOnPageChangeCallback(object : + ViewPager2.OnPageChangeCallback() { + @SuppressLint("NotifyDataSetChanged") + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + currentPosition = position + val previousPosition = exampleRecommendAdapter?.currentPlayingPosition + if (previousPosition != position) { + exampleRecommendAdapter?.recyclerView?.post { exampleRecommendAdapter?.notifyDataSetChanged() } + } + exampleRecommendAdapter?.currentPlayingPosition = position + } + + override fun onPageScrollStateChanged(state: Int) { + super.onPageScrollStateChanged(state) + when (state) { + ViewPager2.SCROLL_STATE_IDLE -> { + if (viewPagerExampleRecommend?.currentItem == viewPagerExampleRecommend?.adapter?.itemCount?.minus( + 1 + ) + ) { + if (!first) { + currentPage++ + getRecommands( + currentPage, + currentSize, + revolution + ) + } else { + first = false + } + } + } + + ViewPager2.SCROLL_STATE_DRAGGING -> { + + } + + ViewPager2.SCROLL_STATE_SETTLING -> { + + } + } + } + }) + exampleTvEmpty?.setOnClickListener { + singleClick { + if (!NetworkUtils.isConnected()) { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + return@singleClick + } +// avi?.start() + currentPage = 1 + getRecommands( + currentPage, + currentSize, revolution + ) + } + } + tvExampleRetry?.setOnClickListener { + singleClick { + if (!NetworkUtils.isConnected()) { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_network.toString()) + } else { + ToastUtils.show(getString(R.string.example_no_network)) + } + return@singleClick + } +// avi?.start() + currentPage = 1 + getRecommands( + currentPage, + currentSize, revolution + ) + } + } + } + + override fun onHiddenChanged(hidden: Boolean) { + super.onHiddenChanged(hidden) + if (!hidden) { + activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + MsConstants.ExampleIsCurrentPage = true + qualityLogic() + } else { + activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + MsConstants.ExampleIsCurrentPage = false + srRecommend?.postDelayed({ recommendPlayerView()?.pause() }, 300) + } + } + + private var isDataLoaded = false + override fun onResume() { + super.onResume() + if (isVisible && !isDataLoaded) { // 检查是否对用户可见 + initialization() + isDataLoaded = true + } + MsConstants.ExampleIsCurrentPage = true + if (isVisible) { + if (!play) { + qualityLogic() + } else { + play = false + } + } + + } + + + private fun qualityLogic() { + if (qualityRefresh) { + viewPagerExampleRecommend?.post { + recommendPlayerView()?.stop() + recommendPlayerView()?.release() + } + getRecommands( + currentPage, + currentSize, revolution + ) + qualityRefresh = false + } else { + recommendPlayerView()?.play() + } + } + + override fun onPause() { + super.onPause() + MsConstants.ExampleIsCurrentPage = false + srRecommend?.postDelayed({ recommendPlayerView()?.pause() }, 300) + } + + fun getRecommands(currentPage: Int, pageSize: Int, revolutionS: String) { + EasyHttp.get(this) + .api(HomeRecommendApi().apply { + current_page = currentPage; + page_size = pageSize; + revolution = revolutionS; + + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + if (it.list?.isNotEmpty() == true) { + if (currentPage == 1) { + exampleRecommendAdapter = ExampleRecommendAdapter() + viewPagerExampleRecommend?.adapter = exampleRecommendAdapter + exampleRecommendAdapter?.submitList(it.list) + exampleRecommendAdapter?.recommendCollection = + this@ExploreFragment + } else { + exampleRecommendAdapter?.addAll(it.list) + } + exampleNetwork?.visibility = View.INVISIBLE + exampleEmpty?.visibility = View.INVISIBLE + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.no_more_data.toString()) + } else { + ToastUtils.show(getString(R.string.example_there_s_no_more_data)) + } + if (currentPage == 1) { + exampleEmpty?.visibility = View.VISIBLE + } + } + } else { + if (currentPage == 1) { + recommendPlayerView()?.release() + exampleEmpty?.visibility = View.VISIBLE + } + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.network_error.toString()) + } else { + ToastUtils.show(getString(R.string.example_service_exception_please_try_again)) + } + } +// avi?.stop() + srRecommend?.finishRefresh() + } + } + }) + +// ExampleRecommendRequest.getRecommands(current_page, page_size, revolution) +// .observeForever { result -> +// recommendLiveData.value = result.getOrNull() +// } + } + + fun doCollect(videoId: Int, shortPlayId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", videoId.toString()) + sMap.put("video_id", shortPlayId.toString()) + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.DoCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + val imageView = + recommendPlayerView()?.findViewById(R.id.example_iv_collection_controller) + val textview = + recommendPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) + imageView?.setImageResource(R.mipmap.iv_example_collection_h) + data?.collect_total = data?.collect_total?.plus(1) + exampleRecommendAdapter?.items?.get(currentPosition)?.collect_total = + data?.collect_total + exampleRecommendAdapter?.items?.get(currentPosition)?.is_collect = true + textview?.text = data?.collect_total?.let { it1 -> formatNumber(it1) } + textview?.setTextColor(resources.getColor(R.color.example_color_F56490)) + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.success.toString()) + } + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.network_error.toString()) + } else { + ToastUtils.show(getString(R.string.example_service_exception_please_try_again)) + } + } + } + } + }) + } + + fun doCancelCollect(videoId: Int, shortPlayId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", videoId.toString()) + sMap.put("video_id", shortPlayId.toString()) + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.CancelCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + val imageView = + recommendPlayerView()?.findViewById(R.id.example_iv_collection_controller) + val textview = + recommendPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) + imageView?.setImageResource(R.mipmap.iv_example_collection_n) + data?.collect_total = data?.collect_total?.minus(1) + exampleRecommendAdapter?.items?.get(currentPosition)?.collect_total = + data?.collect_total + exampleRecommendAdapter?.items?.get(currentPosition)?.is_collect = false + textview?.text = data?.collect_total?.let { it1 -> formatNumber(it1) } + textview?.setTextColor(resources.getColor(R.color.white)) + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.success.toString()) + } + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.network_error.toString()) + } else { + ToastUtils.show(getString(R.string.example_service_exception_please_try_again)) + } + } + } + } + }) + } + + private fun recommendPlayerView(): ExampleRecommendPlayerView? { + val recyclerView = viewPagerExampleRecommend?.getChildAt(0) as RecyclerView + return recyclerView.layoutManager?.findViewByPosition(currentPosition) as ExampleRecommendPlayerView? + } + + override fun onDestroy() { + viewPagerExampleRecommend?.post { + recommendPlayerView()?.stop() + recommendPlayerView()?.release() + } + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: String) { + if (MsConstants.Constants_RecommendPlayerView_PLAYER_STATUS_FINISHExample == event) { + if (viewPagerExampleRecommend?.currentItem == viewPagerExampleRecommend?.adapter?.itemCount?.minus( + 1 + ) + ) { + viewPagerExampleRecommend?.currentItem = 0 + } else { + currentPosition.plus(1) + .let { + viewPagerExampleRecommend?.currentItem = it + } + } + } + + if (CONSTANTS_quality_refresh == event) { + revolution = + MsMMKVUtils.getMMKV().getInt(MsConstants.CONSTANTS_quality, 0) + .toString() + qualityRefresh = true + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: BaseEventBus) { + if (MsConstants.Constants_Episodes_Series_DataExample == event.code) { + if (exampleRecommendAdapter?.items?.get(currentPosition)?.name == event.data.name) { + val imageView = + recommendPlayerView()?.findViewById(R.id.example_iv_collection_controller) + val textview = + recommendPlayerView()?.findViewById(R.id.example_tv_collection_num_controller) + imageView?.setImageResource(if (event.data.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) + exampleRecommendAdapter?.items?.get(currentPosition)?.collect_total = + event.data.collect_total + exampleRecommendAdapter?.items?.get(currentPosition)?.is_collect = + event.data.is_collect + textview?.text = formatNumber(event.data.collect_total) + textview?.setTextColor(if (event.data.is_collect) resources.getColor(R.color.example_color_F56490) else resources.getColor(R.color.white)) + } + } + } + + override fun collection(dataRes: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data) { + singleClick { + data = dataRes + if (dataRes.is_collect) { + val exampleUnFavoriteDialog = ExampleUnFavoriteDialog(requireContext()) + val tvThinkAgain = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_think_again) + val tvUnfavorite = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_unfavorite) + val tvTitle = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_title) + val tvContent = + exampleUnFavoriteDialog.findViewById(R.id.example_tv_content) + if (TranslatesUtils.translates() != null) { + tvThinkAgain.text = TranslatesUtils.translates()?.try_again + tvUnfavorite.text = TranslatesUtils.translates()?.collection + tvTitle.text = TranslatesUtils.translates()?.collection + tvContent.text = TranslatesUtils.translates()?.not_collect_warning + } + tvThinkAgain.setOnClickListener { exampleUnFavoriteDialog.dismiss() } + tvUnfavorite.setOnClickListener { + dataRes.video_info?.short_play_id?.let { + dataRes.video_info.short_play_video_id.let { it1 -> + doCancelCollect( + it, it1 + ) + } + } + exampleUnFavoriteDialog.dismiss() + } + exampleUnFavoriteDialog.show() + } else { + dataRes.video_info?.short_play_id?.let { + dataRes.video_info.short_play_video_id.let { it1 -> + doCollect( + it, it1 + ) + } + } + } + } + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeCategoriesTabFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeCategoriesTabFragment.kt new file mode 100644 index 0000000..5994961 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeCategoriesTabFragment.kt @@ -0,0 +1,183 @@ +package com.localee.mireo.app.ui.fragment + +import android.annotation.SuppressLint +import android.content.Intent +import android.graphics.Rect +import android.os.Bundle +import android.view.View +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.hjq.http.EasyHttp +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.HttpCallbackProxy +import com.localee.mireo.app.R +import com.localee.mireo.app.action.StatusAction +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.http.api.HomeVideoListApi +import com.localee.mireo.app.http.api.RecommendBean +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.activity.VideoPlayActivity +import com.localee.mireo.app.ui.adapter.HomeCategoriesTabAdapter +import com.localee.mireo.app.widget.StatusLayout +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener + + +class HomeCategoriesTabFragment : TitleBarFragment(), OnRefreshLoadMoreListener, + StatusAction { + + companion object { + fun newInstance(tabName: String, tabId: Int): HomeCategoriesTabFragment { + return HomeCategoriesTabFragment().apply { + arguments = Bundle().apply { + putString("TAB_NAME", tabName) + putInt("TAB_ID", tabId) + } + } + } + } + + private var tabName: String? = null + private var tabId: Int? = null + + private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_status_hint) } + private val recyclerView: RecyclerView? by lazy { findViewById(R.id.recyclerView) } + + private var mAdapter: HomeCategoriesTabAdapter? = null + private var pageIndex = 1 + private var pageTotal = 1 + val detailList: MutableList = java.util.ArrayList() + + override fun getLayoutId(): Int { + return R.layout.fragment_categories_tab + } + + @SuppressLint("NotifyDataSetChanged") + override fun initView() { + tabName = arguments?.getString("TAB_NAME") + tabId = arguments?.getInt("TAB_ID") + + mAdapter = HomeCategoriesTabAdapter() + + val layoutManager = GridLayoutManager(context, 3) + // 设置给 RecyclerView + recyclerView?.layoutManager = layoutManager + recyclerView?.isNestedScrollingEnabled = false // 关键代码 + recyclerView?.setHasFixedSize(true) // 优化性能 + recyclerView?.adapter = mAdapter + recyclerView?.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + outRect.right = 10 + outRect.left = 10 + } + }) + + mAdapter?.setOnItemClickListener { adapter, view, position -> + val historyBean: RecommendBean = adapter.items.get(position) + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + historyBean.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + + recyclerView?.addOnLayoutChangeListener { _, _, _, _, bottom, _, _, _, oldBottom -> + if (bottom != oldBottom) { + recyclerView?.layoutParams?.height = bottom + } + } + } + + override fun initData() { + + + } + + private var isDataLoaded = false + override fun onResume() { + super.onResume() + if (isVisible && !isDataLoaded) { // 检查是否对用户可见 + loadData() + isDataLoaded = true + } + } + + private fun loadData() { + getHomeVideoListApi(pageIndex, 10) + } + + private fun getHomeVideoListApi(currentPage: Int, pageSize: Int) { + EasyHttp.get(this) + .api(HomeVideoListApi().apply { + category_id = tabId + current_page = currentPage + page_size = pageSize + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (pageIndex == 1) { + if (it.list.isEmpty()) { + hintLayout?.show() + } else { + hintLayout?.hide() + } + mAdapter?.submitList(it.list) + pageTotal = it.pagination.page_total + } else { + mAdapter?.addAll(it.list) + } + } + + } + + override fun onHttpFail(throwable: Throwable) { + super.onHttpFail(throwable) + if (pageIndex == 1) { + hintLayout?.show() + } + } + + override fun onHttpEnd(api: IRequestApi) { + super.onHttpEnd(api) +// if (pageIndex == 1) { +// rlStatusRefresh?.finishRefresh(200) +// } else { +// rlStatusRefresh?.finishLoadMore(200) +// } + } + }) + } + + + override fun onRefresh(refreshLayout: RefreshLayout) { + pageIndex = 1 + loadData() + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + if (pageIndex == pageTotal) { +// rlStatusRefresh?.finishLoadMore(1000) + } else { + pageIndex++ + loadData() + } + } + + override fun getStatusLayout(): StatusLayout? { + return hintLayout + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeFragment.kt new file mode 100644 index 0000000..f8a04b5 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/HomeFragment.kt @@ -0,0 +1,434 @@ +package com.localee.mireo.app.ui.fragment + +import android.content.Intent +import android.graphics.Rect +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.widget.AppCompatImageView +import androidx.core.widget.NestedScrollView +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager.widget.ViewPager +import com.hjq.base.FragmentPagerAdapter +import com.hjq.http.EasyHttp +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.HttpCallbackProxy +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppFragment +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.http.api.CustomerRegisterApi +import com.localee.mireo.app.http.api.HomeCategoriesApi +import com.localee.mireo.app.http.api.HomeDayMaxRechargeShortPlayRankApi +import com.localee.mireo.app.http.api.HomeModuleApi +import com.localee.mireo.app.http.api.RecommendBean +import com.localee.mireo.app.http.api.UserInfoApi +import com.localee.mireo.app.http.api.UserInfoRes +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.activity.SearchActivity +import com.localee.mireo.app.ui.activity.VideoPlayActivity +import com.localee.mireo.app.ui.adapter.HomeBannerAdapter +import com.localee.mireo.app.ui.adapter.HomeCriticallyAdapter +import com.localee.mireo.app.ui.adapter.HomeGenresAdapter +import com.localee.mireo.app.ui.adapter.HomeShortAdapter +import com.localee.mireo.app.ui.adapter.HomeTopAdapter +import com.localee.mireo.app.ui.adapter.TabAdapter +import com.localee.mireo.app.ui.adapter.TabAdapter.Companion.TAB_MODE_SLIDING +import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest +import com.localee.mireo.app.utils.MsMMKVUtils +import com.localee.mireo.app.utils.TranslatesUtils +import com.youth.banner.Banner +import com.youth.banner.listener.OnBannerListener + +class HomeFragment : TitleBarFragment(), HomeBannerAdapter.HomeBannerOnClick, + TabAdapter.OnTabListener, + ViewPager.OnPageChangeListener { + + companion object { + + fun newInstance(): HomeFragment { + return HomeFragment() + } + } + + private val searchView: AppCompatImageView? by lazy { findViewById(R.id.iv_home_search) } + private val banner: Banner? by lazy { + findViewById( + R.id.banner + ) + } + + private val layoutTop: ViewGroup? by lazy { findViewById(R.id.layout_top) } + private val tvTopOne: TextView? by lazy { layoutTop?.findViewById(R.id.tv_name) } + private val ivTop: ImageView? by lazy { layoutTop?.findViewById(R.id.iv_img) } + private val recyclerOne: RecyclerView? by lazy { layoutTop?.findViewById(R.id.recyclerView) } + + private val layoutNew: ViewGroup? by lazy { findViewById(R.id.layout_new) } + private val tvTopNew: TextView? by lazy { layoutNew?.findViewById(R.id.tv_name) } + private val recyclerNew: RecyclerView? by lazy { layoutNew?.findViewById(R.id.recyclerView) } + + private val layoutShort: ViewGroup? by lazy { findViewById(R.id.layout_short) } + private val tvTopShort: TextView? by lazy { layoutShort?.findViewById(R.id.tv_name) } + private val recyclerShort: RecyclerView? by lazy { layoutShort?.findViewById(R.id.recyclerView) } + + private val layoutCritically: ViewGroup? by lazy { findViewById(R.id.layout_critically) } + private val tvTopCritically: TextView? by lazy { layoutCritically?.findViewById(R.id.tv_name) } + private val recyclerCritically: RecyclerView? by lazy { layoutCritically?.findViewById(R.id.recyclerView) } + + private val layoutGenres: ViewGroup? by lazy { findViewById(R.id.layout_genres) } + private val tvTopGenres: TextView? by lazy { layoutGenres?.findViewById(R.id.tv_name) } + private val recyclerGenres: RecyclerView? by lazy { layoutGenres?.findViewById(R.id.recyclerView) } + + private var bannerAdapter: HomeBannerAdapter? = null + + private var topAdapter: HomeTopAdapter? = null + private var newAdapter: HomeTopAdapter? = null + private var shortAdapter: HomeShortAdapter? = null + private var criticallyAdapter: HomeCriticallyAdapter? = null + + private val nestedScrollView: NestedScrollView? by lazy { findViewById(R.id.nestedScrollView) } + private val viewPager: ViewPager? by lazy { findViewById(R.id.viewPager) } + private var tabAdapter: TabAdapter? = null + private var pagerAdapter: FragmentPagerAdapter>? = null + + private var genresAdapter: HomeGenresAdapter? = null + + private var category: List? = null + + override fun getLayoutId(): Int { + return R.layout.home_fragment + } + + override fun initView() { + recyclerOne?.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + recyclerNew?.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + recyclerShort?.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + + val layoutManager: GridLayoutManager = GridLayoutManager( + context, 3, RecyclerView.HORIZONTAL, false + ) + recyclerCritically?.layoutManager = layoutManager + + recyclerGenres?.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + + + topAdapter = HomeTopAdapter(1) + recyclerOne?.adapter = topAdapter + newAdapter = HomeTopAdapter(2) + recyclerNew?.adapter = newAdapter + shortAdapter = HomeShortAdapter() + recyclerShort?.adapter = shortAdapter + criticallyAdapter = HomeCriticallyAdapter() + recyclerCritically?.adapter = criticallyAdapter + genresAdapter = HomeGenresAdapter(0) + recyclerGenres?.adapter = genresAdapter + + + recyclerCritically?.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + outRect.right = 8 + outRect.bottom = 28 + } + }) + + ivTop?.visibility = View.VISIBLE + tvTopOne?.setText("Top 10 Skits This Week") + tvTopNew?.setText("New Releases") + tvTopShort?.setText("Shorts for You") + tvTopCritically?.setText("Critically Acclaimed") + tvTopGenres?.setText("Genres to Explore") + + +// genresAdapter?.submitList(genersList) + + searchView?.setOnClickListener { + startActivity(SearchActivity::class.java) + } + + pagerAdapter = FragmentPagerAdapter(this) + + tabAdapter = TabAdapter(getAttachActivity()!!, TAB_MODE_SLIDING, false) + recyclerGenres?.adapter = tabAdapter + + tabAdapter?.addItem("All") + pagerAdapter?.addFragment(HomeCategoriesTabFragment.newInstance("All", 0), "") + tabAdapter?.setOnTabListener(this) + + viewPager?.adapter = pagerAdapter + viewPager?.addOnPageChangeListener(this@HomeFragment) + + + } + + override fun initData() { + getCustomerRegister() + + topAdapter?.setOnItemClickListener { adapter, view, position -> + val data: RecommendBean = adapter.items.get(position) + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + data.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + newAdapter?.setOnItemClickListener { adapter, view, position -> + val data: RecommendBean = adapter.items.get(position) + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + data.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + shortAdapter?.setOnItemClickListener { adapter, view, position -> + val data: RecommendBean = adapter.items.get(position) + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + data.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + criticallyAdapter?.setOnItemClickListener { adapter, view, position -> + val data: RecommendBean = adapter.items.get(position) + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + data.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + + } + + override fun isStatusBarEnabled(): Boolean { + return !super.isStatusBarEnabled() + } + + fun getCustomerRegister() { + EasyHttp.post(this) + .api(CustomerRegisterApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.token?.let { + MsMMKVUtils.saveToken(it) + getCustomerUser() + getHomeModuleData() +// getCategories() + getDayMaxRechargeShortPlayRank(); + } + } + }) + } + + fun getHomeModuleData() { + EasyHttp.get(this) + .api(HomeModuleApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + bannerAdapter = it.bannerData?.let { it1 -> HomeBannerAdapter(it1) } + bannerAdapter?.homeBannerOnClick = + this@HomeFragment + banner?.addBannerLifecycleObserver(getAttachActivity()) + ?.setAdapter(bannerAdapter) + ?.setOnBannerListener(OnBannerListener { data, position -> + val recommendBean: RecommendBean = it.bannerData!![position] + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + putExtra( + CONSTANTS_short_play_id, + recommendBean.short_play_id + ) + }) + }) + if (it.hotData == null) { + layoutTop?.visibility = View.GONE + } else { + layoutTop?.visibility = View.VISIBLE + topAdapter?.submitList(it.hotData) + } + if (it.manualNewestRecommand == null) { + layoutNew?.visibility = View.GONE + } else { + layoutNew?.visibility = View.VISIBLE + newAdapter?.submitList(it.manualNewestRecommand?.list) + } + if (it.recommandData == null || it.recommandData?.list == null) { + layoutShort?.visibility = View.GONE + } else { + layoutShort?.visibility = View.VISIBLE + shortAdapter?.submitList(it.recommandData?.list) + } +// criticallyAdapter?.submitList(it.newTopThree) + } + } + }) + + } + + + fun getDayMaxRechargeShortPlayRank() { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("type", "top_searched") + EasyHttp.post(this) + .api(HomeDayMaxRechargeShortPlayRankApi().apply { + }) + .body(getPublicRequest(sMap)) + .request(object : + HttpCallbackProxy>(this) { + override fun onHttpStart(api: IRequestApi) { + } + + override fun onHttpSuccess(result: HttpData) { + if (result.getData() == null) { + layoutShort?.visibility = View.GONE + } else { + result.getData()?.let { + layoutShort?.visibility = View.VISIBLE + criticallyAdapter?.submitList(it.list) + } + } + } + }) + } + + fun getCategories() { + EasyHttp.get(this) + .api(HomeCategoriesApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + category = it.list + for (cate in it.list) { + tabAdapter?.addItem(cate.name) + pagerAdapter?.addFragment( + HomeCategoriesTabFragment.newInstance( + cate.name, + cate.id + ), "" + ) + } + pagerAdapter?.notifyDataSetChanged() + } + } + }) + } + + + fun getCustomerUser() { + EasyHttp.get(this) + .api(UserInfoApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + + MsMMKVUtils.saveUserInfo(it) + + } + } + }) + } + + + override fun onDestroy() { + super.onDestroy() + + } + + override fun bannerAdd(dataRes: RecommendBean) { + dataRes.short_play_id?.let { doCollect(it) }; + } + + override fun bannerPlay(dataRes: RecommendBean) { + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + dataRes.short_play_id.let { + putExtra(CONSTANTS_short_play_id, it) + } + }) + } + + fun doCollect(shortPlayId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap["short_play_id"] = shortPlayId.toString() + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.DoCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (it != null) { + viewModel.triggerAction(2) + viewModel.meToHistoryAction(0) + } else { + if (TranslatesUtils.translates() != null) { + ToastUtils.show(TranslatesUtils.translates()?.network_error.toString()) + } else { + ToastUtils.show(getString(R.string.example_service_exception_please_try_again)) + } + } + } + } + }) + } + + private val viewModel: SharedViewModel by activityViewModels() + + override fun onTabSelected(recyclerView: RecyclerView?, position: Int): Boolean { + viewPager?.currentItem = position + return true + } + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + } + + override fun onPageSelected(position: Int) { + tabAdapter?.setSelectedPosition(position) + } + + override fun onPageScrollStateChanged(state: Int) { + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ListTabFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ListTabFragment.kt new file mode 100644 index 0000000..4cb915b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/ListTabFragment.kt @@ -0,0 +1,385 @@ +package com.localee.mireo.app.ui.fragment + +import android.annotation.SuppressLint +import android.content.Intent +import android.graphics.Rect +import android.os.Bundle +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.hjq.http.EasyHttp +import com.hjq.http.config.IRequestApi +import com.hjq.http.listener.HttpCallbackProxy +import com.hjq.shape.layout.ShapeLinearLayout +import com.localee.mireo.app.R +import com.localee.mireo.app.action.StatusAction +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.http.api.HistoryBean +import com.localee.mireo.app.http.api.MyCollectionsApi +import com.localee.mireo.app.http.api.MyHistoryApi +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants.CONSTANTS_activity_id +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.activity.VideoPlayActivity +import com.localee.mireo.app.ui.adapter.LostTabAdapter +import com.localee.mireo.app.utils.DHStringUtils.getPublicRequest +import com.localee.mireo.app.widget.StatusLayout +import com.scwang.smart.refresh.layout.SmartRefreshLayout +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener + + +class ListTabFragment : TitleBarFragment(), OnRefreshLoadMoreListener, + StatusAction { + + companion object { + fun newInstance(tabName: Int): ListTabFragment { + return ListTabFragment().apply { + arguments = Bundle().apply { + putInt("TAB_NAME", tabName) + } + } + } + } + + private var tabName: Int? = null + + private val hintLayout: StatusLayout? by lazy { findViewById(R.id.hl_status_hint) } + private val recyclerView: RecyclerView? by lazy { findViewById(R.id.recyclerView) } + private val rlStatusRefresh: SmartRefreshLayout? by lazy { findViewById(R.id.rl_status_refresh) } + private val llDelete: ShapeLinearLayout? by lazy { findViewById(R.id.ll_delete) } + private val ivDelete: ImageView? by lazy { findViewById(R.id.iv_delete) } + private val tvDelete: TextView? by lazy { findViewById(R.id.tv_delete) } + + private var mAdapter: LostTabAdapter? = null + private var pageIndex = 1 + private var pageTotal = 1 + private var type = 0 + private var detailPosition = 0 + val detailList: MutableList = java.util.ArrayList() + + override fun getLayoutId(): Int { + return R.layout.fragment_list_tab + } + + @SuppressLint("NotifyDataSetChanged") + override fun initView() { + tabName = arguments?.getInt("TAB_NAME") + + mAdapter = tabName?.let { LostTabAdapter(it) } + + val layoutManager = GridLayoutManager(context, 3) + // 设置给 RecyclerView + recyclerView!!.layoutManager = layoutManager + recyclerView?.adapter = mAdapter + recyclerView?.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + outRect.right = 10 + outRect.left = 10 + } + }) + + mAdapter?.setOnItemClickListener { adapter, view, position -> + val historyBean: HistoryBean.Data = adapter.items.get(position) + if (!mAdapter?.selectEdit!!) { + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + historyBean.short_play_id.let { + historyBean.short_play_video_id.let { it1 -> + putExtra(CONSTANTS_activity_id, it1) + putExtra(CONSTANTS_short_play_id, it) + } + } + }) + } else { + if (historyBean.is_check) { + adapter.items.get(position).is_check = false + for (i in detailList.indices) { + if (detailList[i].short_play_id == historyBean.short_play_id) { + detailList.removeAt(i) + } + } + } else { + adapter.items.get(position).is_check = true + detailList.add(historyBean) + } + + if (detailList.size == 0) { + llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFF9D9D9D.toInt()) + ?.intoBackground(); + context?.resources?.getColor(R.color.example_color_d9d9d9) + ?.let { tvDelete?.setTextColor(it) } + tvDelete?.text = "Delete (0)" + ivDelete?.setImageResource(R.mipmap.ic_list_detele_n) + } else { + llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFFF56490.toInt()) + ?.intoBackground(); + context?.resources?.getColor(R.color.example_color_F56490) + ?.let { tvDelete?.setTextColor(it) } + tvDelete?.text = "Delete (" + detailList.size + ")" + ivDelete?.setImageResource(R.mipmap.ic_list_detele_y) + } + mAdapter?.notifyDataSetChanged() + } + } + + rlStatusRefresh?.setOnRefreshLoadMoreListener(this) + + llDelete?.setOnClickListener { + if (detailList.size != 0) { + for (i in detailList.indices) { + doCancelCollect(detailList[i].short_play_id, detailList[i].short_play_video_id) + } + } + } + + } + + override fun initData() { + + + } + + fun setMode() { + when (type) { + 0 -> { + val layoutManager = + LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + // 设置给 RecyclerView + recyclerView!!.layoutManager = layoutManager + recyclerView?.adapter = mAdapter + type = 1 + mAdapter?.type = type + mAdapter?.notifyDataSetChanged() + } + + 1 -> { + // 创建一个 GridLayoutManager,指定列数(例如 3 列) + val layoutManager = GridLayoutManager(context, 3) + // 设置给 RecyclerView + recyclerView!!.layoutManager = layoutManager + recyclerView?.adapter = mAdapter + type = 0 + mAdapter?.type = type + mAdapter?.notifyDataSetChanged() + } + } + } + + fun setEdit() { + mAdapter?.selectEdit = !mAdapter?.selectEdit!! + mAdapter?.notifyDataSetChanged() + if (llDelete?.visibility == View.VISIBLE) + llDelete?.visibility = View.GONE + else + llDelete?.visibility = View.VISIBLE + + } + + fun setAllSelect(isSelect: Boolean) { + val allData: List? = mAdapter?.items + if (isSelect) { + for (i in allData?.indices!!) { + allData[i].is_check = true + } + allData.let { detailList.addAll(it) } + } else { + for (i in allData?.indices!!) { + allData[i].is_check = false + } + detailList.clear() + } + if (detailList.size == 0) { + llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFF9D9D9D.toInt()) + ?.intoBackground(); + context?.resources?.getColor(R.color.example_color_d9d9d9) + ?.let { tvDelete?.setTextColor(it) } + tvDelete?.text = "Delete (0)" + ivDelete?.setImageResource(R.mipmap.ic_list_detele_n) + } else { + llDelete?.shapeDrawableBuilder?.setStrokeColor(0xFFF56490.toInt()) + ?.intoBackground(); + context?.resources?.getColor(R.color.example_color_F56490) + ?.let { tvDelete?.setTextColor(it) } + tvDelete?.text = "Delete (" + detailList.size + ")" + ivDelete?.setImageResource(R.mipmap.ic_list_detele_y) + } + mAdapter?.notifyDataSetChanged() + } + + private var isDataLoaded = false + override fun onResume() { + super.onResume() + if (isVisible && !isDataLoaded) { // 检查是否对用户可见 + loadData() + isDataLoaded = true + } + } + + private fun loadData() { + when (tabName) { + 0 -> { + myCollections(pageIndex, 15) + } + + 1 -> { + getMyHistory(pageIndex, 15) + } + } + } + + private fun getMyHistory(currentPage: Int, pageSize: Int) { + EasyHttp.get(this) + .api(MyHistoryApi().apply { + current_page = currentPage + page_size = pageSize + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (pageIndex == 1) { + if (it.list.isEmpty()) { + hintLayout?.show() + } else { + hintLayout?.hide() + } + mAdapter?.submitList(it.list) + pageTotal = it.pagination.page_total + } else { + mAdapter?.addAll(it.list) + } + } + } + + override fun onHttpFail(throwable: Throwable) { + super.onHttpFail(throwable) + if (pageIndex == 1) { + hintLayout?.show() + } + } + + override fun onHttpEnd(api: IRequestApi) { + super.onHttpEnd(api) + if (pageIndex == 1) { + rlStatusRefresh?.finishRefresh(200) + } else { + rlStatusRefresh?.finishLoadMore(200) + } + } + }) + } + + private fun myCollections(currentPage: Int, pageSize: Int) { + EasyHttp.get(this) + .api(MyCollectionsApi().apply { + current_page = currentPage + page_size = pageSize + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + if (pageIndex == 1) { + if (it.list.isEmpty()) { + hintLayout?.show() + } else { + hintLayout?.hide() + } + mAdapter?.submitList(it.list) + pageTotal = it.pagination.page_total + } else { + mAdapter?.addAll(it.list) + } + } + + } + + override fun onHttpFail(throwable: Throwable) { + super.onHttpFail(throwable) + if (pageIndex == 1) { + hintLayout?.show() + } + } + + override fun onHttpEnd(api: IRequestApi) { + super.onHttpEnd(api) + if (pageIndex == 1) { + rlStatusRefresh?.finishRefresh(200) + } else { + rlStatusRefresh?.finishLoadMore(200) + } + } + }) + } + + fun doCancelCollect(shortPlayId: Int, videoId: Int) { + val sMap: MutableMap = LinkedHashMap() + // StringMap = getSortMap(StringMap); + sMap.put("short_play_id", shortPlayId.toString()) + sMap.put("video_id", videoId.toString()) + + EasyHttp.post(this) + .api(com.localee.mireo.app.http.api.CancelCollectApi()) + .body(getPublicRequest(sMap)) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + viewModel.listTabAction(0) + } + } + + override fun onHttpEnd(api: IRequestApi) { + super.onHttpEnd(api) + detailPosition++ + if (detailPosition == detailList.size) { + pageIndex = 1 + mAdapter?.selectEdit = false + loadData() + llDelete?.visibility = View.GONE + detailList.clear() + } + } + }) + } + + private val viewModel: SharedViewModel by activityViewModels() + + fun onRefreshData() { + if (isDataLoaded) { + pageIndex = 1 + loadData() + } + } + + override fun onRefresh(refreshLayout: RefreshLayout) { + pageIndex = 1 + loadData() + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + if (pageIndex == pageTotal) { + rlStatusRefresh?.finishLoadMore(1000) + } else { + pageIndex++ + loadData() + } + } + + override fun getStatusLayout(): StatusLayout? { + return hintLayout + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MessageFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MessageFragment.kt new file mode 100644 index 0000000..22da9a3 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MessageFragment.kt @@ -0,0 +1,203 @@ +package com.localee.mireo.app.ui.fragment + +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.widget.AppCompatCheckBox +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager.widget.ViewPager +import com.hjq.base.FragmentPagerAdapter +import com.lxj.xpopup.XPopup +import com.localee.mireo.app.R +import com.localee.mireo.app.app.AppFragment +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.adapter.TabAdapter +import com.localee.mireo.app.ui.popup.CustomBubbleAttachPopup +import com.localee.mireo.app.ui.popup.CustomBubbleAttachPopup.CustomPopupOnclick + + +class MessageFragment : TitleBarFragment(), TabAdapter.OnTabListener, + ViewPager.OnPageChangeListener { + + companion object { + + fun newInstance(): MessageFragment { + return MessageFragment() + } + } + + private val ivMore: ImageView? by lazy { findViewById(R.id.iv_more) } + private val tabView: RecyclerView? by lazy { findViewById(R.id.rv_list_tab) } + private val viewPager: ViewPager? by lazy { findViewById(R.id.viewPager) } + private val tvCancel: TextView? by lazy { findViewById(R.id.tv_cancel) } + private val cbSelectCheck: AppCompatCheckBox? by lazy { findViewById(R.id.cb_select_check) } + + private var tabAdapter: TabAdapter? = null + private var pagerAdapter: FragmentPagerAdapter>? = null + + override fun getLayoutId(): Int { + return R.layout.message_fragment + } + + private val viewModel: SharedViewModel by activityViewModels() + + var modeOne: Int = 0 + var modeTwo: Int = 0 + var mode: Int = 0 + + override fun initView() { + + ivMore?.setOnClickListener { + XPopup.Builder(context) + .hasShadowBg(false) + .isTouchThrough(true) + .atView(ivMore) + .hasShadowBg(false) + .hasNavigationBar(false) + .asCustom(context?.let { it1 -> + CustomBubbleAttachPopup( + it1, + viewPager?.currentItem, + mode, + object : CustomPopupOnclick { + override fun onMode() { + + when (viewPager?.currentItem) { + 0 -> { + if (modeOne == 0) { + modeOne = 1 + } else { + modeOne = 0 + } + mode = modeOne + listTabOneFragment.setMode() + } + + 1 -> { + if (modeTwo == 0) { + modeTwo = 1 + } else { + modeTwo = 0 + } + mode = modeTwo + listTabTwoFragment.setMode() + } + } + } + + override fun onEdit() { + if (viewPager?.currentItem == 0) { + tvCancel?.visibility = View.VISIBLE + ivMore?.visibility = View.GONE + tabView?.visibility = View.INVISIBLE + cbSelectCheck?.visibility = View.VISIBLE + listTabOneFragment.setEdit() + + } + } + }) + }) + .show() + } + + tvCancel?.setOnClickListener { + tvCancel?.visibility = View.GONE + ivMore?.visibility = View.VISIBLE + tabView?.visibility = View.VISIBLE + cbSelectCheck?.visibility = View.GONE + listTabOneFragment.setEdit() + } + + cbSelectCheck?.setOnCheckedChangeListener { buttonView, isChecked -> + if (isChecked) { + listTabOneFragment.setAllSelect(true) + } else { + listTabOneFragment.setAllSelect(false) + + } + } + + viewModel.listTabAction.observe(this) { data -> + tvCancel?.visibility = View.GONE + ivMore?.visibility = View.VISIBLE + tabView?.visibility = View.VISIBLE + cbSelectCheck?.isChecked = false + cbSelectCheck?.visibility = View.GONE + listTabOneFragment.setEdit() + } + + viewModel.meToHistoryAction.observe(this) { data -> + viewPager?.currentItem = data + when(data) { + 0 -> { + listTabOneFragment.onRefreshData() + } + 1 -> { + listTabTwoFragment.onRefreshData() + } + } + } + } + + + + val listTabOneFragment: ListTabFragment = ListTabFragment.newInstance(0) + val listTabTwoFragment: ListTabFragment = ListTabFragment.newInstance(1) + + fun initViewA() { + pagerAdapter = FragmentPagerAdapter(this) + pagerAdapter!!.addFragment(listTabOneFragment, "") + pagerAdapter!!.addFragment(listTabTwoFragment, "") + // 设置 Adapter + viewPager?.adapter = pagerAdapter + viewPager?.addOnPageChangeListener(this) + + tabAdapter = TabAdapter(getAttachActivity()!!) + tabView?.adapter = tabAdapter + + tabAdapter?.addItem("Follow List") + tabAdapter?.addItem("Play List") + tabAdapter?.setOnTabListener(this) + + + } + + private var isDataLoaded = false + override fun onResume() { + super.onResume() + if (isVisible && !isDataLoaded) { + initViewA() + isDataLoaded = true + } + } + + override fun initData() {} + + + override fun onTabSelected(recyclerView: RecyclerView?, position: Int): Boolean { + viewPager?.currentItem = position + return true + } + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + } + + override fun onPageSelected(position: Int) { + tabAdapter?.setSelectedPosition(position) + when (position) { + 0 -> { + mode = modeOne + } + + 1 -> { + mode = modeTwo + } + } + } + + override fun onPageScrollStateChanged(state: Int) { + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt new file mode 100644 index 0000000..104f04c --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/MineFragment.kt @@ -0,0 +1,153 @@ +package com.localee.mireo.app.ui.fragment + +import android.content.Intent +import android.view.View +import android.widget.TextView +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.hjq.http.EasyHttp +import com.hjq.http.listener.HttpCallbackProxy +import com.localee.mireo.app.R +import com.localee.mireo.app.aop.SingleClick +import com.localee.mireo.app.app.TitleBarFragment +import com.localee.mireo.app.http.api.HistoryBean +import com.localee.mireo.app.http.api.MyHistoryApi +import com.localee.mireo.app.http.api.UserInfoApi +import com.localee.mireo.app.http.api.UserInfoRes +import com.localee.mireo.app.http.model.HttpData +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.activity.AboutActivity +import com.localee.mireo.app.ui.activity.BrowserActivity +import com.localee.mireo.app.ui.activity.HomeActivity +import com.localee.mireo.app.ui.activity.SettingActivity +import com.localee.mireo.app.ui.activity.VideoPlayActivity +import com.localee.mireo.app.ui.adapter.MeHistoryAdapter +import com.localee.mireo.app.utils.MsMMKVUtils + + +class MineFragment : TitleBarFragment() { + + private val tvId: TextView? by lazy { findViewById(R.id.tv_id) } + private val recyclerView: RecyclerView? by lazy { findViewById(R.id.recyclerView) } + + private var mAdapter: MeHistoryAdapter? = null + + private val viewModel: SharedViewModel by activityViewModels() + + companion object { + + fun newInstance(): MineFragment { + return MineFragment() + } + } + + override fun getLayoutId(): Int { + return R.layout.mine_fragment + } + + override fun initView() { + setOnClickListener( + R.id.sb_play_list, + R.id.sb_setting, + R.id.sb_privacy, + R.id.sb_agreement, + R.id.sb_about + ) + + recyclerView?.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + + mAdapter = MeHistoryAdapter() + recyclerView?.adapter = mAdapter + + mAdapter?.setOnItemClickListener { adapter, view, position -> + val data: HistoryBean.Data = adapter.items[position] + startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + putExtra(CONSTANTS_short_play_id, data.short_play_id) + }) + } + + } + + override fun initData() { + tvId?.text = "ID:".plus(MsMMKVUtils.getUserInfo()?.customer_id) + } + + private var isDataLoaded = false + override fun onResume() { + super.onResume() + if (isVisible && !isDataLoaded) { + getCustomerUser() + isDataLoaded = true + } + getMyHistory(1, 20) + } + + @SingleClick + override fun onClick(view: View) { + when (view.id) { + R.id.sb_play_list -> { + viewModel.triggerAction(2) + viewModel.meToHistoryAction(1) + } + + R.id.sb_setting -> { + startActivity(SettingActivity::class.java) + } + + R.id.sb_privacy -> { + BrowserActivity.start(getAttachActivity()!!, MsConstants.Constants_privacy_policy) + } + + R.id.sb_agreement -> { + BrowserActivity.start(getAttachActivity()!!, MsConstants.Constants_user_agreement) + } + + R.id.sb_about -> { + startActivity(AboutActivity::class.java) + } + } + } + + private fun getCustomerUser() { + EasyHttp.get(this) + .api(UserInfoApi().apply { + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + + MsMMKVUtils.saveUserInfo(it) + tvId?.text = "ID:".plus(MsMMKVUtils.getUserInfo()?.customer_id) + } + } + }) + } + + + private fun getMyHistory(currentPage: Int, pageSize: Int) { + EasyHttp.get(this) + .api(MyHistoryApi().apply { + current_page = currentPage + page_size = pageSize + }) + .request(object : HttpCallbackProxy>(this) { + override fun onHttpSuccess(result: HttpData) { + result.getData()?.let { + mAdapter?.submitList(it.list) + } + } + }) + } + + + override fun isStatusBarEnabled(): Boolean { + return !super.isStatusBarEnabled() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/SharedViewModel.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/SharedViewModel.kt new file mode 100644 index 0000000..b77fe48 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/fragment/SharedViewModel.kt @@ -0,0 +1,28 @@ +package com.localee.mireo.app.ui.fragment + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class SharedViewModel : ViewModel() { + private val _action = MutableLiveData() + val action: LiveData get() = _action + + fun triggerAction(data: Int) { + _action.value = data + } + + private val _listTabAction = MutableLiveData() + val listTabAction: LiveData get() = _listTabAction + + fun listTabAction(data: Int) { + _listTabAction.value = data + } + + private val _meToHistoryAction = MutableLiveData() + val meToHistoryAction: LiveData get() = _meToHistoryAction + + fun meToHistoryAction(data: Int) { + _meToHistoryAction.value = data + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/popup/CustomBubbleAttachPopup.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/popup/CustomBubbleAttachPopup.kt new file mode 100644 index 0000000..ed9a465 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/popup/CustomBubbleAttachPopup.kt @@ -0,0 +1,45 @@ +package com.localee.mireo.app.ui.popup + +import android.content.Context +import android.view.View +import android.widget.TextView +import com.lxj.xpopup.core.BubbleAttachPopupView +import com.localee.mireo.app.R + +class CustomBubbleAttachPopup(context: Context,var tabPosition: Int?,var mode: Int, val popupOnclick: CustomPopupOnclick?) : + BubbleAttachPopupView(context) { + interface CustomPopupOnclick { + fun onMode() + + fun onEdit() + } + + + override fun getImplLayoutId(): Int { + return R.layout.custom_bubble_attach_popup + } + + override fun onCreate() { + super.onCreate() + val tvMode = findViewById(R.id.tv_mode) + val tvEdit = findViewById(R.id.tv_edit) + if (tabPosition == 0) { + tvEdit.visibility = View.VISIBLE + } else { + tvEdit.visibility = View.GONE + } + if (mode == 0) { + tvMode.text = "List mode" + } else { + tvMode.text = "Grid mode" + } + tvMode.setOnClickListener { + popupOnclick?.onMode() + dismiss() + } + tvEdit.setOnClickListener { + popupOnclick?.onEdit() + dismiss() + } + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExamplePlayerDetailDataRes.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExamplePlayerDetailDataRes.kt new file mode 100644 index 0000000..5af2548 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExamplePlayerDetailDataRes.kt @@ -0,0 +1,150 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.os.Parcel +import android.os.Parcelable + + +data class ExamplePlayerDetailDataRes( + val episodeList: List, + val is_collect: Boolean, + val show_share_coin: Boolean, + val share_coin: Int, + val install_coins: Int, + val unlock_video_ad_count: Int, + val revolution: Int, + val discount: Int, + var business_model: String, + val shortPlayInfo: ShortPlayInfo, + val video_info: VideoInfo +) { + + data class Episode( + val coins: Int, + val episode: Int, + val id: Int, + var is_lock: Boolean, + val is_vip: Int, + val short_play_id: Int, + val short_play_video_id: Int, + val video_url: String, + val vip_coins: Int, + var play_seconds: String?, + var promise_view_ad: Int, + ):Parcelable { + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt() + ) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeInt(coins) + parcel.writeInt(episode) + parcel.writeInt(id) + parcel.writeByte(if (is_lock) 1 else 0) + parcel.writeInt(is_vip) + parcel.writeInt(short_play_id) + parcel.writeInt(short_play_video_id) + parcel.writeString(video_url) + parcel.writeInt(vip_coins) + parcel.writeString(play_seconds) + parcel.writeInt(promise_view_ad) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): Episode { + return Episode(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + data class ShortPlayInfo( + val all_coins: Int, + val buy_type: Int, + var collect_total: Int, + val description: String, + val episode_total: Int, + val id: Int, + val image_url: String, + var is_collect: Boolean, + val name: String, + val process: Int, + val short_id: Int, + val watch_total: Int + ):Parcelable { + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readInt(), + parcel.readString().toString(), + parcel.readByte() != 0.toByte(), + parcel.readString().toString(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt() + ) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeInt(all_coins) + parcel.writeInt(buy_type) + parcel.writeInt(collect_total) + parcel.writeString(description) + parcel.writeInt(episode_total) + parcel.writeInt(id) + parcel.writeString(image_url) + parcel.writeByte(if (is_collect) 1 else 0) + parcel.writeString(name) + parcel.writeInt(process) + parcel.writeInt(short_id) + parcel.writeInt(watch_total) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): ShortPlayInfo { + return ShortPlayInfo(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + data class VideoInfo( + val coins: Int, + val episode: Int, + val id: Int, + val is_vip: Int, + val short_id: Int, + val short_play_id: Int, + val short_play_video_id: Int, + val promise_view_ad: Int, + val video_url: String, + val vip_coins: Int + ) +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendAdapter.kt new file mode 100644 index 0000000..5f5d01d --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendAdapter.kt @@ -0,0 +1,43 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.content.Context +import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatImageView +import androidx.media3.ui.PlayerView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.localee.mireo.app.R + +class ExampleRecommendAdapter : + BaseQuickAdapter() { + var currentPlayingPosition = 0 + var recommendCollection: ExampleRecommendCollection? = null + + interface ExampleRecommendCollection { + fun collection(dataRes: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data) + } + + override fun onBindViewHolder( + holder: QuickViewHolder, + position: Int, + item: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data? + ) { + val recommendPlayerView = holder.getView(R.id.item_recommend_view) + val playerView = recommendPlayerView.findViewById(R.id.player_view) + val imageView = playerView.findViewById(R.id.example_iv_collection_controller) + imageView.setOnClickListener { item?.let { it1 -> recommendCollection?.collection(it1) } } + if (position == currentPlayingPosition) { + item?.let { recommendPlayerView.setPlayInfo(it) } + } else { + recommendPlayerView.stop() + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.example_item_recommend, parent) + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt new file mode 100644 index 0000000..7316a51 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleRecommendPlayerView.kt @@ -0,0 +1,317 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.SeekBar +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatSeekBar +import androidx.appcompat.widget.AppCompatTextView +import androidx.media3.common.MediaItem +import androidx.media3.common.PlaybackException +import androidx.media3.common.Player +import androidx.media3.datasource.DataSource +import androidx.media3.datasource.DefaultDataSourceFactory +import androidx.media3.exoplayer.DefaultRenderersFactory +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.exoplayer.hls.HlsMediaSource +import androidx.media3.exoplayer.source.MediaSource +import androidx.media3.exoplayer.source.ProgressiveMediaSource +import com.bumptech.glide.Glide +import com.hjq.shape.view.ShapeImageView +import com.hjq.shape.view.ShapeTextView +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.databinding.ExampleRecommendPlayerViewBinding +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.CONSTANTS_activity_id +import com.localee.mireo.app.other.MsConstants.CONSTANTS_short_play_id +import com.localee.mireo.app.ui.activity.SearchActivity +import com.localee.mireo.app.ui.activity.VideoPlayActivity +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.app.utils.formatNumber +import com.localee.mireo.app.utils.formatTimestamp +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import org.greenrobot.eventbus.EventBus + + +class ExampleRecommendPlayerView(context: Context, attrs: AttributeSet?) : + FrameLayout(context, attrs) { + @SuppressLint("UnsafeOptInUsageError") + private var builder = ExoPlayer.Builder(context, FfmpegRenderersFactory(context)) + .setRenderersFactory(DefaultRenderersFactory(context).setEnableDecoderFallback(true)) + private var player: ExoPlayer = builder.build() + private var isDragging = false + private var exampleSeekbarPlayerController: AppCompatSeekBar? = null + private var exampleProgressJob: Job? = null + private var exampleIvPlayPlayerController: ShapeImageView? = null + private var exampleIvCollectionController: AppCompatImageView? = null + private var exampleIvDramaSeriesController: AppCompatImageView? = null + private var exampleIvBackController: AppCompatImageView? = null + private var exampleTvEpisodePlayerController: ShapeTextView? = null + private var episodePlayerController: ImageView? = null + private var exampleTvCollectionNumController: AppCompatTextView? = null + private var exampleTvTitlePlayerController: AppCompatTextView? = null + private var tvPlayerSeekTime: AppCompatTextView? = null + private var exampleTvSeries: AppCompatTextView? = null + private var exampleIvQuality: AppCompatImageView? = null + private var ivCover: AppCompatImageView? = null + private var loadingLine: LoadingLine? = null + + init { + val inflate = + LayoutInflater.from(context) + .inflate(R.layout.example_recommend_player_view, this, true) + val exampleRecommendPlayerViewBinding = ExampleRecommendPlayerViewBinding.bind(inflate) + exampleRecommendPlayerViewBinding.playerView.player = player + exampleIvQuality = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_iv_quality) + exampleSeekbarPlayerController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_seekBar_player_controller) + exampleIvPlayPlayerController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_iv_play_player_controller) + exampleIvCollectionController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_iv_collection_controller) + exampleIvDramaSeriesController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_iv_drama_series_controller) +// exampleIvBackController = +// exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_iv_back_controller) + exampleTvEpisodePlayerController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_tv_episode_player_controller) + episodePlayerController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.iv_episode_player_controller) + exampleTvCollectionNumController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_tv_collection_num_controller) + exampleTvTitlePlayerController = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_tv_title_player_controller) + exampleTvSeries = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.example_tv_series) + loadingLine = exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.load_line) + ivCover = exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.iv_cover_recommend) + tvPlayerSeekTime = + exampleRecommendPlayerViewBinding.playerView.findViewById(R.id.tv_player_seek_time) + player.addListener(object : Player.Listener { + override fun onPlaybackStateChanged(playbackState: Int) { + super.onPlaybackStateChanged(playbackState) + when (playbackState) { + Player.STATE_BUFFERING -> { + loadingLine?.visibility = VISIBLE + loadingLine?.postDelayed({ loadingLine?.startAnimation() }, 100) + } + + Player.STATE_READY -> { + exampleIvPlayPlayerController?.isEnabled = true + if (MsConstants.ExampleIsCurrentPage) { + play() + setProgress() + } + MsConstants.Exampleready = true + ivCover?.visibility = View.INVISIBLE + loadingLine?.clearAnimation() + loadingLine?.visibility = View.INVISIBLE + } + + Player.STATE_ENDED -> { + EventBus.getDefault() + .post(MsConstants.Constants_RecommendPlayerView_PLAYER_STATUS_FINISHExample) + } + + Player.STATE_IDLE -> { + exampleIvPlayPlayerController?.isEnabled = false + } + } + } + + override fun onPlayerError(error: PlaybackException) { + super.onPlayerError(error) + ivCover?.visibility = View.INVISIBLE + loadingLine?.visibility = View.INVISIBLE + } + }) + exampleIvPlayPlayerController?.setOnClickListener { + if (MsConstants.Exampleplaying) { + pause() + } else { + play() + } + } + + } + + private fun setProgress() { + exampleProgressJob?.cancel() + exampleProgressJob = CoroutineScope(Dispatchers.Main).launch { + while (isActive) { + if (!isDragging) { + val duration = player.duration + val position = player.currentPosition + exampleSeekbarPlayerController?.max = duration.toInt() + exampleSeekbarPlayerController?.progress = position.toInt() + } + delay(1000) + } + } + + exampleSeekbarPlayerController?.setOnSeekBarChangeListener(object : + SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + if (fromUser) { + seekTo(progress) + } + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) { + tvPlayerSeekTime?.visibility = VISIBLE + isDragging = true + } + + override fun onStopTrackingTouch(seekBar: SeekBar?) { + isDragging = false + tvPlayerSeekTime?.visibility = INVISIBLE + } + }) + } + + fun play() { + player.play() + exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_stop) + MsConstants.Exampleplaying = true + isDragging = false + } + + fun pause() { + player.pause() + exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_play) + MsConstants.Exampleplaying = false + isDragging = true + } + + private fun seekTo(progress: Int) { + player.seekTo(progress.toLong()) + seekTime() + } + + private fun seekTime() { + val currentPosition = player.currentPosition + val currentTime = formatTimestamp(currentPosition / 1000) + val totalDuration = player.duration + val totalTime = formatTimestamp(totalDuration / 1000) + tvPlayerSeekTime?.text = "$currentTime/$totalTime" + } + + fun stop() { + player.stop() + exampleProgressJob?.cancel() + } + + fun release() { + player.release() + } + + @SuppressLint("UnsafeOptInUsageError") + fun setPlayInfo(dataRes: com.localee.mireo.app.http.api.ExampleRecommendDataRes.Data?) { + if (dataRes?.video_info != null) { + ivCover?.let { + Glide.with(context).load(dataRes.video_info.image_url) + .into(it) + } + ivCover?.visibility = View.VISIBLE + MsConstants.Exampleready = false + exampleTvTitlePlayerController?.text = dataRes.name + if (TranslatesUtils.translates() != null) { + exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( + TranslatesUtils.translates()?.episode_set.toString(), + dataRes.video_info.episode.toString() + ).plus(" / ").plus( + TranslatesUtils.replace( + TranslatesUtils.translates()?.complete_episode.toString(), + dataRes.episode_total.toString() + ) + ) + exampleTvSeries?.text = TranslatesUtils.translates()?.recommand_series + } else { + exampleTvEpisodePlayerController?.text = + "EP.".plus(dataRes.video_info.episode).plus(" / EP.") + .plus(dataRes.episode_total) + exampleTvSeries?.text = context.getString(R.string.example_series) + } + exampleTvCollectionNumController?.text = dataRes.collect_total?.let { formatNumber(it) } + exampleTvCollectionNumController?.setTextColor( + if (dataRes.is_collect) resources.getColor( + R.color.example_color_F56490 + ) else resources.getColor(R.color.white) + ) + exampleIvCollectionController?.setImageResource(if (dataRes.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) + player.setMediaSource(buildMediaSource(dataRes.video_info.video_url)) + player.prepare() + exampleTvEpisodePlayerController?.setOnClickListener { + if (MsConstants.Exampleready) { + context.startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + dataRes.video_info?.short_play_id?.let { + dataRes.video_info.short_play_video_id.let { it1 -> + putExtra(CONSTANTS_activity_id, it1) + putExtra(CONSTANTS_short_play_id, it) + } + } + }) + } + } + episodePlayerController?.setOnClickListener { + if (MsConstants.Exampleready) { + context.startActivity( + Intent( + context, + VideoPlayActivity::class.java + ).apply { + dataRes.video_info?.short_play_id?.let { + dataRes.video_info.short_play_video_id.let { it1 -> + putExtra(CONSTANTS_activity_id, it1) + putExtra(CONSTANTS_short_play_id, it) + } + } + }) + } + } + exampleIvQuality?.setOnClickListener { + context.startActivity( + Intent( + context, + SearchActivity::class.java + ) + ) + } + } else { + ToastUtils.show("There is a problem with the video source") + } + } + + @SuppressLint("UnsafeOptInUsageError") + private fun buildMediaSource(videoPath: String): MediaSource { + val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory(context, "guyantv") + + return if (videoPath.endsWith(".m3u8")) { + HlsMediaSource.Factory(dataSourceFactory) + .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath))) + } else { + ProgressiveMediaSource.Factory(dataSourceFactory) + .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath))) + } + } + + +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDataAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDataAdapter.kt new file mode 100644 index 0000000..660ae83 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDataAdapter.kt @@ -0,0 +1,52 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.content.Context +import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatTextView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.localee.mireo.app.R +import com.localee.mireo.app.http.api.VideoDetailsApi + +class ExampleSeriesDataAdapter : + BaseQuickAdapter() { + var currentPosition = -1 + override fun onBindViewHolder( + holder: QuickViewHolder, + position: Int, + item: VideoDetailsApi.Bean.Episode? + ) { + val view = holder.getView(R.id.example_tv_num_data) + view.text = item?.episode.toString() + if (currentPosition == view.text.toString().toInt()) { + holder.setBackgroundResource(R.id.ll_num_data, R.drawable.bg_example_num_h) + holder.setTextColor( + R.id.example_tv_num_data, + context.getColor(R.color.example_color_FF0049) + ) + holder.setVisible(R.id.example_tv_num_data, false) + holder.setVisible(R.id.example_iv_num_data, true) + } else { + holder.setBackgroundResource(R.id.ll_num_data, R.drawable.bg_example_num_n) + holder.setTextColor( + R.id.example_tv_num_data, + context.getColor(R.color.example_color_999999) + ) + holder.setVisible(R.id.example_tv_num_data, true) + holder.setVisible(R.id.example_iv_num_data, false) + } +// if (item?.is_lock == true && !ExampleMMKVUtils.isVip()) { +// holder.setVisible(R.id.iv_example_lock, true) +// } else { +// } + holder.setVisible(R.id.iv_example_lock, false) + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.example_item_num_data, parent) + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDialogFragment.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDialogFragment.kt new file mode 100644 index 0000000..0c4d3ed --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesDialogFragment.kt @@ -0,0 +1,138 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.app.AlertDialog +import android.app.Dialog +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import androidx.fragment.app.DialogFragment +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.bumptech.glide.Glide +import com.localee.mireo.app.R +import com.localee.mireo.app.databinding.ExampleDialogSeriesBinding +import com.localee.mireo.app.http.api.VideoDetailsApi +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.Constants_Episodes_Series_DataExample +import com.localee.mireo.app.other.MsConstants.Constants_Episodes_Series_Data_ListExample +import com.localee.mireo.app.other.MsConstants.Constants_Episodes_Series_Data_currentPositionExample +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.app.utils.singleClick +import org.greenrobot.eventbus.EventBus + +class ExampleSeriesDialogFragment : DialogFragment() { + var seriesCallBack: SeriesCallBack? = null + + interface SeriesCallBack { + fun chooseSeries(episode: VideoDetailsApi.Bean.Episode) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = AlertDialog.Builder(requireActivity()) + val inflater = requireActivity().layoutInflater + val view = inflater.inflate(R.layout.example_dialog_series, null) + val exampleDialogSeriesBinding = ExampleDialogSeriesBinding.bind(view) + val episodeList: List? = + arguments?.getParcelableArrayList(Constants_Episodes_Series_Data_ListExample) + val data: VideoDetailsApi.Bean.ShortPlayInfo? = + arguments?.getParcelable(Constants_Episodes_Series_DataExample) + val currentPosition = + arguments?.getInt(Constants_Episodes_Series_Data_currentPositionExample, 0) + val splitDataLists: MutableList> = mutableListOf() + val splitDataTypes: MutableList = mutableListOf() + var startIndex = 0 + var endIndex: Int + val pageSize = 30 + var dataIndex = 1 + + while (startIndex < episodeList?.size!!) { + endIndex = startIndex + pageSize + if (endIndex > episodeList.size) { + endIndex = episodeList.size + } + + val sublist = episodeList.subList(startIndex, endIndex) + splitDataLists.add(sublist) + + val dataType = "${dataIndex}-${dataIndex + sublist.size - 1}" + splitDataTypes.add(dataType) + + startIndex = endIndex + dataIndex += sublist.size + } + exampleDialogSeriesBinding.clVip.setOnClickListener { + singleClick { + dismiss() + EventBus.getDefault() + .post(MsConstants.CONSTANTS_stop_play) + } + } + + exampleDialogSeriesBinding.tvVip.text = TranslatesUtils.translates()?.Membership + exampleDialogSeriesBinding.tvVipDes.text = TranslatesUtils.translates()?.go_vip_store +// exampleDialogSeriesBinding.clVip.visibility = +// if (MsMMKVUtils.isVip()) View.INVISIBLE else View.VISIBLE + val exampleSeriesNumAdapter = ExampleSeriesNumAdapter() + val manager = + LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + exampleDialogSeriesBinding.rvNumDialogSeries.layoutManager = manager + exampleDialogSeriesBinding.rvNumDialogSeries.adapter = exampleSeriesNumAdapter + exampleSeriesNumAdapter.submitList(splitDataTypes) + val exampleSeriesDataAdapter = ExampleSeriesDataAdapter() + val spanCount = 6 + val layoutManager = GridLayoutManager(context, spanCount) + exampleDialogSeriesBinding.rvDataDialogSeries.layoutManager = layoutManager + exampleDialogSeriesBinding.rvDataDialogSeries.adapter = exampleSeriesDataAdapter + exampleSeriesDataAdapter.submitList(splitDataLists[0]) + if (currentPosition != null) { + exampleSeriesDataAdapter.currentPosition = currentPosition.plus(1) + } + exampleSeriesNumAdapter.currentPosition = 0 + exampleSeriesNumAdapter.setOnItemClickListener { adapter, view, position -> + exampleSeriesDataAdapter.submitList(splitDataLists[position]) + exampleSeriesNumAdapter.currentPosition = position + exampleSeriesNumAdapter.notifyDataSetChanged() + exampleSeriesDataAdapter.notifyDataSetChanged() + } + exampleSeriesDataAdapter.setOnItemClickListener { adapter, view, position -> + val item = adapter.getItem(position) as VideoDetailsApi.Bean.Episode +// if (position > 0) { +// val beforeItem = adapter.getItem(position - 1) as VideoDetailsApi.Bean.Episode +// if (beforeItem.is_lock && !MsMMKVUtils.isVip()) { +// if (TranslatesUtils.translates() != null) { +// ToastUtils.show(TranslatesUtils.translates()?.jump_unlock_error.toString()) +// } else { +// ToastUtils.show("The prequel to this series is not unlocked. Please unlock the prequel before unlocking this series") +// } +// dismiss() +// return@setOnItemClickListener +// } +// } + seriesCallBack?.chooseSeries(item) + dismiss() + } + isCancelable = true + exampleDialogSeriesBinding.tvContentDialogSeries.text = data?.description + exampleDialogSeriesBinding.tvName.text = data?.name + exampleDialogSeriesBinding.tvTotal.text = buildString { + append("Total ") + append(data?.episode_total) + append(" Episodes") + } + Glide.with(this) + .load(data?.image_url) + .into(exampleDialogSeriesBinding.ivImg) + exampleDialogSeriesBinding.ivCloseDialogSeries.setOnClickListener { dismiss() } + builder.setView(exampleDialogSeriesBinding.root) + val dialog = builder.create() + dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) + val window = dialog.window + window?.decorView?.setPadding(0, 0, 0, 0) + window?.setGravity(Gravity.BOTTOM) + val layoutParams = window?.attributes + layoutParams?.width = WindowManager.LayoutParams.MATCH_PARENT + layoutParams?.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = layoutParams + return dialog + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesNumAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesNumAdapter.kt new file mode 100644 index 0000000..0fcbcaa --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleSeriesNumAdapter.kt @@ -0,0 +1,33 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.content.Context +import android.graphics.Color +import android.view.ViewGroup +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.localee.mireo.app.R + +class ExampleSeriesNumAdapter : + BaseQuickAdapter() { + var currentPosition = -1 + override fun onBindViewHolder( + holder: QuickViewHolder, + position: Int, + item: String? + ) { + holder.setText(R.id.example_tv_num_episodes, item) + if (currentPosition == position) { + holder.setTextColor(R.id.example_tv_num_episodes, context.getColor(R.color.white)) + } else { + holder.setTextColor(R.id.example_tv_num_episodes, Color.parseColor("#40FFFFFF")) + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.example_item_series_top, parent) + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleUnFavoriteDialog.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleUnFavoriteDialog.kt new file mode 100644 index 0000000..eccc222 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/ExampleUnFavoriteDialog.kt @@ -0,0 +1,31 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.app.Dialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.view.Gravity +import android.view.Window +import android.view.WindowManager +import com.localee.mireo.app.R + +class ExampleUnFavoriteDialog(context: Context) : Dialog(context) { + + init { + init() + } + + private fun init() { + requestWindowFeature(Window.FEATURE_NO_TITLE) + setContentView(R.layout.example_dialog_un_collection) + + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + window?.setLayout( + WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT + ) + window?.setGravity(Gravity.CENTER) + setCancelable(true) + } + +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/FfmpegRenderersFactory.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/FfmpegRenderersFactory.kt new file mode 100644 index 0000000..42363bc --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/FfmpegRenderersFactory.kt @@ -0,0 +1,44 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Handler +import androidx.media3.decoder.ffmpeg.FfmpegAudioRenderer +import androidx.media3.exoplayer.DefaultRenderersFactory +import androidx.media3.exoplayer.Renderer +import androidx.media3.exoplayer.audio.AudioRendererEventListener +import androidx.media3.exoplayer.audio.AudioSink +import androidx.media3.exoplayer.mediacodec.MediaCodecSelector + + +@SuppressLint("UnsafeOptInUsageError") +internal class FfmpegRenderersFactory(context: Context?) : DefaultRenderersFactory( + context!! +) { + init { + setExtensionRendererMode(EXTENSION_RENDERER_MODE_ON) + } + + override fun buildAudioRenderers( + context: Context, + extensionRendererMode: Int, + mediaCodecSelector: MediaCodecSelector, + enableDecoderFallback: Boolean, + audioSink: AudioSink, + eventHandler: Handler, + eventListener: AudioRendererEventListener, + out: ArrayList + ) { + out.add(FfmpegAudioRenderer()) + super.buildAudioRenderers( + context, + extensionRendererMode, + mediaCodecSelector, + enableDecoderFallback, + audioSink, + eventHandler, + eventListener, + out + ) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/LoadingLine.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/LoadingLine.kt new file mode 100644 index 0000000..d00d0e3 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/LoadingLine.kt @@ -0,0 +1,59 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.view.animation.AlphaAnimation +import android.view.animation.Animation +import android.view.animation.AnimationSet +import android.view.animation.ScaleAnimation +import android.widget.FrameLayout +import com.localee.mireo.app.R + + +class LoadingLine : FrameLayout { + private var loadView: View? = null + + constructor(context: Context) : super(context) { + initView(context) + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + initView(context) + } + + constructor( + context: Context, + attrs: AttributeSet?, + defStyleAttr: Int + ) : super(context, attrs, defStyleAttr) { + initView(context) + } + + private fun initView(mContext: Context) { + val view: View = LayoutInflater.from(mContext).inflate(R.layout.line_layout, null) + loadView = view.findViewById(R.id.loadingView) + this.addView(view) + } + + fun startAnimation() { + val scale = ScaleAnimation( + 0.3f, 1f, 1f, 1f, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, 0.5f + ) + val alpha = AlphaAnimation(1f, 0.2f) + scale.repeatCount = -1 + alpha.repeatCount = -1 + val set = AnimationSet(true) + set.addAnimation(scale) + set.addAnimation(alpha) + set.duration = 500 + loadView!!.startAnimation(set) + } + + fun endAnimation() { + loadView!!.clearAnimation() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/MyHeaderView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/MyHeaderView.kt new file mode 100644 index 0000000..81530a3 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/MyHeaderView.kt @@ -0,0 +1,60 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.drawable.AnimationDrawable +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.ImageView +import com.localee.mireo.app.R +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.constant.RefreshState +import com.scwang.smart.refresh.layout.simple.SimpleComponent + + +@SuppressLint("UseCompatLoadingForDrawables") +class MyHeaderView(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : + SimpleComponent(context, attrs, defStyleAttr) { + var animDrawable: AnimationDrawable + + constructor(context: Context?) : this(context, null) + constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0) + + init { + val view: View = LayoutInflater.from(context).inflate(R.layout.example_refresh_head, this) + val ref_head_img = view.findViewById(R.id.ref_head_img) + animDrawable = resources.getDrawable(R.drawable.my_refresh_head) as AnimationDrawable + ref_head_img.setImageDrawable(animDrawable) + + } + + override fun onFinish(layout: RefreshLayout, success: Boolean): Int { + if (success) { + animDrawable.stop() + } else { + animDrawable.stop() + } + super.onFinish(layout, success) + return 500 + } + + override fun onStateChanged( + refreshLayout: RefreshLayout, + oldState: RefreshState, + newState: RefreshState + ) { + when (newState) { + RefreshState.PullDownToRefresh -> + animDrawable.start() + + RefreshState.ReleaseToRefresh -> {} + RefreshState.Refreshing -> {} + else -> {} + } + } + +} + + + diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/TranslatesRes.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/TranslatesRes.kt new file mode 100644 index 0000000..85216ff --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/TranslatesRes.kt @@ -0,0 +1,251 @@ +package com.localee.mireo.app.ui.videoPaly + +class TranslatesRes( + val languages: List, + val last_update_time: String, + val translates: Translates +) { + + data class Language( + val cn_name: String, + val description: String, + val id: Int, + val is_default: Int, + val lang_key: String, + val show_name: String + ) + + data class Translates( + val alert_setting_message_logout: String, + val all: String, + val QualityChoose: String, + val Quality: String, + val ActivateVIP: String, + val VIP_Membership: String, + val supervalue: String, + val auto_sub: String, + val Membership: String, + val followustip: String, + val Explore_More: String, + val notificestip: String, + val follow_fb_pop: String, + val Go: String, + val go_vip_store: String, + val vip_info: String, + val buy: String, + val join_guyan_vip: String, + val donate_expire: String, + val copied: String, + val updatenowtitle: String, + val picture_error: String, + val updatenow: String, + val no_restored: String, + val open_photo_tips: String, + val Remaining: String, + val RewardRules: String, + val readme: String, + val no_episode: String, + val open_notification: String, + val open_notification_info: String, + val open_notification_later: String, + val open_notification_open: String, + val return_text: String, + val recommended_for_you: String, + val member_service_ag: String, + val feedback: String, + val title_about: String, + val feedbackhistory: String, + val feedbackdetails: String, + val please_click_here: String, + val member_service_agreement: String, + val vip_not_credit_notice_1: String, + val vip_not_credit_notice_2: String, + val vip_not_credit_notice_3: String, + val vip_refresh: String, + val alter_cancel: String, + val alter_confirm: String, + val rating: String, + val enjoy: String, + val buy_episode_notice: String, + val change_language: String, + val click_to_watch: String, + val tag_hot: String, + val tag_free: String, + val tag_new: String, + val coins: String, + val DeleteAccount: String, + val DeleteAccount_tips_1: String, + val DeleteAccount_tips_2: String, + val DeleteAccount_tips_3: String, + val DeleteAccount_tips_4: String, + val DeleteAccount_tips_5: String, + val DeleteAccount_tips_title_1: String, + val DeleteAccount_tips_title_2: String, + val DeleteAccount_tips_title_3: String, + val DeleteAccount_tips_title_4: String, + val DeleteAccount_tips_text_1: String, + val DeleteAccount_tips_text_2: String, + val DeleteAccount_tips_text_3: String, + val store: String, + val balance: String, + val unlock: String, + val unlock_tips: String, + val info_vip: String, + val info_gold: String, + val RewardCoins: String, + val store_tips_android: String, + val Restore: String, + val collection: String, + val player_ads_watched: String, + val watch_video_unlock: String, + val commom_highlight_agreement: String, + val commom_highlight_children: String, + val commom_highlight_privacy: String, + val commom_highlight_teenager: String, + val commom_highlight_third: String, + val commom_highlight_user: String, + val commom_text_subscribe: String, + val common_button_more: String, + val complete_episode: String, + val consumption_record: String, + val continue_watch: String, + val day: String, + val donate_coins: String, + val Extra: String, + val player_share_title: String, + val player_share_copy: String, + val player_share_ep: String, + val player_share_other: String, + val Donate: String, + val not_installed: String, + val Donate_new_user: String, + val Rules: String, + val share_rules_info: String, + val enter_keywords_search: String, + val episode_set: String, + val last_watch: String, + val watch: String, + val first_start_close: String, + val first_start_tips_message: String, + val first_start_title: String, + val free_from_ads: String, + val g_pay_cancel: String, + val g_pay_error: String, + val g_pay_success: String, + val google_login_exception: String, + val home: String, + val join: String, + val jump_unlock_error: String, + val lang_option_notice: String, + val language: String, + val language_text_system: String, + val language_text_system_tip: String, + val log_out: String, + val login: String, + val login_first: String, + val login_read_text: String, + val login_title_apple: String, + val login_title_facebook: String, + val login_title_tiktok: String, + val me: String, + val mine_text_renew: String, + val mine_text_tip: String, + val mine_title_browsing_istory: String, + val mine_title_consumption: String, + val mine_title_consumption_coins: String, + val mine_title_consumption_vip: String, + val mine_title_customer: String, + val mine_title_setting: String, + val mine_title_tourist: String, + val more: String, + val FreeSeries: String, + val view_all_shorts: String, + val manual_new_recommand_tag: String, + val manual_new_recommand_title: String, + val new_for_you: String, + val browsing_history: String, + val my_collection: String, + val edit: String, + val network_error: String, + val ad_error: String, + val success: String, + val no_more_data: String, + val no_spend: String, + val no_vip: String, + val not_collect_warning: String, + val not_allunlock_episodes: String, + val not_unlock_episodes: String, + val ok: String, + val Congratulations: String, + val player_text_episcode: String, + val privacy_policy: String, + val VisitWebsite: String, + val purchase_record: String, + val purchase_vip: String, + val quit: String, + val read_before_purchase: String, + val recharge_coins: String, + val recharge_wait_notice: String, + val recommand: String, + val rewards: String, + val recommand_head: String, + val recommand_series: String, + val refresh_Header_refreshing_text: String, + val refresh_auto_footer_idle_text: String, + val refresh_auto_footer_refreshing_rext: String, + val refresh_header_date_today_text: String, + val refresh_header_idle_text: String, + val refresh_header_last_time_text: String, + val refresh_header_none_last_date_text: String, + val refresh_header_pulling_text: String, + val refresh_success: String, + val reharge_vip_wait_notice: String, + val s_no_content: String, + val search: String, + val search_history: String, + val TrendingSearches: String, + val search_input: String, + val send_coins: String, + val Most_Trending: String, + val Top_Searched: String, + val New_Releases: String, + val send_coins_expire_notice: String, + val setting_title_out: String, + val settings: String, + val short_ranking: String, + val sin_in_with_google: String, + val facebook_top: String, + val stay_turned: String, + val system: String, + val tabbar_discover: String, + val tabbar_mine: String, + val tabbar_videos: String, + val theater: String, + val corner_marker_3: String, + val top_rankings: String, + val tips: String, + val coins_insufficient_and_recharge: String, + val top_up_now: String, + val try_again: String, + val unlocking_coins_notice: String, + val lastUnlock: String, + val user_agreement: String, + val vip_expire_time: String, + val vip_not_credit_notice: String, + val vip_update: String, + val vistor: String, + val watch_all: String, + val watch_now: String, + val Unlocking_whole_series: String, + val whole_series_num: String, + val alert_setting_message_signout: String, + val yes: String, + val top_up: String, + val my_wallet: String, + val ad_viewing_limit: String, + val tiktok_app_tips: String, + val kick_out_login: String, + val retry: String, + val no_network: String + ) +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayAdapter.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayAdapter.kt new file mode 100644 index 0000000..c1e72fb --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayAdapter.kt @@ -0,0 +1,49 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.content.Context +import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatImageView +import androidx.media3.ui.PlayerView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.localee.mireo.app.R +import com.localee.mireo.app.http.api.VideoDetailsApi + +class VideoPlayAdapter : + BaseQuickAdapter() { + var currentPlayingPosition = 0 + var playerDetailCollection: PlayerDetailCollection? = null + var shortVideo: VideoDetailsApi.Bean.ShortPlayInfo? = null + + interface PlayerDetailCollection { + fun collection(episode: VideoDetailsApi.Bean.Episode) + } + + override fun onBindViewHolder( + holder: QuickViewHolder, + position: Int, + item: VideoDetailsApi.Bean.Episode? + ) { + val exampleDetailPlayerView = holder.getView(R.id.item_detail_view) + val playerView = exampleDetailPlayerView.findViewById(R.id.player_view) + val imageView = + playerView.findViewById(R.id.example_iv_collection_controller) + imageView.setOnClickListener { item?.let { it1 -> playerDetailCollection?.collection(it1) } } + if (position == currentPlayingPosition) { + item?.let { shortVideo?.let { it1 -> + exampleDetailPlayerView.setPlayInfo(it, it1) + } + } + } else { + exampleDetailPlayerView.stop() + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.example_item_detail, parent) + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt new file mode 100644 index 0000000..9f3853b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/ui/videoPaly/VideoPlayerView.kt @@ -0,0 +1,364 @@ +package com.localee.mireo.app.ui.videoPaly + +import android.annotation.SuppressLint +import android.content.Context +import android.net.Uri +import android.text.TextUtils +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.FrameLayout +import android.widget.SeekBar +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatSeekBar +import androidx.appcompat.widget.AppCompatTextView +import androidx.media3.common.MediaItem +import androidx.media3.common.PlaybackException +import androidx.media3.common.Player +import androidx.media3.datasource.DataSource +import androidx.media3.datasource.DefaultDataSourceFactory +import androidx.media3.exoplayer.DefaultRenderersFactory +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.exoplayer.hls.HlsMediaSource +import androidx.media3.exoplayer.source.MediaSource +import androidx.media3.exoplayer.source.ProgressiveMediaSource +import com.bumptech.glide.Glide +import com.hjq.shape.view.ShapeTextView +import com.hjq.toast.ToastUtils +import com.localee.mireo.app.R +import com.localee.mireo.app.databinding.ExampleDetailPlayerViewBinding +import com.localee.mireo.app.http.api.VideoDetailsApi +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.other.MsConstants.ExampleDetailCanPlay +import com.localee.mireo.app.other.MsConstants.seek +import com.localee.mireo.app.utils.TranslatesUtils +import com.localee.mireo.app.utils.formatNumber +import com.localee.mireo.app.utils.formatTimestamp +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.MainScope +import kotlinx.coroutines.cancel +import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.greenrobot.eventbus.EventBus + + +class VideoPlayerView(context: Context, attrs: AttributeSet?) : + FrameLayout(context, attrs) { + @SuppressLint("UnsafeOptInUsageError") + private var builder = ExoPlayer.Builder(context, FfmpegRenderersFactory(context)) + .setRenderersFactory(DefaultRenderersFactory(context).setEnableDecoderFallback(true)) + private var player: ExoPlayer? = builder.build() + private val viewLifecycleScope = MainScope() + private var isDragging = false + private var exampleSeekbarPlayerController: AppCompatSeekBar? = null + private var exampleProgressJob: Job? = null + private var exampleIvPlayPlayerController: AppCompatImageView? = null + private var exampleIvCollectionController: AppCompatImageView? = null + private var exampleIvBackController: AppCompatImageView? = null + private var ivCover: AppCompatImageView? = null + private var exampleTvEpisodePlayerController: ShapeTextView? = null + private var ivEpisodePlayerController: AppCompatImageView? = null + private var exampleTvDesPlayerController: AppCompatTextView? = null + private var exampleTvCollectionNumController: AppCompatTextView? = null + private var exampleTvTitlePlayerController: AppCompatTextView? = null + private var tvExampleSeries: AppCompatTextView? = null + private var tv_player_seek_time: AppCompatTextView? = null + private var example_iv_quality: AppCompatImageView? = null + private var loadingLine: LoadingLine? = null + private var iv_des_change: AppCompatImageView? = null + private var example_iv_share: AppCompatImageView? = null + private var isExpanded = false + private var progress: Long = 0L + + init { + val inflate = + LayoutInflater.from(context) + .inflate(R.layout.example_detail_player_view, this, true) + val exampleDetailPlayerViewBinding = ExampleDetailPlayerViewBinding.bind(inflate) + exampleDetailPlayerViewBinding.playerView.player = player + exampleSeekbarPlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_seekBar_player_controller) + exampleIvPlayPlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_play_player_controller) + exampleIvCollectionController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_collection_controller) + exampleIvBackController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_back_controller) + ivCover = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_cover_detail) + tvExampleSeries = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_example_series) + exampleTvEpisodePlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_tv_episode_player_controller) + ivEpisodePlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_episode_player_controller) + exampleTvDesPlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_tv_des_player_controller) + exampleTvCollectionNumController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_tv_collection_num_controller) + exampleTvTitlePlayerController = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_tv_title_player_controller) + tv_player_seek_time = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.tv_player_seek_time) + loadingLine = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.load_line) + iv_des_change = exampleDetailPlayerViewBinding.playerView.findViewById(R.id.iv_des_change) + example_iv_share = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_share) + example_iv_quality = + exampleDetailPlayerViewBinding.playerView.findViewById(R.id.example_iv_quality) + player?.addListener(object : Player.Listener { + override fun onPlaybackStateChanged(playbackState: Int) { + super.onPlaybackStateChanged(playbackState) + when (playbackState) { + Player.STATE_BUFFERING -> { + loadingLine?.visibility = VISIBLE + loadingLine?.postDelayed({ loadingLine?.startAnimation() }, 200) + } + + Player.STATE_READY -> { + exampleIvPlayPlayerController?.isEnabled = true + if (ExampleDetailCanPlay) { + if (seek && progress > 0) { + player?.seekTo(progress) + seek = false + } + play() + setProgress() + } + ivCover?.visibility = View.INVISIBLE + loadingLine?.visibility = View.INVISIBLE + loadingLine?.endAnimation() + } + + Player.STATE_ENDED -> { + EventBus.getDefault() + .post(MsConstants.Constants_DetailPlayerView_PLAYER_STATUS_FINISHExample) + } + + Player.STATE_IDLE -> { + exampleIvPlayPlayerController?.isEnabled = false + } + } + } + + override fun onPlayerError(error: PlaybackException) { + super.onPlayerError(error) + ivCover?.visibility = View.INVISIBLE + loadingLine?.visibility = View.INVISIBLE + } + }) + exampleIvPlayPlayerController?.setOnClickListener { + if (MsConstants.ExampleDetailPlaying) { + pause() + } else { + play() + } + } + iv_des_change?.setOnClickListener { + isExpanded = !isExpanded + updateTextViewState(exampleTvDesPlayerController) + } + exampleTvDesPlayerController?.setOnClickListener { + isExpanded = !isExpanded + updateTextViewState(exampleTvDesPlayerController) + } +// example_iv_share?.setOnClickListener { +// EventBus.getDefault() +// .post(MsConstants.CONSTANTS_share) +// } + example_iv_quality?.setOnClickListener { + EventBus.getDefault() + .post(MsConstants.CONSTANTS_quality) + } + } + + + private fun setProgress() { + exampleProgressJob?.cancel() + val duration = player!!.duration + exampleSeekbarPlayerController?.max = duration.toInt() + exampleSeekbarPlayerController?.progress = player!!.currentPosition.toInt() + exampleSeekbarPlayerController?.setOnSeekBarChangeListener(null) + exampleProgressJob = viewLifecycleScope.launch { + while (isActive) { + if (!isDragging) { + withContext(Dispatchers.Main) { + exampleSeekbarPlayerController?.progress = player!!.currentPosition.toInt() + } + } + delay(1000) + } + } + + exampleSeekbarPlayerController?.setOnSeekBarChangeListener(object : + SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + if (fromUser) { + seekTo(progress) + } + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) { + tv_player_seek_time?.visibility = VISIBLE + isDragging = true + } + + override fun onStopTrackingTouch(seekBar: SeekBar?) { + isDragging = false + tv_player_seek_time?.visibility = INVISIBLE + } + }) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + exampleProgressJob?.cancel() + } + + fun play() { + player?.play() + exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_stop) + MsConstants.ExampleDetailPlaying = true + isDragging = false + } + + fun pause() { + player?.pause() + exampleIvPlayPlayerController?.setImageResource(R.mipmap.iv_example_play) + MsConstants.ExampleDetailPlaying = false + isDragging = true + } + + private fun seekTo(progress: Int) { + player?.seekTo(progress.toLong()) + seekTime() + } + + private fun seekTime() { + val currentPosition = player!!.currentPosition + val currentTime = formatTimestamp(currentPosition / 1000) + val totalDuration = player!!.duration + val totalTime = formatTimestamp(totalDuration / 1000) + tv_player_seek_time?.text = "$currentTime/$totalTime" + } + + fun stop() { + player?.stop() + } + + fun lastProgress(): Long { + return player?.currentPosition ?: 0 + } + + fun release() { + viewLifecycleScope.cancel() + exampleProgressJob?.cancel() + exampleProgressJob = null + player?.release() + player = null + } + + @SuppressLint("UnsafeOptInUsageError") + fun setPlayInfo( + episode: VideoDetailsApi.Bean.Episode, + shortVideo: VideoDetailsApi.Bean.ShortPlayInfo? + ) { + if (shortVideo != null) { + ExampleDetailCanPlay = true + ivCover?.let { + Glide.with(context).load(shortVideo.image_url) + .into(it) + } + progress = if (episode.play_seconds?.isNotEmpty() == true) { + episode.play_seconds!!.toLong() + } else { + 0 + } + seek = true + ivCover?.visibility = View.VISIBLE + exampleTvTitlePlayerController?.text = shortVideo.name + if (TranslatesUtils.translates() != null) { + exampleTvEpisodePlayerController?.text = TranslatesUtils.replace( + TranslatesUtils.translates()?.episode_set.toString(), + episode.episode.toString() + ).plus(" / ").plus( + TranslatesUtils.replace( + TranslatesUtils.translates()?.complete_episode.toString(), + shortVideo.episode_total.toString() + ) + ) + tvExampleSeries?.text = TranslatesUtils.translates()?.recommand_series + } else { + exampleTvEpisodePlayerController?.text = + "EP.".plus(episode.episode).plus(" / EP.") + .plus(shortVideo.episode_total) + tvExampleSeries?.text = context.getString(R.string.example_series) + } + exampleTvDesPlayerController?.text = shortVideo.description + exampleTvCollectionNumController?.text = formatNumber(shortVideo.collect_total) + exampleTvCollectionNumController?.setTextColor( + if (shortVideo.is_collect) resources.getColor( + R.color.example_color_F56490 + ) else resources.getColor(R.color.white) + ) + exampleIvCollectionController?.setImageResource(if (shortVideo.is_collect) R.mipmap.iv_example_collection_h else R.mipmap.iv_example_collection_n) + player?.setMediaSource(buildMediaSource(episode.video_url)) + player?.prepare() + exampleTvEpisodePlayerController?.setOnClickListener { + if (!episode.is_lock) { + EventBus.getDefault() + .post(MsConstants.Constants_RecommendPlayerView_DramaSeriesExample) + } + } + ivEpisodePlayerController?.setOnClickListener { + if (!episode.is_lock) { + EventBus.getDefault() + .post(MsConstants.Constants_RecommendPlayerView_DramaSeriesExample) + } + } + exampleIvBackController?.setOnClickListener { + EventBus.getDefault() + .post(MsConstants.Constants_RecommendPlayerView_CLOSEExample) + } + updateTextViewState(exampleTvDesPlayerController) + } else { + ToastUtils.show("There is a problem with the video source") + } + } + + @SuppressLint("SetTextI18n") + private fun updateTextViewState(textView: AppCompatTextView?) { + if (isExpanded) { + textView?.maxLines = 5 + textView?.ellipsize = TextUtils.TruncateAt.END + iv_des_change?.setImageResource(R.mipmap.iv_des_top) + } else { + textView?.maxLines = 2 + textView?.ellipsize = TextUtils.TruncateAt.END + iv_des_change?.setImageResource(R.mipmap.iv_des_down) + } + textView?.post { + val ellipsisCount = textView.layout?.getEllipsisCount(textView.lineCount - 1) + if (ellipsisCount != null) { + if (ellipsisCount <= 0 && textView.maxLines == 2) { + iv_des_change?.visibility = View.INVISIBLE + } + } + } + } + + @SuppressLint("UnsafeOptInUsageError") + private fun buildMediaSource(videoPath: String): MediaSource { + val dataSourceFactory: DataSource.Factory = DefaultDataSourceFactory(context, "guyantv") + + return if (videoPath.endsWith(".m3u8")) { + HlsMediaSource.Factory(dataSourceFactory) + .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath))) + } else { + ProgressiveMediaSource.Factory(dataSourceFactory) + .createMediaSource(MediaItem.fromUri(Uri.parse(videoPath))) + } + } +} diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/DHStringUtils.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/DHStringUtils.kt new file mode 100644 index 0000000..eddb19e --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/DHStringUtils.kt @@ -0,0 +1,52 @@ +package com.localee.mireo.app.utils + +import android.text.TextUtils +import okhttp3.FormBody +import okhttp3.RequestBody +import org.json.JSONObject +import java.math.BigDecimal +import java.math.RoundingMode + +object DHStringUtils { + fun divideAndFormat(dividend: Int, divisor: Int): String { + return BigDecimal(dividend) + .divide(BigDecimal(divisor), 2, RoundingMode.HALF_EVEN) + .toPlainString() + } + + fun getLocalizedString(key: String): String? { + val resultString = MsMMKVUtils.getLangs() + if(!TextUtils.isEmpty(resultString)){ + return run { + val resultObject = JSONObject(resultString) + resultObject.optString(key, null) + } + }else{ + return "" + } + + } + fun getLocalizedJSONObject(): JSONObject { + val resultString = MsMMKVUtils.getLangs() + if(!TextUtils.isEmpty(resultString)){ + return run { + val resultObject = JSONObject(resultString) + resultObject + } + }else{ + return JSONObject() + } + + } + + fun getPublicRequest(map: MutableMap): RequestBody { + val builder = FormBody.Builder() + for (key in map.keys) { + builder.add(key, map[key]) + } + val requestBody: RequestBody = builder.build() + return requestBody + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/ExampleStand.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/ExampleStand.kt new file mode 100644 index 0000000..df005e6 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/ExampleStand.kt @@ -0,0 +1,170 @@ +package com.localee.mireo.app.utils + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Build +import java.text.SimpleDateFormat +import java.time.Instant +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter +import java.util.Calendar +import java.util.Date +import java.util.Locale +import java.util.TimeZone + +inline fun Any.saveAs(): T { + return this as T +} + +@Suppress("UNCHECKED_CAST") +fun Any.standAsUnChecked(): T { + return this as T +} + +var lastClickTime = 0L +fun singleClick(during: Long = 500L, callBack: () -> Unit) { + val now = Date().time + if (now - lastClickTime > during) { + callBack() + } + lastClickTime = now +} + + +fun getCurrentTimeZone(): String { + return createGmtOffsetString(true, true, TimeZone.getDefault().rawOffset) +} + +fun createGmtOffsetString( + includeGmt: Boolean, includeMinuteSeparator: Boolean, offsetMillis: Int +): String { + var offsetMinutes = offsetMillis / 60000 + var sign = '+' + if (offsetMinutes < 0) { + sign = '-' + offsetMinutes = -offsetMinutes + } + val builder: StringBuilder = StringBuilder(9) + if (includeGmt) { + builder.append("GMT") + } + builder.append(sign) + appendNumber(builder, 2, offsetMinutes / 60) + if (includeMinuteSeparator) { + builder.append(':') + } + appendNumber(builder, 2, offsetMinutes % 60) + return builder.toString() +} + +private fun appendNumber(builder: StringBuilder, count: Int, value: Int) { + val string = value.toString() + for (i in 0 until count - string.length) { + builder.append('0') + } + builder.append(string); +} + + +fun formatNumber(num: Int): String { + return when { + num >= 1000000 -> "${(num / 1000000.0).format(1)}M" + num >= 1000 -> "${(num / 1000.0).format(1)}K" + else -> num.toString() + } +} + +fun formatNumberByLong(num: Long): String { + return when { + num >= 1000000 -> "${(num / 1000000.0).format(1)}M" + num >= 1000 -> "${(num / 1000.0).format(1)}K" + else -> num.toString() + } +} + +fun formatNumberHeat(num: Long): String { + return when { + num >= 1000000 -> "${(num / 1000000.0).format(1)}M" + else -> num.toString() + } +} + +private fun Double.format(digits: Int) = "%.${digits}f".format(this) + +fun formatTimestamp(timestampInSeconds: Long): String { + val minutes = timestampInSeconds / 60 + val seconds = timestampInSeconds % 60 + return String.format("%02d:%02d", minutes, seconds) +} + +@SuppressLint("SimpleDateFormat") +fun transToString(time: Long): String { + val date = Date(time * 1000) + return SimpleDateFormat("yyyy-MM-dd").format(date) +} +// +//fun getAdvertisingIdInfo(context: Context): String { +// try { +// return AdvertisingIdClient.getAdvertisingIdInfo(context).id.toString() +// } catch (e: Exception) { +// e.printStackTrace() +// } +// return "" +//} +// +//fun shouldShowPopup(): Boolean { +// val lastPopupTime = ExampleMMKVUtils.getMMKV().getLong(CONSTANTS_PREF_LAST_POPUP_TIME, 0) +// val currentTime = System.currentTimeMillis() +// +// return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS +//} +// +//fun shouldShowNotification(): Boolean { +// val lastPopupTime = +// ExampleMMKVUtils.getMMKV().getLong(CONSTANTS_PREF_LAST_POPUP_TIME_Notification, 0) +// val currentTime = System.currentTimeMillis() +// +// return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS +//} +// +//fun shouldShowVIP(): Boolean { +// val lastPopupTime = +// ExampleMMKVUtils.getMMKV().getLong(CONSTANTS_PREF_LAST_POPUP_TIME_VIP, 0) +// val currentTime = System.currentTimeMillis() +// +// return currentTime - lastPopupTime > ONE_DAY_IN_MILLIS_VIP +//} + +fun getUserAgent(): String { + return System.getProperty("http.agent") ?: "" +} + +fun getNowTime(): String { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // API 26 及以上,使用 LocalDateTime 和 DateTimeFormatter + val currentDateTime = LocalDateTime.now() + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH") + currentDateTime.format(formatter) + } else { + // API 26 以下,使用 SimpleDateFormat 和 Calendar + val calendar = Calendar.getInstance() + val sdf = SimpleDateFormat("yyyy-MM-dd-HH", Locale.getDefault()) + sdf.format(calendar.time) + } +} + + +fun getNowTimeToAd(): Long { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + // API 26 及以上,使用 Instant.now().epochSecond + Instant.now().epochSecond + } else { + // API 26 以下,使用 System.currentTimeMillis() 转换为秒级时间戳 + System.currentTimeMillis() / 1000L + } +} + +fun dpToPx(dp: Int, context: Context): Int { + return (dp * context.resources.displayMetrics.density).toInt() +} + diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsMMKVUtils.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsMMKVUtils.kt new file mode 100644 index 0000000..e34c57b --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsMMKVUtils.kt @@ -0,0 +1,52 @@ +package com.localee.mireo.app.utils + +import com.google.gson.Gson +import com.localee.mireo.app.http.api.UserInfoRes +import com.localee.mireo.app.other.MsConstants +import com.tencent.mmkv.MMKV + + +object MsMMKVUtils { + private var mmkv: MMKV? = null + + + fun getMMKV(): MMKV { + if (mmkv == null) { + mmkv = MMKV.defaultMMKV() + } + return mmkv!! + } + + fun saveToken(token :String){ + getMMKV().putString(MsConstants.ACCESS_TOKEN, token) + } + + fun getToken(): String { + val close = getMMKV().getString(MsConstants.ACCESS_TOKEN, "") + return close.toString(); + } + + fun saveLangs(token: String) { + + getMMKV().putString(MsConstants.APP_LANG, token) + } + fun getLangs(): String { + val close = getMMKV().getString(MsConstants.APP_LANG, "") + return close.toString(); + } + + fun saveUserInfo(infoRes: UserInfoRes?) { + val toJson = Gson().toJson(infoRes) + getMMKV() + .putString(MsConstants.CONSTANTS_User_STRING, toJson) + } + + fun getUserInfo(): UserInfoRes? { + val string = getMMKV().getString(MsConstants.CONSTANTS_User_STRING, "{}") + if ("{}" == string) { + return UserInfoRes.createWithDefaults() + } + return Gson().fromJson(string, UserInfoRes::class.java) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsSystemUtlis.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsSystemUtlis.kt new file mode 100644 index 0000000..1d0f310 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/MsSystemUtlis.kt @@ -0,0 +1,242 @@ +package com.localee.mireo.app.utils + +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.Bitmap +import android.graphics.BitmapShader +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.graphics.RectF +import android.graphics.Shader +import android.net.ConnectivityManager +import android.net.Uri +import android.provider.Settings +import android.util.Log +import java.net.NetworkInterface + + +object MsSystemUtlis { + private const val TAG = "SystemUtlis" + + fun getVerNameInfo(context: Context): String { + var loading = "" + try { + val status = context.packageName + loading = context.packageManager + .getPackageInfo(status, 0).versionName + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + } + return loading + } + + + fun getSchemeFromUrl(url: String?): String? { + var consunmptioni: MutableMap = mutableMapOf() + consunmptioni.put("equivalent", 946.0) + consunmptioni.put("telegra", 781.0) + consunmptioni.put("prods", 152.0) + consunmptioni.put("excluding", 331.0) + while (consunmptioni.size > 80) { + break + } + + + val message = Uri.parse(url) + var expIb: Double = 7816.0 + if (expIb <= 117.0) { + } + + + return message.scheme + } + + fun getVerCodeInfo(context: Context): Int { + + var loading = 1 + try { + + + val status = context.packageName + loading = context.packageManager + .getPackageInfo(status, 0).versionCode + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + } + + return loading + } + + fun getDeviceId(context: Context): String? { + var tilteR: Boolean = true + while (tilteR) { + break + } + + + val m_view = + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID) + var wholef: MutableList = mutableListOf() + wholef.add(151.0) + wholef.add(980.0) + if (wholef.size > 88) { + } + + + + + return when { + m_view?.isNotEmpty() == true -> m_view + else -> { + var update_fr: Boolean = true + + + Log.e(TAG, "no androidId") + var themesMO: Long = 9562L + if (themesMO == 62L) { + } + + + null + } + } + } + + fun isNetworkConnected(): Boolean { + try { + val interfaces: List = + NetworkInterface.getNetworkInterfaces().asSequence() + .toList() + .filter { it.isUp } + + for (networkInterface in interfaces) { + val hardwareAddress = networkInterface.hardwareAddress + if (hardwareAddress != null && !isLoopbackAddress(hardwareAddress)) { + return true + } + } + } catch (e: java.net.SocketException) { + e.printStackTrace() + } + + return false + } + + private fun isLoopbackAddress(address: ByteArray): Boolean { + return address.size == 6 && address[0] == 0x00.toByte() && address[1] == 0x00.toByte() && address[2] == 0x5E.toByte() + } + + /** + * check NetworkAvailable + * + * @param context + * @return + */ + fun isNetworkAvailable(context: Context): Boolean { + val manager = context.applicationContext.getSystemService( + Context.CONNECTIVITY_SERVICE + ) as ConnectivityManager + if (null == manager) { + return false + } + val info = manager.activeNetworkInfo + return null != info && info.isAvailable + } + + + fun openFacebookProfile(context: Context, username: String) { + val facebookUrl = "https://www.facebook.com/" + username + try { + val facebookAppUrl = "fb://profile/" + username + val facebookIntent = Intent(Intent.ACTION_VIEW, Uri.parse(facebookAppUrl)) + context.startActivity(facebookIntent) + } catch (e: Exception) { + val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse(facebookUrl)) + context.startActivity(webIntent) + } + } + + fun openTiktok(context: Context, userId: String) { + val tiktokUserProfileUrl = "tiktok://user/profile/$userId" + val intent = Intent(Intent.ACTION_VIEW) + intent.setData(Uri.parse(tiktokUserProfileUrl)) + val packageManager: PackageManager = context.getPackageManager() + val apps = packageManager.queryIntentActivities(intent, 0) + if (apps.size > 0) { + context.startActivity(intent) + } else { + val playStoreIntent = Intent( + Intent.ACTION_VIEW, + Uri.parse("market://details?id=com.zhiliaoapp.musically") + ) + context.startActivity(playStoreIntent) + } + + } + + fun openYouTube(context: Context, channelId: String) { + val youtubeUrl = "https://www.youtube.com/channel/$channelId" + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(youtubeUrl)) + intent.putExtra( + Intent.EXTRA_REFERRER, + Uri.parse("android-app://com.google.android.youtube") + ) + val packageManager: PackageManager = context.getPackageManager() + val apps = packageManager.queryIntentActivities(intent, 0) + if (apps.size > 0) { + context.startActivity(intent) + } else { + val playStoreIntent = Intent( + Intent.ACTION_VIEW, + Uri.parse("market://details?id=com.google.android.youtube") + ) + context.startActivity(playStoreIntent) + } + + } + + fun openInstagram(context: Context, username: String) { + val instagramUrl = "https://www.instagram.com/$username" + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(instagramUrl)) + intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://com.instagram.android")) + val packageManager: PackageManager = context.getPackageManager() + val apps = packageManager.queryIntentActivities(intent, 0) + if (apps.size > 0) { + context.startActivity(intent) + } else { + val playStoreIntent = + Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.instagram.android")) + context.startActivity(playStoreIntent) + } + + } + + fun getScaledBitmap(originalBitmap: Bitmap, maxWidth: Int, maxHeight: Int): Bitmap { + val width = originalBitmap.width + val height = originalBitmap.height + val scaleFactor = Math.min(maxWidth.toFloat() / width, maxHeight.toFloat() / height) + + val newWidth = (width * scaleFactor).toInt() + val newHeight = (height * scaleFactor).toInt() + + return Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, true) + } + + fun getRoundedCornerBitmap(bitmap: Bitmap): Bitmap { + val output = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(output) + val paint = Paint() + val rect = Rect(0, 0, bitmap.width, bitmap.height) + val roundRect = RectF(rect) + + paint.isAntiAlias = true + paint.shader = BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) + canvas.drawRoundRect(roundRect, 10f, 10f, paint) + + return output + } + + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/TranslatesUtils.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/TranslatesUtils.kt new file mode 100644 index 0000000..c5fe2ea --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/utils/TranslatesUtils.kt @@ -0,0 +1,52 @@ +package com.localee.mireo.app.utils + +import android.text.Spannable +import android.text.SpannableString +import android.text.Spanned +import android.text.style.ForegroundColorSpan +import android.text.style.UnderlineSpan +import android.widget.TextView +import com.google.gson.Gson +import com.localee.mireo.app.other.MsConstants +import com.localee.mireo.app.ui.videoPaly.TranslatesRes + +object TranslatesUtils { + fun saveTranslates(infoRes: TranslatesRes.Translates?) { + val toJson = Gson().toJson(infoRes) + MsMMKVUtils.getMMKV() + .putString(MsConstants.CONSTANTS_Translates_STRING, toJson) + } + + fun translates(): TranslatesRes.Translates? { + val string = MsMMKVUtils.getMMKV() + .getString(MsConstants.CONSTANTS_Translates_STRING, "") + return Gson().fromJson(string, TranslatesRes.Translates::class.java) + } + + fun replace(string: String, new: String): String { + return string.replace("##", new) + } + + fun replaces(string: String, new1: String, new2: String): String { + val replace = string.replace("#1#", new1) + return replace.replace("#2#", new2) + } + + fun highlightCharacter(textView: TextView, charToHighlight: String?, newColor: Int) { + val originalText = textView.text.toString() + val index = originalText.indexOf(charToHighlight.toString()) + if (index >= 0) { + val spannableString = SpannableString(originalText) + if (charToHighlight != null) { + spannableString.setSpan( + ForegroundColorSpan(newColor), + index, + index + charToHighlight.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + spannableString.setSpan(UnderlineSpan(), index, index + charToHighlight.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + textView.text = spannableString + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/BrowserView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/BrowserView.kt new file mode 100644 index 0000000..197b574 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/BrowserView.kt @@ -0,0 +1,362 @@ +package com.localee.mireo.app.widget + +import android.annotation.TargetApi +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.net.http.SslError +import android.os.Build +import android.text.TextUtils +import android.util.AttributeSet +import android.webkit.* +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.LifecycleOwner +import com.hjq.base.BaseActivity +import com.hjq.base.BaseActivity.OnActivityCallback +import com.hjq.base.BaseDialog +import com.hjq.base.action.ActivityAction +import com.localee.mireo.app.R +import com.localee.mireo.app.other.AppConfig +import com.localee.mireo.app.other.PermissionCallback +import com.localee.mireo.app.ui.dialog.InputDialog +import com.localee.mireo.app.ui.dialog.MessageDialog +import com.localee.mireo.app.ui.dialog.TipsDialog +import com.hjq.permissions.Permission +import com.hjq.permissions.XXPermissions +import com.hjq.widget.layout.NestedScrollWebView +import timber.log.Timber +import java.util.* + +@Suppress("SetJavaScriptEnabled") +class BrowserView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = android.R.attr.webViewStyle, defStyleRes: Int = 0) : + NestedScrollWebView(context, attrs, defStyleAttr, defStyleRes), + LifecycleEventObserver, ActivityAction { + + companion object { + + init { + setWebContentsDebuggingEnabled(AppConfig.isDebug()) + } + } + + init { + val settings: WebSettings = settings + settings.allowFileAccess = true + settings.setGeolocationEnabled(true) + //settings.setSavePassword(true); + // 开启 JavaScript + settings.javaScriptEnabled = true + settings.javaScriptCanOpenWindowsAutomatically = true + settings.loadsImagesAutomatically = true + settings.domStorageEnabled = true + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW + } + + isVerticalScrollBarEnabled = false + isHorizontalScrollBarEnabled = false + } + + override fun getUrl(): String? { + return super.getOriginalUrl() ?: return super.getUrl() + } + + fun setLifecycleOwner(owner: LifecycleOwner) { + owner.lifecycle.addObserver(this) + } + + /** + * [LifecycleEventObserver] + */ + override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) { + } + + fun onDestroy() { + stopLoading() + clearHistory() + setBrowserChromeClient(null) + setBrowserViewClient(null) + removeAllViews() + destroy() + } + + @Deprecated("Please use {@link BrowserViewClient}", ReplaceWith( + "super.setWebViewClient(client)", + "com.hjq.widget.layout.NestedScrollWebView")) + override fun setWebViewClient(client: WebViewClient) { + super.setWebViewClient(client) + } + + fun setBrowserViewClient(client: BrowserViewClient?) { + if (client == null) { + super.setWebViewClient(WebViewClient()) + return + } + super.setWebViewClient(client) + } + + @Deprecated("Please use {@link BrowserChromeClient}", ReplaceWith( + "super.setWebChromeClient(client)", + "com.hjq.widget.layout.NestedScrollWebView")) + override fun setWebChromeClient(client: WebChromeClient?) { + super.setWebChromeClient(client) + } + + fun setBrowserChromeClient(client: BrowserChromeClient?) { + super.setWebChromeClient(client) + } + + open class BrowserViewClient : WebViewClient() { + + override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) { + MessageDialog.Builder(view.context) + .setMessage(R.string.common_web_ssl_error_title) + .setConfirm(R.string.common_web_ssl_error_allow) + .setCancel(R.string.common_web_ssl_error_reject) + .setCancelable(false) + .setListener(object : MessageDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?) { + handler.proceed() + } + + override fun onCancel(dialog: BaseDialog?) { + handler.cancel() + } + }) + .show() + } + + @TargetApi(Build.VERSION_CODES.M) + override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) { + if (request.isForMainFrame) { + onReceivedError(view, error.errorCode, error.description.toString(), request.url.toString()) + } + } + + override fun onReceivedError(view: WebView, errorCode: Int, description: String, failingUrl: String) { + super.onReceivedError(view, errorCode, description, failingUrl) + } + + @TargetApi(Build.VERSION_CODES.N) + override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { + return shouldOverrideUrlLoading(view, request.url.toString()) + } + + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + Timber.i("WebView shouldOverrideUrlLoading:%s", url) + val scheme: String = Uri.parse(url).scheme ?: return false + when (scheme) { + "http", "https" -> view.loadUrl(url) + "tel" -> dialing(view, url) + } + return true + } + + protected fun dialing(view: WebView, url: String) { + val context: Context = view.context + MessageDialog.Builder(context) + .setMessage(String.format( + view.resources.getString(R.string.common_web_call_phone_title), + url.replace("tel:", ""))) + .setConfirm(R.string.common_web_call_phone_allow) + .setCancel(R.string.common_web_call_phone_reject) + .setCancelable(false) + .setListener(object : MessageDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?) { + val intent = Intent(Intent.ACTION_DIAL) + intent.data = Uri.parse(url) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + } + }) + .show() + } + } + + open class BrowserChromeClient constructor(private val webView: BrowserView) : WebChromeClient() { + + override fun onJsAlert(view: WebView, url: String, message: String, result: JsResult): Boolean { + val activity: Activity = webView.getActivity() ?: return false + TipsDialog.Builder(activity) + .setIcon(TipsDialog.ICON_WARNING) + .setMessage(message) + .setCancelable(false) + .addOnDismissListener(object : BaseDialog.OnDismissListener { + + override fun onDismiss(dialog: BaseDialog?) { + result.confirm() + } + }) + .show() + return true + } + + override fun onJsConfirm(view: WebView, url: String, message: String, result: JsResult): Boolean { + val activity: Activity = webView.getActivity() ?: return false + MessageDialog.Builder(activity) + .setMessage(message) + .setCancelable(false) + .setListener(object : MessageDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?) { + result.confirm() + } + + override fun onCancel(dialog: BaseDialog?) { + result.cancel() + } + }) + .show() + return true + } + + override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean { + val activity: Activity = webView.getActivity() ?: return false + InputDialog.Builder(activity) + .setContent(defaultValue) + .setHint(message) + .setCancelable(false) + .setListener(object : InputDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?, content: String) { + result.confirm(content) + } + + override fun onCancel(dialog: BaseDialog?) { + result.cancel() + } + }) + .show() + return true + } + + override fun onGeolocationPermissionsShowPrompt(origin: String, callback: GeolocationPermissions.Callback) { + val activity: Activity = webView.getActivity() ?: return + MessageDialog.Builder(activity) + .setMessage(R.string.common_web_location_permission_title) + .setConfirm(R.string.common_web_location_permission_allow) + .setCancel(R.string.common_web_location_permission_reject) + .setCancelable(false) + .setListener(object : MessageDialog.OnListener { + + override fun onConfirm(dialog: BaseDialog?) { + XXPermissions.with(activity) + .permission(Permission.ACCESS_FINE_LOCATION) + .permission(Permission.ACCESS_COARSE_LOCATION) + .request(object : PermissionCallback() { + override fun onGranted( + permissions: MutableList?, + all: Boolean + ) { + if (all) { + callback.invoke(origin, true, true) + } + } + }) + } + + override fun onCancel(dialog: BaseDialog?) { + callback.invoke(origin, false, true) + } + }) + .show() + } + + override fun onShowFileChooser(webView: WebView, callback: ValueCallback>, params: FileChooserParams): Boolean { + val activity: Activity? = this.webView.getActivity() + if (activity !is BaseActivity) { + return false + } + XXPermissions.with(activity) + .permission(*Permission.Group.STORAGE) + .request(object : PermissionCallback() { + override fun onGranted(permissions: MutableList, all: Boolean) { + if (all) { + openSystemFileChooser(activity, params, callback) + } + } + + override fun onDenied(permissions: MutableList, never: Boolean) { + super.onDenied(permissions, never) + callback.onReceiveValue(null) + } + }) + return true + } + + private fun openSystemFileChooser(activity: BaseActivity, params: FileChooserParams, callback: ValueCallback>) { + val intent: Intent = params.createIntent() + val mimeTypes: Array? = params.acceptTypes + val multipleSelect: Boolean = params.mode == FileChooserParams.MODE_OPEN_MULTIPLE + if ((mimeTypes != null) && (mimeTypes.isNotEmpty()) && !TextUtils.isEmpty(mimeTypes[0])) { + // 要过滤的文件类型 + intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes) +// if (mimeTypes.size == 1) { +// when (mimeTypes[0]) { +// "image/*" -> { +// ImageSelectActivity.start(activity, if (multipleSelect) Int.MAX_VALUE else 1, object : OnPhotoSelectListener { +// override fun onSelected(data: MutableList) { +// val uris: MutableList = ArrayList(data.size) +// for (filePath in data) { +// uris.add(Uri.fromFile(File(filePath))) +// } +// callback.onReceiveValue(uris.toTypedArray()) +// } +// +// override fun onCancel() { +// callback.onReceiveValue(null) +// } +// }) +// return +// } +// "video/*" -> { +// VideoSelectActivity.start(activity, if (multipleSelect) Int.MAX_VALUE else 1, object : OnVideoSelectListener { +// +// override fun onSelected(data: MutableList) { +// val uris: MutableList = ArrayList(data.size) +// for (bean in data) { +// uris.add(Uri.fromFile(File(bean.getVideoPath()))) +// } +// callback.onReceiveValue(uris.toTypedArray()) +// } +// +// override fun onCancel() { +// callback.onReceiveValue(null) +// } +// }) +// return +// } +// } +// } + } + + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, multipleSelect) + activity.startActivityForResult(Intent.createChooser(intent, params.title), object : OnActivityCallback { + + override fun onActivityResult(resultCode: Int, data: Intent?) { + val uris: MutableList = ArrayList() + if (resultCode == Activity.RESULT_OK && data != null) { + val uri = data.data + if (uri != null) { + uris.add(uri) + } else { + val clipData = data.clipData + if (clipData != null) { + for (i in 0 until clipData.itemCount) { + uris.add(clipData.getItemAt(i).uri) + } + } + } + } + callback.onReceiveValue(uris.toTypedArray()) + } + }) + } + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/CustomNestedScrollView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/CustomNestedScrollView.kt new file mode 100644 index 0000000..17ed09f --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/CustomNestedScrollView.kt @@ -0,0 +1,31 @@ +package com.localee.mireo.app.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.core.widget.NestedScrollView +import kotlin.math.abs + +class CustomNestedScrollView (context: Context, attrs: AttributeSet?) : NestedScrollView(context, attrs) { + private var lastX = 0f + private var lastY = 0f + + override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { + when (ev.action) { + MotionEvent.ACTION_DOWN -> { + lastX = ev.x + lastY = ev.y + } + MotionEvent.ACTION_MOVE -> { + val dx = abs(ev.x - lastX) + val dy = abs(ev.y - lastY) + // 如果水平滑动距离大于垂直距离,则不拦截事件 + if (dx > dy) { + return false + } + } + } + return super.onInterceptTouchEvent(ev) + } + +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/LoadingAnimationView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/LoadingAnimationView.kt new file mode 100644 index 0000000..b08584d --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/LoadingAnimationView.kt @@ -0,0 +1,42 @@ +package com.localee.mireo.app.widget + +import android.content.Context +import android.graphics.drawable.AnimationDrawable +import android.util.AttributeSet +import androidx.core.content.ContextCompat +import com.localee.mireo.app.R + +class LoadingAnimationView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : androidx.appcompat.widget.AppCompatImageView(context, attrs, defStyleAttr) { + + private var animationDrawable: AnimationDrawable? = null + + init { + val drawable = ContextCompat.getDrawable(context, R.drawable.my_loading) + background = drawable?.mutate() + animationDrawable = background as? AnimationDrawable + } + + fun start() { + animationDrawable?.apply { + if (!isRunning) { + setLayerType(LAYER_TYPE_HARDWARE, null) + start() + } + } + this.visibility = VISIBLE + } + + fun stop() { + animationDrawable?.apply { + if (isRunning) { + stop() + post { setLayerType(LAYER_TYPE_NONE, null) } + } + } + this.visibility = GONE + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/PasswordView.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/PasswordView.kt new file mode 100644 index 0000000..a4cd3a0 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/PasswordView.kt @@ -0,0 +1,96 @@ +package com.localee.mireo.app.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Path +import android.util.AttributeSet +import android.view.View +import com.localee.mireo.app.R + +class PasswordView @JvmOverloads constructor + (context: Context?, attrs: AttributeSet? = null, + defStyleAttr: Int = 0, defStyleRes: Int = 0) : + View(context, attrs, defStyleAttr, defStyleRes) { + + companion object { + + private const val POINT_RADIUS: Int = 15 + + private val POINT_COLOR: Int = Color.parseColor("#666666") + + private val STROKE_COLOR: Int = Color.parseColor("#ECECEC") + + const val PASSWORD_COUNT: Int = 6 + } + + private val paint: Paint = Paint() + private val path: Path = Path() + private val pointPaint: Paint = Paint() + + private val itemWidth: Int = resources.getDimension(R.dimen.dp_44).toInt() + + private val itemHeight: Int = resources.getDimension(R.dimen.dp_41).toInt() + + private var currentIndex: Int = 0 + + init { + paint.isAntiAlias = true + paint.color = STROKE_COLOR + paint.style = Paint.Style.STROKE + + path.moveTo(0f, 0f) + path.lineTo((itemWidth * PASSWORD_COUNT).toFloat(), 0f) + path.lineTo((itemWidth * PASSWORD_COUNT).toFloat(), itemHeight.toFloat()) + path.lineTo(0f, itemHeight.toFloat()) + path.close() + + pointPaint.isAntiAlias = true + pointPaint.style = Paint.Style.FILL + pointPaint.color = POINT_COLOR + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + var finalWidthMeasureSpec: Int = widthMeasureSpec + var finalHeightMeasureSpec: Int = heightMeasureSpec + when (MeasureSpec.getMode(finalWidthMeasureSpec)) { + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> + finalWidthMeasureSpec = MeasureSpec.makeMeasureSpec(itemWidth * PASSWORD_COUNT, MeasureSpec.EXACTLY) + MeasureSpec.EXACTLY -> {} + } + when (MeasureSpec.getMode(finalHeightMeasureSpec)) { + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> + finalHeightMeasureSpec = MeasureSpec.makeMeasureSpec(itemHeight, MeasureSpec.EXACTLY) + MeasureSpec.EXACTLY -> {} + } + setMeasuredDimension(finalWidthMeasureSpec, finalHeightMeasureSpec) + } + + override fun onDraw(canvas: Canvas) { + paint.strokeWidth = 5f + canvas.drawPath(path, paint) + + paint.strokeWidth = 3f + for (index in 1 until PASSWORD_COUNT) { + canvas.drawLine((itemWidth * index).toFloat(), 0f, (itemWidth * index).toFloat(), itemHeight.toFloat(), paint) + } + + if (currentIndex == 0) { + return + } + for (i in 1..currentIndex) { + canvas.drawCircle( + i * itemWidth - itemWidth.toFloat() / 2, + itemHeight.toFloat() / 2, + POINT_RADIUS.toFloat(), + pointPaint + ) + } + } + + fun setPassWordLength(index: Int) { + currentIndex = index + invalidate() + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/StatusLayout.kt b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/StatusLayout.kt new file mode 100644 index 0000000..ecf1a44 --- /dev/null +++ b/Android_Mireo/app/src/main/java/com/localee/mireo/app/widget/StatusLayout.kt @@ -0,0 +1,97 @@ +package com.localee.mireo.app.widget + +import android.content.* +import android.graphics.drawable.Drawable +import android.util.AttributeSet +import android.view.* +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.TextView +import androidx.annotation.DrawableRes +import androidx.annotation.RawRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import com.localee.mireo.app.R + +class StatusLayout @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = 0, defStyleRes: Int = 0) : + FrameLayout(context, attrs, defStyleAttr, defStyleRes) { + + private var mainLayout: ViewGroup? = null + + private var lottieView: ImageView? = null + + private var textView: TextView? = null + + private var retryView: TextView? = null + + private var listener: OnRetryListener? = null + fun show() { + if (mainLayout == null) { + initLayout() + } + if (isShow()) { + return + } + retryView!!.visibility = if (listener == null) INVISIBLE else VISIBLE + mainLayout!!.visibility = VISIBLE + } + + fun hide() { + if (mainLayout == null || !isShow()) { + return + } + mainLayout!!.visibility = INVISIBLE + } + + fun isShow(): Boolean { + return mainLayout != null && mainLayout?.visibility == VISIBLE + } + + fun setIcon(@DrawableRes id: Int) { + setIcon(ContextCompat.getDrawable(context, id)) + } + + fun setIcon(drawable: Drawable?) { + lottieView?.apply { + setImageDrawable(drawable) + } + } + + fun setAnimResource(@RawRes id: Int) { + lottieView?.apply { + } + } + + fun setHint(@StringRes id: Int) { + setHint(resources.getString(id)) + } + + fun setHint(text: CharSequence?) { + textView?.text = text ?: "" + } + + private fun initLayout() { + mainLayout = LayoutInflater.from(context).inflate(R.layout.widget_status_layout, this, false) as ViewGroup + lottieView = mainLayout!!.findViewById(R.id.iv_status_icon) + textView = mainLayout!!.findViewById(R.id.iv_status_text) + retryView = mainLayout!!.findViewById(R.id.iv_status_retry) + retryView!!.setOnClickListener(clickWrapper) + addView(mainLayout) + } + + fun setOnRetryListener(listener: OnRetryListener?) { + this.listener = listener + if (isShow()) { + retryView!!.visibility = if (this.listener == null) INVISIBLE else VISIBLE + } + } + + private val clickWrapper: OnClickListener = OnClickListener { listener?.onRetry(this@StatusLayout) } + + interface OnRetryListener { + + fun onRetry(layout: StatusLayout) + } +} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/left_in_activity.xml b/Android_Mireo/app/src/main/res/anim/left_in_activity.xml new file mode 100644 index 0000000..e03efb4 --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/left_in_activity.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/left_out_activity.xml b/Android_Mireo/app/src/main/res/anim/left_out_activity.xml new file mode 100644 index 0000000..464168e --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/left_out_activity.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/right_in_activity.xml b/Android_Mireo/app/src/main/res/anim/right_in_activity.xml new file mode 100644 index 0000000..253a11f --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/right_in_activity.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/right_out_activity.xml b/Android_Mireo/app/src/main/res/anim/right_out_activity.xml new file mode 100644 index 0000000..912cc35 --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/right_out_activity.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/shake_anim.xml b/Android_Mireo/app/src/main/res/anim/shake_anim.xml new file mode 100644 index 0000000..157383d --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/shake_anim.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/anim/shake_interpolator.xml b/Android_Mireo/app/src/main/res/anim/shake_interpolator.xml new file mode 100644 index 0000000..2b3fd50 --- /dev/null +++ b/Android_Mireo/app/src/main/res/anim/shake_interpolator.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_1_bg.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_1_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..d347de55d3cafbfe6c9fc763eaa2ab625f902134 GIT binary patch literal 59646 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_2_bg.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_2_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..6828de4f0c491a6f335256c7f764dc917c41af9f GIT binary patch literal 66230 zcmagFWl$W?7cLxuV8ICxTow-y+}##;w_lLpwzw=CAh<2=?w;UIu&}s?;F87Nb=k|m z-cRqBd#h{aOr1I1)79P6-RC(^Ybnah*S>lEN?%S|Lr+7{0Q1$WS9mX%70RoWcdw*W zG=LXAuU@@IG68^RNFN8;;u9e}az&iwu^aPdxr^cAZxQLQ5OuDnnq$9y_Z&X{qPoH| zx57H!Vro<@dpepGV&WZ+s?4~XVWMZhScTT@ZB_m^c5o16EbcP?XiB;a86edg*KM_I z`|SP{f&Vuua)y>LZVNrfU9!PI^4}kXYOB1M#&+h+C*m&$s%GiB^%Nk#DyHu6=J~ft zC*s%nX!b~Ip?&1(N1CfOsZ2a0=0b9kzz5+ zf#VCcivQ{n^%6*arXlcSLLr!Gu%_CDIhb8$E~{oeflol+PQwQ|iaMt>46|M{wNvrt;e zQj9P|;qbd3zE*E3VP%*L5YP|D^XpyE*V4sLrWdZ(XzV1^eZ6^aVZc~_iCMYTn~Y;tz_+OiC|60s<20Cz_(WN*VIK1JB;90sM4NCt0bX) z2vF3ezWcx>3HPcz_$4@i($-WS^%gY(TfDdudrT@uBUe_Jj9H=jM_48IXIw6sA4>f) zTo&Q#*(nVd5qRc$*0A(;xvJ(&g)Js$%gl!mXsFcK#oRMC{yGyG) zRlrL^r%ZF&-v%RSWEtm#GNkA8GSMiXy(+mEtVhw;&Q$r*s?VgEelh_g=*;d@;dm)V zc;?{mN`y+Upta$5mEL=zl0Y(URL&yif1~vJG;GL6To|#5wA8^at+DGTRA0Q0A>qtJ zBv39Nk->BWLZJ`^=D}MiA89dOd~IB3FJ%mNZYe9y5sRfGFGMp1O-=s2Mj*Z}c;j9C6E`xbQr1$o~@G*wH~+7Z11=l1|SZUPCg07oQDYm18k0 zNL>9REcvpsw+``=dm74RR;f(-iUigvNk+(}wxJW3tuIu&F zasuDuy2V`!m;JAvvV|5Xt8Lxu^=8j-;a0rvV`0{UKswRo%knV)%|)tWDpCK4_0xPh zs!((CGDdOqx|`RPTU7vQiaAs+v&6P`mdPmM$+CjJSw@pW-OL*mP z=!+m;F<_kK&d5>ONo*)5RS%pJs329xc@seWfd@n4Mw<1vvRO0iL`Q|+cc{A1@MrZY zOh&$;KCfX|X2 zY3X(o!ljBdf1F1Hyn&ykYlHJNC^s_!GQe`PDzl;;ClSxXf8?(7J+ktR&XEB><*{tIiha)mO>~a%e(nUd2wTPrzk0AX#XZqcEM9};Ti~_ zzzGfBwzg&%47Irg#Z&)nvPO)=ujSqx4J<1>fW?+tY&ELL21i$voJ`c}g9aYhCr8{+d=m^ly%@j2QSnyjhUKtZBUY%F6UZQhqlB`#`R$kM6@PiI33uC=DB zTp4Q$MmtH15PmVVIKQ*dTRkTspY|V(qD0e{lYbZJH~%x#Ts!Z|a3Jn}noq5ze^^K@8?({wZut z`cm1qIyso8QKmatb)rG?96(c7EJ{(4ucjnM@o9LuC-6Ml+kCl0wX1bT_llH{E67B+ z$@r%Iq}$HnSzMdoy*?&8&C5)q=W217h6JCPgN+s<30Gx9bOu;J>pCtz&)S0jFw=mqg_yz?k_HgXJ6FCi^(ToBKRcU z<~f{PpoqQ2scK7Y$UPUk0i_Qx1cxegY2Lx78Qr3W>VF_ptz0pL~Y_FeKW3vmTZ_=Zn720D05 zh7mEHzh)I>Xc~^yYPtOEIUecWZEZuJ-e7;wBRpT=6H!#Yv1bYM)asi5))sJnkjbNm;#6a3H`K$KaGa&LDNq(y-xZWh89)hd|PkA;mCuFD9n_y8^UNo3$;#47$ z{_s-T)q<|KPb^QRwb9VzU$9veri!8^C>G!a^o4jUqD;h6af~9w5$#@XW3X@u%`cHA zsvHTztGN%G9_SPCRIE#UkEI-L%2-OFlm!*)jQT*tnm4<6>|K!Sd2Q%Fzu!!81%3?W z>0?YJz!0n%fo(L;fe(9|^-1Qds~uE>)BxSFZX@%=!=h(Y+$W=8!O;2;WQPEb@4t(v zR@eR0;cd;9h3Ks4z6kTF{*oby?kbzkX_>Qws5CXxwJj0{Ps&?ut}SXh>mhN9S%!oy zjM_?DiNoPR&944r>dXF!q=;nd1^MP^rr%NKMnA~XxclW$=-^$Ez;ZN;ma}Cd*3ol}Je0$IHnW-w zr13gKO+F6S9kD3{C=@?UJ?irowtmBOQ~g+GvdBPKaJw?JE= z+~v^C5<*_+I>8VLaH_bT5|MLN{C-KyzywV$c|aw{4~wR=sZU0v5dy$EZ_?!MPS4pD z>t`NHcwE1r2;inwVw=P|ue|n_7u-dRmQ?Jv?Rg)-MKPiJ5b%ixk1+#s95^&I64Sr@TE`Oy~+$la>>Ti^m^rHmRnS zyU7_CvZfDQgymb9M6Qxvao zth1A~Kgvb$)P=Gl=Cr+E0#1e${H%t1Z@?Y=N6Js*#(clQsECYZ5lS1d8eWVOOEnTg zLF=DB_EBd3JXQ-vaKXe6Fzg>>lYufNPaFWX!Uhr`vNYQ0HLdA@_t?}U)3o{#Ph48v zM_Zlya!`)FGU`P3j=dUGT1#e#a^-txVC%soIsluyq)e@5Sxsi`$3J_+daa`0(Id3( zf?TDmSAw|V-QG?4El zY=xiTv@jZ763c7!%J+NV9gZQFx_MO-R0*z@N@z(wvHoUQwwH~2>!R8JG~A<5P)1zE z$=#O&KxCbFLsKEy*E9&#Lg_hAkj;Ns{sLr`?lDuG`R2DSX@);R#)u_+z39S!R? zhX1n4uYrWFNK5#&yia#8v?R77@l(ruG+zL=bV2{i_MJKQ7Cv!D(TZu96rdHD92A0D z5vjRf>Z>mz-xq%zY*>99ynN5`O}6ODsYRS*Z(a^+pUl1|>70G2M6<|jz7n}2ATvU< ziXOOho;sGcVCReT|Q)q!AFXF=&py-vV^Znbj zFxp!|cwA4JIbMA{wsUKq8i=KsxyLy6Dg?EYqrIdC$mVa)Ht4k7S zU4&(I&A{KG(O_c)?wc)S>M>yvB>Y(Vw!#ugPWyocvXYZ4Qn17dl#gPX1CWeJ0~Ib# z%hhU=^l4~?+>#DW`0i0)z^kJII7b^5hyc7S2}%N_NooXsA9@m4h_Drt93kQGHCOffi=<9tQ*)bN;`h)3 zijLG3%G>Nv3hS~C<1vpKX_!`^tEWxSNSLT~MRZ4UN*#?RMz>C$3E8AfrIuiC33$DS zMt?d!j!rkUwk&an1q#zjD~o#5e5XednD`-)Izo|%6;}3s} zJq;vdwBU&M5DUFwxg--?DA;YZyVBU$81B=MMY{rihTNvb-*^V^sb_@KiEz^HT3>N) z?@ZT`IA!YGn-6dPR7saMVgnhRhydCf2Ve=vT=f)DY(^D^c#%VW>@{4hJt1wjN8KF2 zcs+j^#r1m)YJ)Bc1gtKwa?b9v^~0i2T|(Eav%&7zKb;KsPuisy`u0gYpjfd(OYAP= za8|d(9VLl= zT5kaUb!M+}?rFt@{CR|k&27*vl@?ejaQ79hlHA#?tXO3B0^hJIhd&j27*T>4!_YFa zY)#FpE`8XDr2`A|Tq_ymtF1`2!=)`>12v@Ao0$~o;=g!Eyo)^!e_wL4m3 zKA=|LGNrArT?f9>ZOW8BF@VKyI%}eV^sxxNHH|zvl2MaR{>?L&vmmYi5&9!}+#?xPUgay^^^8+~r4G#C>fZu1 zWa?}1>$z*rd{%1srvmk?#E>)Nu+Jj6l`}MUETqafeM!52-95oIwSy~sFe5s0;lvPE z7JnCK^r#C5XiKt+TVjE>diK}4d41b(i*3p=f80|)b0ptOxEBREC1 zJF0(G2cErB=+$;|Q8xExIoFLAI3+hpef--K!;_TE1N9cW)6EnjTt@L(1@_;B@F+ui zV0SopRIKu=t(q|W^JYpMXnYC7-SJV#pHnyLZuTv7kZ4s+O}fv+Uk|T(cTF*c>II{= zmZBpxT#us&9rjY;FE~{#7{NBTmuD>I86<=m-sz{#2MYVys=m)5Z1Ecxz9#2$TB~$= zR5NYAJ_7g3rJ0DkLXnxYEd4H|HBbIWl-{dJ4;wP^DuGWGHpt5-<+^Th%RfiHE<~?6#U9ymO?z`)Yk2q99x$eR}KZ-@)v&43{VF_W??2s7v6;fvr zu(5Gi98qwFZV=AHzMRz&y2vbCuEi%P8w>7Y-k1pPNU{ZXS@%q3`Q7a;BbXUAczw97 z1gHICS8MCy;1hFp7XCAbGe`8U zOrV;abVISYVyvazm7TCC#noH!sQ5FqjeQONBE~_P;{JcMpgpaq5cFS{1&(^`QU1X2 zTN(J7HPPutIEgI96%>Or0#=~R+)ev-4bK`G>*AG&86N@bZ7q$D!_CFFu4B-8k`@-F zzv?2~~YDR$Ouhl92%8a0ZiI7>GmU4~Yu|vZon3{^PHkLJ|&fg+cWHb!>}N)H8?v_3{P63|Fj?(XELfjjl%ukAfEKP>UfjHUM<28nt^> ze5Dzst|3}_8c}U0?S^TI>!-Afob1Zp`cTPt!=i3o{b0S@s~svu2@}gW-7N2@XL=dH z1@gzgYnHrER%$UcS5qmM1Zo$`4Xc`uMLhR&SIX80)38b5Jzjf1@CDWa4%6MdSN)OS z!ar5!tl&;gMX~MDzBBHcV znrRHka`Ki}qSnmUx`{9%1qq>VTLDk|S}Sd)&qRYr;Cbl-w(2k{O>bWIzIyGeeMGS% zW*Z8@t-P(OB?t>}e76Jp89gip{h>X1-4_m%b9HRz5Ho777H`8y^xU65>s^Dh0_RH< zt{c1)J2t+_BG!$!u^bXcX;e8AdW4gfUt}o#u+tBE?Z%C(12{i$CJ7Sd=qOhk(!wPr z0!D4a?H<0W_TX;A3mk`kx{?EfXp48F@)HnZ!=cbzwEgnkb!q4CSJ_x*&+?uidcbZw ze}cJD0y(W1?v!YYL>ob(yOGSWEQkTHYb>pN2xX(?TPL`$B5WfhxMY9WFMz87$E&t% zU^&oCbu@im8gFTfHSE(v`IGMhomIQB0B>pgHFmIg&q3cG{PW?rJi3lDIFM zYh)TqfBHc^wlSh{In)g{sjIA`iVBfXoio*;(eo$15SZWrm= z@4KJbqbWRCEP1pqnJi=_E;&IAjuQjbKHO~tIR9Dbb>}m-;pg@bd}^#fZNq<;o-P-6 zLn|O15}A=J5WIqZnUTIPcVhMGjx#+og~Nk^yg5BHl%Jo8q>l^sl`cGK7z{l@TX2{3ksz&_#Cf5p077qO_8cc0aHHk>Al2v5=`c zhv>j;M^=Wug}sN_2A|H+q)9Pa@ot`yC3Q#!B{N>MEE^ECy<>^Zb!TbABm&w`tO0A^ zU?-BLxs{@z)@RnY)mqFYzcW;IP04C?v_hT9oT7Gui9s>!RPTVCAZ#m1GeRNohc;9# z+Mm-{zY~;yp=HFHJ$-6Jc>`VCD{=l}`&AguZ|$(sTYrdvu6%E93o*5p1`&#HVXA#f zd%dU%@culAESB~w%F|^&8A8KQJ1-(S{TK4S%+aqCBGw`fbPJ}QFKo@#fw@Ts-38)Y zz6XN(40ko3;v@*`vtbFjL@h};zHx!}uLk#-Ujsd^o&*sW3m>pSIeq@jI11A=%Pf)o zHuajkFz*o?{h~WExsVv9yB?o*l6+1+dO}d{nRhI++V4E7Z=Fo_O?-o5%$n4+dC7_V z{+|5B;t60=*cZj><#OLF98IIcY}*lA^z zd;R0zz3p`UHQz5E-)6IAIoT~}dE&2}3cg;Q%FfAco#e$g@y%OdGY6h+)z{Il$n@;^3O9accbH3vnu^NWJ=SqiuOG3dR#-!WG_Q9&kLJ_Cehy!6~c&&nYE-(%Tvb+*o z7lBtir$LgtcNc`=5!Jj>>q*_szOdMdO9O~R_tt|xFE5*T_*A}R}VL=)GLgusnNj&v+ zmrWLBovqJr_xx`J05))%huler7eD4Rc+$2k`+By>$agw}F#PtpNzDDZ+B`M@zj3Fxb!IWDjy61aSfZO^Q&JCvwHztROcN$61g?yt}X0 zQPxP~i{1{G@#oXVw3$3G=%OEYO(gKBrbwaGWVdIlKKkM2XsN=q>MQo)l3=`zbj{NI zFpCgWjh2UgUcn8Z=9We5{T%)IrcC5Nacb{+POucss=6DC|MZ7q?aq-}50uQjEj_QR zknDqw>+E5*C5H7qgV{m{a)&hOz(q#9Yi~FDAICD(SK-%$JpP z`4!MN^G7okDDd4S=AS?EBkCM0-`n_-FD?W1KDR6}Ku=@(*6iU@-Lv1j7+`mij%1%( zouH>Wp9Mc6)r0@OeRqpfEW&P(jk!M&V6d_ZJ$e6YD@?lG{naP6Zgaa?@aMKaGvH}D z_H+}m{lH43`7b!Zq+~r0HDlTjw8Wfujwfh9uXq2sQ%l!hQvA*KIJFOW<#^%+^x_X6 zSG>Ih7<73;kG0c{!DZc!=BrinoQlcE4OqCp_N@Flf4z%2@rQZt^zZFR*Ir_gu9`v* z8~^jD?+Td!e{OHqwG`f)OF5pkHbiL7$H~-M-jEAOz1*>OrRy6+98bi7UaWstUID$t zUuPwqlm*!L?bwq@*7Ce5N;=WMvc4wFldiYCUM-_p=6V?6T-7J~a;58V-yQK^R^7o# zkmD|efk__-=Ijj5|Tk3`Bu8_*SCt zaA(@kxT!)GkQ8`fF+*!5W6Q)+BbFy-h6h$M6P719JE>ALmdDn?IEwK<)1;(eevaUN zUnbgPu514T$KcK~>-~YS7TQZLkHj4@VJq?7^!p74DHymq;K!gMFmNI=e#nmT8GS#V zm_))CgX-1!SyF;<=c}!CCex7(Y&>ARi*f4#b(oE0z~gTt9}J4M^6~8AD;I_2YQXH& zCsp0V$b%NOc2|ukkp9wa-I!T^&9j^G&3RwnzeVFflN$DP#K^3jHw#M$hl;&v-qy$5 zV3MHHoaH$B5GOeG%JXbxiA&eRT!>|DPoa9aJdyeoC(2}0YvI}goV4>3H_y8m4eqif zrn7dzvM<4Jare)cOEP=Gc0vDJTx^vA7zs|geD+RHKz zd_0f-_|NYTjlvg7QQqn}$MTn;=98VOD6MH(`zRqy(w9aK; zX5v>qUMDXKb*VAAcJel!{?XbKdMEDyRc@oL>0XvmBB92yjE{Z95!`u{T|6Najvf>H zOIapAUQL9Y1H0>pAM~c3sP{$Dan5R>uzrGG7GH@V@8lg*Q1fiDM%CHGfTM_3^eY#| z8s?h6H@;iNe|Td?@I5VTKg{Motdh6GuWdWg%*gsx>z^dESUDe};V5G-Zx_+bgT(gM zlL$W#XdgOOXTtAJ|06^rgT9@zrxxWM^Riy{WZw3qL(5;1_OY%0Jbd0f9&UK_zMtm< zXHCOTL$n<2ACWUy!x(!|+|!sM#*b^wp%@=T`dNqxAi>^Yi>u~8B4>|b_&yYCAHTXl zP_tmQGI5eNxK6I6!$Xe7iKX39*+H43n;BpJNR+jxvWq1Q4b!$Ri;!pA2`7we{*~@U zh2wd!gz1MZrn6+e7Mbc{D9hhDJsbH*(0_MpFz5jFYmd zJ9?k`rcANix$mrIO-#(Vq#3JjnR?*0nbl4Ezu;SiE z?DbnB56T|reWv<$3?a;Uv7c$L3E+`$&X<&Z4BbJbjQwwAR%&?)sjg++o(H%vr*fr#$#|zRR zt8~NBUO**87>nEYk1q66(v;obBAzwV&$kjSk7Q8ybK*|+nU}axU5jV#$|4b`h7FtO zCq3<_Up}}FKpFl)d>=y@vL_-1jbjBL-C}K%-nVDvz_PpG-)nQi<~#@@m$P(|CbxHk z)E*L8laV@6GQg|sXD7VO_$>nYuuWQg;H`GHbac^Kl;EuzMSlR$a75GhhfBZsk$GzE zRpDLO+BUSt>TB@>+0C(Lm0p*;>WeGm8n}?#^=KNf_=~NMiraA@cEqVAzUTHi@&)_Y z%Gk|?+&6u68OuSQ^vO}%jiy4HZkDO}9Us7lH#r@*RHA-#0zE%?b&S&U{I~XcyE?p` z*B>5Bu_XdJZmPCN8{>)D1H7MC1ip6OTwG3yT@Jt%7}p@Dcgrr?&Jxur2d8VZTrd2F#35ZR!dCZbfvyFZ@vmvHLng9lJ$FnEM;4XS7Er z)yRE>*7&V7$BcAwyE(V`m_o6zI(Kfo|Er$|Zf$?@&t45wPWVD2c=2io#J`KeDP*fp zP@!Qu5eD;SXU$ z#OVz5G46JW=?wZhpb(vi|8hXIh=?tDT*V%Vyb$I;U#YFAv1Na{U7W6{57CA3B|*~q zsfMfYXHF&j@rKI|IYW+$q>0Fx5ghG3k<5DT-B*ucK(p(FKoYr+!(~-sObFss;$htV zbkxP6pAi=SO4hG2kNHEZpqp>d3cC!Wj_I|A$nTk9=S&p9e zI6m1SZr7`gyX^0G^AM;17^pb{PIK!AR?!Dl(;nfbWlfT_ghs3Jn0_FN5KZWO&iUqTGdS13Am+dwp z+7uHT7BJ6X1|gmUjVINuQGB3R@L`q)geiD45fU$o%x z72f5Vh0_lD25*6#Im1zQ)uSFOdL+YoJedZOS9e%5-$BfCx>z$PzO%Uf_gQ&i5?i z&17&6+g1wh%)S#i|DGTEMFxx%ME#yU#AC-DL_6nWBe&^dceh7CaWrcZbT^Uocu@E#`JI$+GuU&3DSJe{=Inn@EyFgJP?Aem6}5dGu3nnOI~H%wE!76 znql874P(Q*_h`-4kq|rS8R>j{Rjr0BCf{ zwtwQ;?vWTDY<}izB+(N~wn35!$1yL)oi=wHf18Z~C z1_3n*en~c=X0||%jM_uMn)=i5F+NOt_r&6_3I{`i7v8qfF71T|EoW& z=)Ntr2fQvvd|NTHHL}|MocI8#(kMyJ;maOw6u>b6%DDR($lZ{O9AbW3iXM~lA*BGeH%|6L|8W{#)u)T^= zX^(P3+=(>-wKR5fO<;6%9nRHiGr|h_td4CgB-zk#>tVKYZV1G@uhFY=uM}B9By9J6W#0y01S+UXBMZx;H+B4 z$UamDz&Ltky)_tEIrYrW;+~jVm~jlOpR%q0zKEz$AWQV1b(?z)`*77GKTq?qzvOkr z%%R}bJOjXP?6;286dhiTHB0#F|~qZv$fYJ}c`5IKi*3 zZ~zJA-a}F>KXqMi@B9EMz}6?@`yVN0^?s6Xh8dSsldwn2BH?Nd>I6~3Ek~)CmgUkS zzyB}@$@N$h6jZ70myskj77h}&)o+YWh|Wd%Uu{nZN&(}*R=9H7T7=n! zFVY?`Yx^8Qp65*mI{K*xSSuVuHtJ+R>6vMqFn1Pnk`aWJEjV##j;d8~J=76T{BiLb zTaiQC`%J6lXO`>cE5a98 zWb$Knu~VW?T%Nn=${<;nh)kx2ATu8TJr&cBC4_GNGVN3xV!XRi?SP?*KiB6uZud}C zF`cVhw(d;8v>jx!^uot~!Ef(qhbgft$*SzWJjJc))DU+E3^8X)JfEY!IvH;D#o5w` z<8Nme_9O5|*yx*d9!{MLJ%<6V?YwRBnY*3-&Ga*fV#+De{qjq2GFlB+g!j3Qe`npOYzfSyU@f_;ZDe z(}iUDn%h(6oud}J7{RBd``=Jvc!oyVBu|Fhg1~-3;mhK~!3Q%gn9j$IAJhiFrME8Y z_CG50gAYzw{PjoMD!O;R(&(+@e8@_$k&(`tR*oAGqF$iy4R&e>Yf`0g3Af)}y_nu_ z9Yj=zk6t$H#2#pbbkbC|bot6TQ(U--nWUy&|JhTEgi~tP%)`9vL)-?OuYu)9W7G`_ zh|9QL*@mhzBtBEM3OfPo#44|o!6O-5=issQ#O=Wu<_9nccsjIss;NvUlj|q%8F4=o zpxeG*q?XulP@y8_TUu@XukNk7Vzq*FNtpn`+e3@;V!}3HI7veA;K(RJL(#1H2KFs= z9_CQ=^%38_Au8ugeYaC$s2j2!R@@Gs*X-HNp+07FuP0k>>)C!1b}{KG#eg3tOu_rm z(kMOX7NE7^$ou7;+mnuJUF?f@6>BR3o3r2&H7)De{%usIK!2ttNS5pcam8BoX%1FB zW`9Z#i)SsNTkqztY7q`+-H=X20x~bkXV8X^ueFoX{%$k7Xv+2C9C>1v4t;!*krPMT zV;8#(>*8xYKLEuiHqoxz!whe1Tl4TvEdsJ^iMs+hNOlE<6Uz&^_ugjNWmnYIQ>(}x z-lkQvc^{&+zUEWiICFu!zk5_V6PzTXH_qQ3WEYR=T zTMweP`7iV!;i@Dpb$OC&pCeU;aa)h?)mw6zapYNVPDu0A6*ZrSdwL+q3<&Pg3?QM? zhJf7rD%QtpB9l^Rus6y^ohy%hVsf!T(;vKrZayR*33p1;=rG(>4pa9rU2Z%blUOHs zBu=Rfm$42l!$tgb?!~I;=iFbZ_Il&H58$_5J-*ni;Oy-AdilK4H{))v7EdYXJ+VrN znM%A(xqf|F-!{1-_H^M~Lk>txQ*T;|UH0m@%QU9;J3qD#s_~EC{g9fBD)T?0`|+HY z@IN^m)KTT=$sMZ2>*eohq>DGH<16Y$dS<`%kl^Kf6rkTh!t^K}_bkm%TO) ze~`_HQ-p#VJa?Fr`4cM#2MY^}^_{}Et*yeo;3u9ornn=d|6`p*^&jHS^SPs@UH+@P^COnL+qzlSJ?mD+^IHW&^i`pTfoMD$oT~m|5YfhOl`-FJ#vHX!5lP= z+STrP^0(Q#LH^pFNl!ih|8mIdwf1r9>SI|9_$=~D-z@L^VN{!G-T#u0BxfCvP#HIs zf5?aXeA}Q3p`PUAzzXZzMMqV}Qm3B4{G>$f@7s~7vmMed=IrOYJz;VV$#`K93#YbO zUCbX>YR_XE#piZ&JUYT2O4Job)DiqHDz}v%J8A@;5Mm|#&)#49LJdz>ml7(CrVtrp z1j|Tkl!S(!F3}%Ux&{Ajh$!?$VD`!=J3Gqj0$L9sHidVPx`^y&dq=j)H&V#>i^8Y6 z>#57`_9hlxxBSEGY|^{a99cEwskts$X6u1?CsS}b4ai52y0ZS)M%^erPqNM0^7l%B z2IK%^fWU7}np#(Cqi|kofOM1H`%g*byOp2n3P%Y%U4*(U`D=}D1_0KhkJ=yJ2nUkM z#tgs+>Z~ zclL_PUlEPlORb47P|JtrySBGTG=Djx(!rZ3^}o-FdvufurM;adgU`<%h){kA?{7&^ zP#?#oFPGdi)K3zaS7E5Su!XSVBsf!K4k#SK&>-q@` zYW5hcGzr_g2`y@MV&zaGiQ}4{l(T}kD8-xqE@s-=h(094hRhytvR=NoJ(dH{;b92I zjP70&k#Lh9S}p%Yq|R8EO+sG|b3Bn+6Ewvwkk)?S_5C*%m2c5dLhifiF)oE#Hb9QN zgm~(>USS`@9!sY&bbKb_7*4b1&{;+CYhJgtI;x3M-W2F>ESt?~3jGMQY;88zP;~8UVY_Ualwpus6xm#K#wtpDp{26A zI=U3iY}ha4ny!4+ArtlZ^kfumqC=LvroP4(5>n2KK6&#)o%8lboYGrxQ@GfhCsQ3d z$J-wQPp?zZ6*w8{GQT_O&}CC9n(@V|7Z4QirgYl3lN1rq{_o)(s%9kKd962}aEuZP zIMSxeeqV<&1^odu>G%3Zn>B5@1$($izDCFSZn)uDLAob+9azDNfqt62833d_p7a5+5@;3JGN+^hBdAKG|Jw*ySl^4^m-jtDFD!BfFGI^pp zbh0~8ebo-ja#?gS1v9>Dq%?zcMmU%wRms|Uvw?oNVMj)Xj-u@LoS~-vankD1GvR4${p0@u0_>b+bi}}#lA#~p$}<$k6}O==j#d7zBk3`nfvjqTgZ+rWOoAHBa0 zn$nJEhyZK3-)e56MUm_wz;a-=PMvy=Jx_^3Su?spj1|zE4@r*0!i45T$a(AnaU$v| z5Bb5)h?v4M0$`yQedTWA9|etoU#RQ411)`{lk|~F2bDB zJPq++8--!W^%wjmW{GtfaARK}=8V>cZ#~a*V9QN1#KKHcb>k&jpKBwzBzz1&Wg5O`rusOkZNj(!` z)kqet+{;H}%XZ~Whi`-;fu|o06jrGOx*IKQob3!ew8eBhKDiHDE;LrDfk=Of5svps zlX-OAJbxVJKM~J0Hz9s6N4M!JsAFd2vE%yZHhOmG%0)j3&Seq(d%RcWpz$cscjPZx z9uRVU{c+YjQ~18yxVCHWsgw`MO@Ak2CV7;7whY7iRH{J;!+Oe<7K`ZowaYSxe(^>< zUqeFj>o@5x?2OkHGE~b{8LtbH_77t-9pf8?K@CW7zV<-cj_c`DKB}+5?9XD!=R;b#LE_qz_Qm`Pd(R|3oLgD?tojF}9{8yd#u{iDbusc}*RuNQ`=6<%VY`1{Uh zntF5++556*6mAUDLcgxK2mb`sa^skCd_Aak#1dca2Y{y8CcSKEjm~y(kY?+DSyK%< zA3~abWKdpL*uOh=G&M0=8`tp+ad7`a=o_y+kHfK!dno%%Dy1t?-u-vUKvitFrddbs zJAd>g%ED`nZvU^il}3Hrr$-!^audgD3)imqi(L+-X41O4<+DFs^2Apss}zvPyo;Xy zfBOISP3uTx*;C!qWP^fcIp%w^e9cgqY1U5Z*y(Rs?Q|Um>RDkORsGeK9FHc zIz{~-+TJoQ%CB7;zGi@-yGwd#n4vqQWoT4Nx=Tt4iJ^xs#UZ7nl@0}E=x&r26a+*- zknV^7{ltFuyZ8ORpWbiRhqcb@Ti3d36&V1G26e&>aABlY ziVujDqB(E?L+l=#pJ~^6^X7aH1zwsA?#7p@Y4iF+kYA~MOF&B5NU21*sastePkQ4z zG`2N`8jHH1h8F)NP(T@1>}=rkZ3Kdx2mh%3d#3fbdkclAG#SB$WfYNAy%MZ&;3wEN z18VoJP&Op0#-Wd}Fs>kPlR)G2t20nR(K(+OD}+y|k5L4tc%%km-AQ7rx~EaZqtsZ$ z#R$~n-1&u{x}$-kKbcF-2y!pkD(*y12$>Rdy{|U{t@==KS?kyq$&4;MYb&^$ck=to z!G6uZzLCAf^7!e`*m4uX(}E`6t{Ztp|Eq!{*kkcRy`K|ip{K)T91X?A( ztw^-!%^<~Z3D3!9JHx*?w5Ke=9zz2;HzED zkhHzTs^)#(nA>Elr4GgYK{02%v?ox}A9!unmRQKJG_sfnRn)h&F>~D-=}e_xDZV_X zrKScO5DItmJSq+3pmy6v^+7pyc_<e3 z3sQ*B$(?KVoIK)Pi#hW6Qu!y<+o)97tYsIQLmxW$C zrAJFo;k3(5bo29Jr^cIiCYRSSD>rj#A^T^)x_l%qU(s&dldY9?J1jk3slK?%Q2R5Q zBfi_anIGWS^~rxJXzh5G`14iKw`G}Tm#+nxN`Mxq=x@w&k(n3Dx0zx>%M@UJL~MKX z9Si&;wR1Z@^F<7PQfg&AD`_2t);GmQr4e@f;c|j6)w3lJ+s5QC&Th^JY8hYFtr@Y{ zKKqrM7_HqX+;QP}-8Zruwksd}13_Mepst)PGWyGPV>5JypHfvbZeIS5;3~68v5dzl z?CaC;hYMYSHB~8kbTveWR_RL>YV!5K)2e9b54zm``$KlZfE*udvhqZEpc5SzzkRJ~ zYAlhf>D~<+eVsOcybOr7FR1tYIe=8M7I6240QnST{Ux@vICRYXB^3e#Dv);q{Ld-}%VgY8nc)I?>=D{N+{4NWSWjh_v+MHK^7`H~HgxkP?fSjN+tZVgr0{3_ikDlF ziPEB$T45J;jWY)=%VM^uFl3G1sjkPZH~XyXM72lRUPv(3mCDV5PKut+i=AIbj~zz_ z&-%qb`8=_<+c@bsWf>NP1(fz1G{%iGYP`;IcPPips-oGjYZ$R-Q+X>CPfqcPHvQBC zTC-u4nAX4E$4liwBy5{(IRa=NlED?8__B~2RpdN{CKQ@6j-H`@Kz&Z_4uMtHUb@Sy zC8@lkB%2I6dvQvBSY0^L=rois!GLc=$9m_5K~nP8uI68oY}=8jT`D_w2PzDEz3RId z!G&jg^MC3)XNhmiKKtKxr|5+o97}Epn_SEf)yzI!sJ9#cp4;G%c;w*ZOY&#=!}055 zt6QTmi?frQnhvSs1C4vFZX-I~HH^XY(SuJGnw(7%b{r+J8>3fQc^pS(`h&Fw&MZad zm6kV{UtBB1sz6CVL7v6f;VM5Q>WrsqBI~?fX6Kqe)PLGO4>IN(BoX zGbX)KL9<>sY$}Uw@{GOT=8}lgKdu89!+1E2$ov7eX(6d?f`YxG7FZ$`Bjpvz36*%2 zH@(lrwxP*YLFoG;K{&2xep_Z;h37&VOKY~ zF2D5T{7yTbwtB8cFE2{I{&W}$0rqhr^rg-Qf=@A0zGkUBDPUx8N)iakZ2yY6c`yb} z#g8_N9y!myVW-@Yjoo!8B(DOI=N*1Av`9&r_m)N9q4cN`)Y_oFaw0;tG({qaR0isUvT`wqV^|@_wrGFU0KbZ(5 zX9ZCsiFK)aCFb|}OqJp)i!}eHB zZv*>Jc9;Gh`dbN_Uwm7l7uE@J{~>RuLE09CQIj8kI$a{6Wo`!0h~eEi1R59pJyHjo zj38b%X~sgmy^($dslm0zJP?~vIdayb8BkA5M@-SU1r3xjG(~;@+viG~QpuBmm57eT zn#G7oH~q4HgjSW4s6N&E!Gn58mHx%6F>;Xf_sC%3R$9tj*Fsc8Xr%UVMAqC44{bqR z=n1pg$0=>C+2^Z%C&E>)M|AZVb9_tgn>NqaYdUtfyBG$EF7Q_31oh5G^*Sx_v6iIBAc+o! zk3Mj~k?yf|YP~5m#h-Q4q!@s~5Dr6|?Hzl>>p&`bzL8`puOJZ0@25Nqr=IG#AhwtI zd=iq&6+BJWoDii20i>_G79zHF?;;SWW1HK41gi zxDAL#?FTtS;Eg8`;~YmC2(moCtr@HX@9c%u$RKV9h#s!c$j{)W`pixUi+LWXXJsmWSq^}tDc6XGiixwQ)daaw0PO@4-;A3xDiCp7T4@?KhF@288bh6HEja4h7041W(%4cGzmO%50tZF zsj0o)B-U<%^?8}<7?gnD#J|l@3hU!nj)@=7dhpet^^uEGQ)LcX>k8t7V?(5Q(~6f= z0$(Dw9$Xy8lgug7j8>?~b*_li#30o%j1s4tm-C}h%CvuuxW@; z$BMNFGZ!#AlcJK{0_tV9d0L|psYwSl)y!pGnhrlz^ zM2kv|?;>3dK^JZvwOBq<^%(S}`FY@>>9EXse-$CtB^KeAgBxAWvhRMpUt|`l|#B)g-4b2hTzHtluqKj3hp6C;lF+904QUyeUnUjIauL&JDfXE12uw zP6dsXU{CYj%;xabb*t5f_tE6n^vD4U#r*+N29@c9c z0;LjnNfrC~)uW79Zm-=ER&pc{A0Ag|QSNWgnWc1 zzKXr>{7rFed9$V*6Exv(kCjBuCJg)X<--n8s2`3uy% zOnX746+pL3rd=agL&y2zc&Cwy@Xb%_%`q_`cxBu^wJ_d+nVr$PeZH4U2R+B4M{!SG zR`pL^XP~^$C&w9P$~U17d$DiAE`M8TjIle`?rLYnQ{L|3rxp%{=5sPyXF>wwiw1dt zfS2pC278Xx>@js7+d|Svc@%R$F&_Lx_* zS8hF9=KaYXPrEo$^4iFbe?1*};q*OSFY}$r;V!A-ZL_%B>^GHu-@}ARYhHe-XMQX1 zJvyGAg^v1o99%yA1mEqg(3AVSy4=DqdG)(8oc44#G<0!;{jq5!Yo&?&vuY1te;fea z_)-y9WJZ^M9wPwEX=T>7w`Sx4u!IsJ0$Y~w#40vE6BdvMUZQ-4KOCAAr}bBEK>zie zPYW5c7b;0yYtm_-dr7FZUBq?*_ov7IJ-sFD&X@PI;;&DnYCycy zRnjqWl*2UQe@#t$5huysTY-V~S%wWPw~g=o#I-z(WI~h?{O(ghWX7S9!k z@gQp)0BQ>QCY2ZlO@CFn9tu2q;)Ylf;tWjo{>Ci`Z8o;atkM8u9PHx@o!&%Od!UEM&v@5z@FmktNU*V2H$EKX4-^T=LvGlMv(myaFC)g#3 z?~KRWKsjD}G-&_N%6<*QT#JL)JMd+6Z8Fqg$K?a#XgqWnp2f%x$+riQp|u@3@%K3? z9}sp!iJ_<`4ce$TQJ&HO6LirOe@>L_rT0%FE(5elL$G>IAy9HIC-E5=L7fCz;kakH z0A7r7`wWZ^2yMi2xjQpYxDGTf2!I>t;vlduGY?FIoXGHPr>pHEfq}pD=ZOh_MkP#t zX&-$f^BHO<1y0k+ApR-Gzqs6Cjy<=!I}`ni1J9>G?V1uW0%U+-dSGLyIwK39rO;BV z+zERgKlmfDXrlynD?9lb*vE_O`U5okCVDlV51CzZk2)J`DYT>w>ey6T7e34EU zL)T>SeHULT{tZ{SuQE1-Kl)bPPlBw$K>{HA!+%N)pk@5eXH#uqe+0&bY#i#RSb$a8 z`aE)^yxSMMvD2Bf9@tr(z?;cZ4uC%NGxwS!RD$3%r)V{p#&>83Y+X33SZtxQ(63__ zNd(FNInQMhB2XF^1|~}iJ4KP!Iz^l30eHf?GbP$@qwQwFNNh#lx89;ggj|(+J!Y@b zzMyvHt{oiUy+-eqZ4LddQ(b>u6G>tYplZitVvflVRUVOU#SuRJ$_b?+EOmYYOkFZ9 z#d|j(K$lS+ZZF>8`2n2lCwosQHWRZ-c!AdKf!d^|JrVa&{h4RSvOuur^X{b`Q~VD_ zarY=y5Onqg0GXva1xM>lOv4br_ovR?M!U6KQN(+R787)fBD*)0sMa*yb7&cyF8B0U5xiaex8`ZF_dMoP=G z1j!I84pR}9wGt(MvcL#un~g-AV?y(HG(*t}DWzC+iS*UOG;_Y`4}a&sbiJ)*&wkK- zG=84xZYORn!;`z**F~q>AzpzN<@==CoI#-a>`Ni!nPY(16I=n-;m55`4Gtw<`E&J* zIxqo*-kOd*<2tV>Ji*+^d*rx zOC!bc{eZqv?BxO(IWK`m7{Mb}alBtJ#xa9eq?i*3pGt$Vc0F$R7nk`>8&Q|d^v-Wi zqJLEUe&Z~$;@R5}QuDGGf3tJPDNVOcF3lbO4LRs(Tj04*?s%O>04h+NPhj)e{a{Hv zP2&wTSMoNvM3(Hmx2wU*w)%;!qNGLexCEscK022*el3A#MgY*JQVUcE>jXsqh!_To zTfc}N?rD7WAp~o*@jMYgYdr}4W|G%%y zJzu$%F0QoaS74b(c_MBEmdw#xif8c=yN|Pl)+Yw8 zSMl{SgvK-KgUk+b6il?W- zd`%apuFc&Oo2EMk)jb-iM6rZYDRH#v^I!oY0}{p%T{k41X#%%SlNyoFP=t#qt zZBzN74kuub;}rAy6xs+Zt8IwK$MdW1r`jQiytISKc%_XM4MKwCn>>1x1A{)Iz1WRe+09skAnJTTxKAmLb?*=!UH9nLCNLjE zU?Pi*ha~K*G9#!Z*m9GpFb_T~)IRaKEgX{1n92I%;wI_Htl);H@?SUndR~8#>vm9* z3jK{7mR>ez*}!|74 z`ho+8NvSwJoRN4#J5P{_{Nz8|L;xm~BC@I>nxlu)L_t0MhY{{`$D7vY^FIW2|O$08=BDq-`6y0R`ZE6(KchZ2VV+s;v6M zxiulgsN=s~a)HT&sok}0aIj5P=$I)^K~)3K+TP>4Lw}iir4>j9@!v@Y1l4 zY9wp&jU=$KWei2w=|#U~N18L*Cfg|;i~i&XbX~f&lw#cd_Iz_wcmXtbJOl-eOoG7~ zz?l0K_Z!{Euu?T_v8{=9*WkYcvB%VknJZ>$An2HC0P$l8_egYTf|NjwQeEeudxaE} z!5PB>E1~O)vv-zUcMVa&#`~B;nBw&G+`FmS`h;JvZ24^o(MMQ?cne(jyK2?>^~tPp>o_G-_f|vu&pa(wNqMF%6AZ(e@a~q1s1h65VZtD^QzXKPjh98VI2qOY8IdTqQt0wB= zOdcC}jXt3itWa8aHhUlJtsO&z38FD24izvbCLh05FMUstgz9Oh&6R4+e(iqMnuMZ4 z&kP5{;#hU%=Soyc*%W2DvSQY37r0+7P8DS_VJi~hBo)Tk3aR6Y#7=^)?BB&Pxfpg* zCX)+Tv!_Pe!|!i~uJN`>xk`?OrxnumY2WQ{Mgv4~-~5_^RY zGwm@X$s+c=K!B|mXl&9|WV|^`jM1qA>;!-%lf}5UM5uaHo3$bIZA8s)sy;PZ>j&;h zWz_SV$yyL!3%Zc8-SccBU0ST(9iBu`FNqpc;NW2K`;8f@}ua13^ilq z8x^x~r=rsE7fMFJ4IAwM+jYQwd*CWYs+X0Zicq>&f}4cOa?4mwUDXBV!aV>yo~@(T z;8NlB7~tgNkMvD;5IgGojGI`)7Wv2|2u&AN<6V3N9Vtcs zfGUlg*pqIW*%}jS==g086kwKS3_$OF6aO$$jue4(0|FMFG-f$V3DB=!DZzuJq6bpb zrDH3FCB=Aym8StW$?m7uJ}2D|`XbNN_0c2eL<27UPs@^IZ%}>G}^*M7$upv$$XeE3v+> z)W4Iykz6fRDI;+B0F7hxoKOQW!fu4dmY7A&ZQCrk>A~kS? z#gnpdqbmChKWI)Twa=q~UmEycwokBHcqFy9Grv&xd2u$*)jf$+<_qo3ck847{UeuE zRN9c$KesK?^anZpH7x*E|A5%RrzX>n`GlS@bIpAajS6{XlStv_AJJFxpd{R>FDX{t z;JbwarQ0VK($&NYfe|+O*FoRbG>c$`%=i*x#%aN2K-UKYc+*6H!@UlUf-a~_p;+PH zZoBtJRFtEG#~^rYs=VqNM%EZAZ7(j+<$<06k^^62vnEiXS#F6}dpkMbA0>)4bY>&^ z5*^tawN!n29u9PVr}8x=d#XG~S|#U9HIWKrr4Sq&JRT@Hk4F(Lq}I8J0%-i+O4)F+ zLZH2*XSy^vZ?F=k0@E=bF9z;$QPRz0%}{N4U2$?C1w=TgSEc0y+66;Ti33O~F6*+3 z01XcUBIXVjpd(04HIb`m3g5caKqiv=%oFzDQ8X&zAz<^aDr-621{caUu&T}G(-MIV zHx8s?&j#D4(aqQ5Np|uA{eK^T0AiTl_usR0hYnmHdXW|>> ze8>PR6j1#+V2G!HKqV`mxSW%~sHc(%-@5$e`FI?Lrp-d|=X4Yp^U@JAc_x{U3VlQn ziGZs21t=A~ebOy`{1Q97kJs*a7I4nUtd=i@#Rk!Q zBfSByIHK5?MJf>OPb-z>l0T?1u^A_0w+mBbPq{z=y9Z)}W)TeIGqN%S7#V`c{^Kgx>Yye@0nh7{^mTAYSuS~*_(tb_ow8j0&hJttLP!AGL)6f5!{C5qAb6dBDUdBvehJxwEc>9%~f5bpg=Pe<`OB4iG& z`R@sbS=+v6-CyUiR%*k?lX9Z{Z-G)5~?i zQ2qFgr^ZI1`9s5oI6Mc8Rxri2>4^WCa*!iRip&@xy2qI`Fv4|$ElIL*c)vgde@nvz zA=K_q}K?b|H1Z`>9CW<#T8Fmg5DWK=}t5f)tBy2V3_>+8c+q@y3pHOR5YR&jW z%wgmhIE9@|qKq<*3Gpo#_k|c9lh&dP$Z_5a56#dTM|bksIyrkV!vnb`cei0x{b}|2 z$ig6@bu-+80FgesEH}A@Wf`~CzoOcRLw4^1lc1|)*VTQ|BmGc9B`-ghT%zBbLWh7= zfoPtzs+uBI4CjQJDpaNKF{(9gSpR$qn{cQbsT3~kO7C#LpnMlwN$knnPDIv)l#Oi5 zpqywNFlS2Tlg!w!x=8qK`8Q7qPrWYdyLJ-Rj2<+Y$N_ux80Q<13?2s;{j40YwQo^} zU}`qrBX@Jq8)PzUOm#1@6TGJRioHH0dEuz`M5W~DJ_UqH#BO$Z(oj!xrmrv=sz!9a zBJ`S2P$AQy+lcEg7v$ND*Vlf;H7BbJg}dzYnBvjWr(;<39wc?#BP(L)O2NV)$n-}K zA#FP#NsH*=YM+5p1uRZor35yZr8uA;{8djkeM2f(wDT^xZ0nmK#l*L#fQgoEBG!c{ z*crye5lTx%je69U0Qv1AKn=ASg2nOUl-i>FZs6-=o`bKIi=1mAVYN#sjugyn?CO#} zzb&yk30EHM5vo((iz?{;rdoO9Unjk z@pVSRomY@$@tYc_yT9(#WfQ9_Fboeff;(_5^ak8t;km#+7d%DIpW#%QxT7O;`Tn8d zn_xkeOQ>&+%XRMr_5k_J4;`^-eg>(7qRy^zph`MQaVJa=ah5<1#aaEB))q;NyAs}l z?`v14y8%hyKwA-`o2)8eDcT*|wSpD|{WliGJobdp{`k>N+`(KbJX@dChbE4={Mms+ z6M!Ozc*jF!&9mAi{z2(=mEPI z@`$Km!dd_&nYc+>XAM;*^Eg2jDGlv48czvM0#AmAfFf^ggsbbHQnO&T>ejJd3Q7$G znTIQb$RHa+)rT8q2B8dfc&mjK@J?v-PU@3Zf5A6!Ui8Posc8h*B^>kat-%MIck%X9 zirKU_Go)R}R979HO@8X6&3=_+7niql*r@ZpPi|+QRmz|^hev>1#N+;Y8j9P)RQO23 zl=zU@`+hrxIx~hxG|~kZIccU|JgyqW29b_qCNuz;?4nP|$*sJn46if|>~rr_<}I=| z)ETFCdJ?`D5P9>%H7KM0U1*h12(E?yS}Sg8`ShmnMey=?*p76k>;dSOmHSP`a>07i zHPd+r3;mb=Q!?{=qT;zdHW}eDJnLkUpg!6FI411UJW{Fwr0YGI$B1j*895*I&ehwm z8N#36D8QPKODmd??T=FXbYx3Oewcv+;03rlVm)uyr}L&(s@^xSX~aTwmw!Q`AJR+*rTW3yydMazB3%n5GUL#0%RG8Hmv&wV-L98?lUz#cEUGmL_ zxyDArANt>apKp+bc48r&%pCz)BK931;AF=Yv(?RlXUTL$ER>}>(r-*hnGN<-=96Hn zKQ}%YizR5&-=&^5#(D=au1~r~Zsj?@gImM=WI!;eiXwJb7KxIbAS{Cw?FSZ9F3F21 z#!2avYN;h~c7MALyW2fd(;pA!+M(ij>88(M0hsA`kp!#OV*$$7Mjm~8KQ&xinBuY=frtUV_qOsswB zZgs%~mg173e5DA!9M>AD+m_Pk&fn+GSR*HtWV2fm3v=x5%Xww<=94C#Vrpj^5My87 zDMwmIt*PR<-XA~c1)?6)*{-eMe_wabJ)&<8-_OdS7J)lC_~WavPZ#{I*h(} zR5oxOogX8BHDXja(oW|s7Ft`K3PTp+zec5zZQ;cZ%W=`SBF2`|8toBi;r>YFqY$Ng z4-fcJ%4ruS%3M$ESg#ab~E)|(&0=i%iO?&TISXE)z^aw zC=^kDBI`_aht-&!?`1BO`PAL?>Q_Chtj3JIt3Fgx!=)at2A!U5Hy?P zGhHKe?9R+S)9(qeHR--nvY1H8Q*p=Ao!Bo}pp{Fy=;p_fl#>LQnjIgpzm#*mZ|&tB~mcn%jjAc1Lnds>{c6 z-zq^}6=;8eBFHsjjz=ZtUK4O~P?PDJbtsj)WwAj=8@3)<3-WjB0plx}<`yxHO4?&P7TlOd(1kr;2o+v@;+Kw&`tNZJU zc9?UmWSRNbt{5g;O%DddCfz9|ckD#*Dpmd`;PYZWCG~V|C(i>}IzrK+`9%B7nC zI#wo0wx*sj^~6A&fsNqj>z&E@&iFpPEc;56B0omb!u5CH2x1HrKT`a&7#`l3Dz4GD zoY!YX84mDjn%`f$dP*?x?-E7tB6t>2D07{2GHBu7aHp?NsFgZqV9uC zgf00n(xn^I&Pya2Eq_?aGuJ|j@dyHpfVVL669TDAY-=^;GH~g^8*Hh+qh3e>P6m~V zxAdgx1m8fEdEjWx9v&kkGiOY6CxxtLfiuMb;U#D;$GC?Z#$7Z|!x)*a18yhl>$#yx zbkqba$kB`kORY7S9#(g-Wd~Y*QhsIHuWzN$D`oti(!`0Fj2hNzW2*y$D%&gaE`6P* zNfH_{Mw4SKfToG&x0x{!v^0dy2i2-Kq<>U_RGzm7phh=7qyx@$YtfU9lIeJiuu+~a zPA|vJ0!~NpVOeJhQ@3(GS+4?lp&^|C6Ro8WRfsKu|4{1HCh}mvoG%TGawr9?O9cd| zGDA_6zzEYI*pekWZT#C6IS|FaSJ|6mOYzYZ)^}V5+wi6iCT~u|*TYIV_&E_^$47FA z)w88yZW^`LGdim3M@Lrm)JKl#veU)ehzR~RH)Ekc?eW#v`{@J5L^F(!D~yxg{7{;* zBg>tH{84p`A)UH^C=??R%vWvF-bzQ1aU(sOir2OuWe}BR5tl)SB~BcpGTPG+&GQv7 z`aJ|Ajp_bD3MAT$(%0Dwp$|+-4oPf~^7#tt><@QVE0Hb^$`*uE0Z2(fU{R}YVqTk7 zX&yF6hyW$};?Kpa@8=Nf)p;387m1amQyXVU>DvexyorDxTy)afFlWKYOACMCu*WJQ z&9U5tEN2T-(_Xzc_W|x8O+X|g4+w}5*iDo$a6IR;=Gwr*gx2GKEvenM4WIGm0 zl?`%PM&$i5f($CrRuQ1o$<)whfSNLOj8>hicv=^0B8@0mh=UN>Ktr< zig>?cQh6ix3f{-|+>@ub;O4Bb$t%c$A%Unq!qIRrnCgxr_oB9z*+ssStV&S)6!7O` zfOaqD9JPQ#W>_FFUY2;FmJ$`a9&J1k4>ri zulPFIwDF+#t}D>LT;{BgB2uIDA7Vb-8IMJ6oyA0D84pkE7MR4g9&jhH!iDFr5~&DLpoIoW@f={(Nd2;$XxQLr3^>N$-5eTE?K{v~RoJa_f*pL_6ym8c##F_w&)p-cVQ+*OsF6AzMr=TWn z&|caMzHTIomw+bF`#I9-(?D^OU3TmI zp5s-?7~_Nk&l??GSN@OoX~Wioeg@Wty-YaW?M8m`KwXLs8|C}(fbLlE&5<%9crojQ z9w+S=w@A{QQJaK-qGa(HaSZ*ltM-XRT-{WBrnLv*(dg6edhmls#)5=MwowMdnASjh zvIO6kb3ror?B#<4sVY*LgtJXmfTOwy_o3GlQRbu~vJ4&UE3?F-Wnz)?)zauMiCNO9 zw4C!Va}D3KU;YU#HPsu5F$Ok+J>H`1HqU=DA(A-Eh4BP1UDgxm)-Q<>4L{2P_P(1? zrL}e9S13uvXswbG07BVc1HoRmjdVUEvC|sUw&25t3U#&*A*6 zLsBB&4e@4?RG1xAT+m$hi8%7%8J|D_#er`b3+#C?wG?xdt8#b+CV(PVQT;Xl2R0$> zn;vo_@eES#=6B{|Aw#WfA?9%dJeewD@8vAGl|+Dp&!2MLXCfFWIx6_nD9yTGI)x(5 z8y$)n$)DiuIN7?#-tRHd&K2k#q_fp905Kg-mOoR~^LYnu=P1CS|C%cSx-ky}235jY zH>r}e%7`hYrOi^cNVOpFvw3!Wn4Bb@gQW~y<_np5t@lJ|Nug0Ns!k6SI+$#AFp~g-j_(y| z8dPG54K@au93GxywX0wRAL2|UI+t4aP+FQ8#iUlptnLdw3%v&$sOU;fGX2T>HL+Kf zn?J?&8}3Brp!DE^Z0V~gU6>53ED-U8?lK*Jvon~LQiC~*3189LcVW}G-oxS|(&WgD zfVUq)o^Lxs7S{Dez?V=ny7uLjX$J_IL;y`PJ<_ZK`pFuMKNI{U^L9(ixHmHN+tMP9 zfsFoZWk0-{P7hQpl(pt+dGwc%MTgBPDuca;Jaa_O9FMj=-tp(z+xTzFTd9l>M3U2w z=|2NxdMu&D`n>TbmvCZTJGxJ}Nj>b!IA&Q|Q)I9wHI-~1a^l~Cs4=M7f~=m}rlr2Y zmo!BxO#;&N2!XxP`wRMF)B3JoyL(E+K}G{Jiq>ll`Xp2dx|)ybkG{RzFc=hHez)k$wo)mRnfDr zlm}DuoC)OwS&NATm(n@{kA2yVAw~C%?ota0u5ZI`ZWZqm5&!dr4R82>ySI>8Gvn^w zLQcfW1MxXvXF?RxRPzyUi#gZ}y-o3IDezr9ugpBv&_uXy8Qz+EHwhL=Ws19s+n%Fd zR=c-DH_FF+&#I$XwWscRgl%2)U;FP+UTjWRjdJg8?%}qlT-`2^hFdLPD=C&dlL#U` z54aQvbGZHTt8g21dpm=5+hTfa+|e4QeI0r8`)@xQKA*jMb4t3;Qr?kg`Sa$n)LqOUW9$Q#JdC?lAeSuhWRUY2J>HypO5c!d|+7& zmAbgTmAt&g(EeT7vO4YfbUS)Vc%gX9a;jhwCUvWKDZYwD#?V{pASoW>jrQHefRnGb5wbh@M&5$2qJ2(5cx3`-|b|-(XZ#VBg>x92_ zT--L@eO=)e9Bb=6XPe2*nG zp;qbEf`MBo$q+qW`Kk=)o?8|1zxUz3)R~^=g|Ntb<)PXgvdsLQf9rFy_uB>K+A7q^ z|C{@s^~e_*ppmh)KPH0mbN{}@R8=;bN22mx5)`)1d1L?er_YDK7LZFY{LkJ>R$&ma z2fvzga0ylT_+R_)wbE+|2|gU5P`g^v*20qm3w6RzqOa~k+HtaqcwP%98ZBicJ!G|@qZil56jUkuDZJO zA3cMVg5H+3{r8~wZsA@O%d9m}loW_ZYTS5g`@dty;VCH@&{?+RGd+YJJ}BgntK$f> zc)VfrVwQ2LHH>{6Prmu~e+62DuNL)O=*|d=S4TndKVX-WF1pb$>$cBm5F5<(_YRHH zVcNus`$fw;;tHuE{{m+-3zjS8WQjTA&;n<0n6(1=AE>q*diL}-?$e&f|AMnVTkf}o zpcf@UvTK3wtHqviq)M3#>R0JYRZB5HvPw;B@MIDH5|eyKhFBbp>z0wvh?(=HjlQOi zU1wwNxC9C{T^n74U9H0z)~90Ws2X(T(U#H1uj@SqL7Y6n;iTPo@qesx3-oZ`lu8^% z>IWqDP1pTzZn>v*{K;`2$dyQ-)+sixX1@G;T99>rw%RK~_Og=oYxlGH!$GcCUtJ}p zJu`l_u(SUs0pnKEaa9h>iX3Bj6fYte3$^Z>z4*ttI-$CQEPC9~X=7^rTl>e-?(>As z)c*`5oiWO(pMh##&z0q0>qq<_I;d<=h<&t3H4yNiYk&VqQ+f34KXX2noTSx6U(`%E zh=3BLfAJpxkVY?^OX_FZYn@fn6s*4C{7wlT%uA7fUJl~SZD4reiePk$g*E)AhNGo#Ebvbi_pnZPvKjL%=@SKIqi1$os+7(oE;=Sv+%~!BbMN?%z`nPsDluMJHNyq=8{Sc>cdw3EeH<~$NL1ux|>)L@lQ}*6V z*X*Jr`V|G&kBWn{(IH+6X2aJ?yo@mkFWG$~Y@a2;IQS4w%CF5jL%*I%-KhRgq0#A~ zPWu!g^pCnrK7U;D55m+nm+sC7kP}~-bNu+c;Z3T*V^#UuU^zt4Jum4~3p4fy#~}6R zU`6n~xIY&`+{c6}sK1q+zy}&!uMNhx#0!{|xmqdXys!$Qw>CMb%aR z{#nacc1o*>KD-Os2J-6mpH>&$U%Vd!Q8`ig26+Y!JT#OkWosyZSYi6 z^&S}tnGd=?q*a!GDHVRJ*RN#aTfy|Kinz3%%jvOJTnlOTcDI_-R$pd8<;RpU5~GMz zfn>R`tf@G&s-dK_3C8#YZv#(0!S_m;**ifV&puiCiCen1v#gRZUPkC~@q3;BOQO;q z%Sm(nAXR-g1ANP_5?DS$zrL_evN9ImX1uXUxs$6DuYlm$M-1|xvCOl-yFDhhv>*Rl z&Hnpe2>chHJ?RU&4jIcZ@67{Ryf;2U$zBz26;%VF=iA`^^$QPt{MD85d4FGo5C|9+^0BEAL4 z8t&=*$0*dbGPq};>X+G``w!=zS&;GBG~9ONZ_^*vU6kCtk7ZZMm`nTXEas-1okdZk zclk8u_z7$EDTS5f;d_55BZ;EsQR=qFduAq<#f2mB<^MCC5w?o%{Of6cPH#B9jPg}} zH(dDTizQ=i+b?m3?-Z8l%lsqkfy=SvX4w+OaT|8!&i_cTms+;DhsO8%&uz?HW75u@ z2lx|v;*vyA{D1KFj^ULx+rQ|FosN@^t&VNmwrzE6+qP}nPKO=a?AT6j-o4Me z|9jtk&i!{g7!FhEC=?krwN!NlV&}kgv z4ln-!&qskqx@4Sn@VTs{9)AU6Xl^!MC(#Bza}U0o4MZjCkh-tzo8zw5x9~2Ob+Uzd zjJ?^fv2Y@qVw}o5Yfi)m%Mu@3zj9NxxBaRD2tI7^0k$=BANq6l3-h1ontoo|p(Otz z3qxJts+~QyG3gTe;7fa0aBp%r^>>pWyp#&XdYlSCkuoP2Ow)+PxezD7v%TiAf z2XG_Nat)8<50Ssf0``pMPn`_ODyt>7O^C^ixqqhp7Znv4$AI`{F#65b`wLTn+8F8 z0~)UK?!bXa4*vwkY5MFk`Oe>jXHCfF9z99xiuA<%Vjx|;MDuGfh(#iAX&#&xE*=?8 zuC!2uSX*V8WHY+*!rxJBAgM6!MH@3Fr!v2Q{;Nl+So@2sRU&P<)M{pJNSNzimB?P6 zPD&2M0YlAi12=rSN(?=2c9nv{Ehrd)aju?d)jPwFYDTyImViVYK`6>XVNkQM`I#3VXR1i&GY}>{0GN;GJ5mcXHJ^ML4bx z)cPyjR?9JeW&Uq?Gq%+UIllRpRkWucnkcC4B*9Qi!GXlA&IhaqHsP4uV(-p0fx=C6r# zEVNF@%E!l5q$b#|J=pZ$xoF(Acn1=XlYAbmVK4#CG)$19s96_mw75w^I5lO7V%hu& z6+sE}CXwaLg^Nv~Z|mpfVC&Ief&N?Ypym6zgo0I{!NJFNd@cnVOG=#=W~Eql8#%v; zf@)aUAX(2WBZ&^A@k)*$_nuCWF$+3P@CE2{6FWGG?X&4haf94`X?)h4t5yctt z4^r@zm85?PS^peUbZ2#;WSu@EQ>uIFKE!0=j`Lij#NM33iDipa>5%Ssvp z9g8a%bsl)u1LCl5FgFZx8t|PlNgC>A-R5%={o8*`*2w6R_?39oy9mkHUvXu3vh-%G zWtdFvtHU~15$ZvFmEu1+s=BiDrDyrc8E=@A2@KgIHc% zRFz6$XMwhmObOZ{J#G>?lx7qIloqD=9KyekVr7XwYc!({vx`q9iZCPx4`dmrzDko& zCy})mFYZd@!`?#&@NeS9#$EZ>RckJ#Uj46cTh?#JGf)PHkD_}RFgfOX9a$+W3VhgU z_`IsppGLE~Y9@M_;1oLu)b|@(hW$L;97r(B9|5%TfOa5CZA>WepAf0KW*$& zG-k~^{d!ID_jL4^D9sAut1VMS$j>}o!CaEPU7ZGgrFaqTNK4V~&6YzKByt-=?Xmra zfy(*ZBoavJ=c1|-f{V2N;8e+2yPOX0QU5!5Y~bIr^e<@THF#96E+P$!h)k^l1_h)u z;f%9X7_RLq&C7#eCA)U2(>a!aMiP;XP90$D^8gDjQKC@ceCR#e{HGxJ!nNGc;TcdN z0Lk2$e?8P=Prqx;Xm@jk+3xt&V_}+*A{KgH+-L`IVTpyzoGj>3F2UzW%4^Ew^eSTW zs^M}+ zhcdt`Z`%9PsDCH*zYGZA?^9TC5#}~I({CXEtk0j-BQuYCq-igO+y5i${{6Y8NXFf! z;;6ANoY-fduFut!{m!ei&ReLqx*zA6C;zKz{`G*r3m&_Nf=^n6Y3SN2K+su~Fjl^K z2e&gHtPT=`(*FOt_Yvd^`MI)@Y!aa;SoSX}@;@5mUyUQ(`7!?Xb|hZEeDiX&QVP8C zH){TGw7HjG&c^o|rPQWxPx~$ne~FF%lx~0D)M1{`m5{6hp>A(GcAfEm_}YJU(lq4t zOG&{l-u|24XK9nH)-Wg7?$-*CqM+cs!h@Q>ZR z%Cul}hd%wM_^<0N7YiO_W8P}_GtSkQ|IZrw%B#`jZ|*a#CYVQoaG|~`*$+Ak zGcxReq~$vrJqvymYOntqfsD}CAW|)W5o=+}Kis7CYaWDiG{f0=V_6lXKGa)P>wzy_ z^&egRS>U?E4DApv<@f*P1hFDQ`av}49n&)x@SXfez5m6x{>?b!>?$H!BCKZ&Ta^dp zkIVl44?*y6;_~kp{S$@=8~5b?_bLAWy6r!K;6E?^KbUqIc?R7zIUVp&I>kNFjBrpj z3hW%QK;9_1ee6LnBWEvUn-_Ec?d`F}n{to#7K?XSVTl?giQ7WBdLHwcs7v!3vSxRa zZhP-2n#Q|2utZuG2=x1+4>p<~2z4_NfI%0$3G<_6z=sATE}+l+@UPnF>u~!hOJM6+ zjpUHBg>^bCYYaYHYW*7>|E|Ta0GF&&P$j^Ey2A*1aqGS0CUFNnzo^*?anEh3b~;u| zT?t*|oy40k0yMVmSCQveMX=d^9MJ=UenqI(`M4y<)`xQVIdQiG$uUv>))?TM$2YsZ zQ=F!>vc*0c{^L|2q4^&G@J~y#*=Y$S$?%#R{-C9fx9f(Ia4x*7C99D~f0<_2Q9WQT z=zdLpo?SU@_@_tlz+U3CODqsC;`C(ZQ?_;;`A?UgvmN#Cfj1{KnqvZucek8yC3LM; z`(poNQv4ks$2S|M_6>GfrLQF#v48r)T6k$?Y>QSkpt>>MT=78jpAO^GD9iP4a#pc6 z#cIHQV`fDpf+DVvYo~J`x5f;oRL++&9Ty3d)WDFo(7d+>Hf8bWHJV2RsG$D$1dL4c zaRZ$ec?g~rDvI@c_E#QK?XEjF73sQ8M_?ftwKbN7n)OtIq&k%+FZ7O$OJ~lgGJny= z9FdmEFL2))<4p(Qk3SG+h|XPlK|_=5-?jC#5C4)c|LMgFdIO2vae%9F&M16$%^>+u z@}{rQN+`JmT~+t1K$Y+j6p{gRlck^$&*mTHeK4(%stvV^r$N4>t9(|dHS>u8c?CiR zVoZKWDZ5{NgPiN`M)s_kUIZ)&>{HC62w++Nq%$R~PlTcNr5mYm>i75;nfh0{h+W}w zW;Ols#VsKXVs!$9_KV=_*lC#;hcPz)Wq@ULf_31u_%vxxs=5)e;e;K zxf3`gQRDi1fLOUXVdeOi4t9gr_j|%57Okdk&UuaI(0z-6L&a^6sxUSjEQt5|@7kKG zc3<}&C@wBk9wAF1?E>D z@EWlIb^ubhR=@c)TmD2>+u&y>GX2uS8?YsMo9@EJ4`}QbLH4)K*CzxJ5o5lSh4nBz zae5y3lHm#;1nDDLt}&0w@#V}A1)Q@s=)!?MF{8(Tgj@QOD-`ko#sU3tjWcYjUt&?Q zo?%03mV7uk#^)RyCtW`hUu)S4EF>t|-+uc_%!ieTC2}x6Gs7Jm2z{O7yX$P>BW6Jo zQQ@1MkK%4-Rk7+CKi9kb7I+O$jGs`ir-TNF;JJ3+^F2SNW&u+E3~At}EmdG|@DWwS zDbR$haz=MqrgciV;h;(;2o@|G-fuGEH$p|^O{ACrts#FnAcTGFU`W92hAK#qUf0|x zk&}=RVniIukO7iTTt9`(y93gfXm)%B@vd8AddS8_vvc4`BZaW+Co1YYTW^8c5W3h- z@$KQ%JuF)SK(iP+7sBrGjjFKCMDfsU5#`;r+2akbD-N{#N z&5*&CuR}O&y_}gY`3r!mT;tr``|mnQB;oqWrBld_r7JA^w{L2gJ;m6JBP3NSrkr*6 zhOiY9f|XNE1~GMk*$o0BeSe5E)V z!wW-ISoXv}Akj-kC=$GCpYZvOdgY*GhX3Dq86^q;e0+l20sifWV6s8>nBDBJfZaC= zRzyGgq?S!9DYt4oY0W-ENG+CnJQq4R$rl8Gn#MUqIW8O=nm)lFCO)k-{UFr!g8sAE z8-n;@wCfXZSkcSCm^mq4q;0$DZ@L@4JUH31hA=Dl$6dsZ^kO_Av8A2a^qkzSGH&C2 zrt!X#7r9KUNO*?|3#Z%lfkC8}17s5)0L)=}M2KEt-HG!@`KO+!oaBMulTJI#l&hFu zmYOdOWD~(L{a*C(E%^NE=uLA->H4DZa444}mfvzzDY$hgo5#jfXy9)Ft5;kej(hPP z2v=vAM`jduAtt^x@x?S?csz=J4hL?vlex8|u`AAHBVOtU97_8< zf+g+WBgPpv2~nXx9-CP}K+?td8QBPC7#~rkf3S1nKqdXzvc&gRLTV~OqXPhtaMx^f zlU}aDkYZ1 z#`4EFF6@7QuT!3h_T%+JUIqZ^^hy*LTHgv=hR8C5P^Fn6FTi`ltDI*UqfF!@5^yY{ zPxq3xscpfnk&+q3l^y7&2%><$_>+_B^7R*D+Co^RmjrS2T(PMWO3f5 zR;SuaT&{NK&<%uxH0NVQ@rj~(M84&xxEQ~AXSDiK_Xr@*k%1R~KDq)Bs9@U2=i^14 z#GT$k<{94}AarlU8(}XI!l^fvs{JD;SecA^3e`?6JQe^y52PvIF@Z78A2at8Ff9aB zOK5(U%56nUvE%ua-W0Y-8pQkzy200C@2Z@#1ebUML-ZJG-xgim^mN6qUyL> zEVE{lxqi$+>zY(pJix}Eoz4UReqFjUfDEhaAHw3cUR8-lROgZz$m}g}cdrl>YZ)^& z&4F2x%Fm&Hpx%SvI@N$BI<2A{Mj#uWC&8E;)fF93Q1p^nYY&z`cJ3E z1imkQZ_MpvT-cOK5Y-Cv>@J2^$uFkFqFn>r&=0LKEeHu&X_`E0@w+gY`h1f0&s_uY zj-b_y=yUPEMdQe~8~XzFKya{#;QpD|C-{NAgs}d^)KWgKG!@1p<^e0+e#2b@c0Ap} z!xLh(^;x1&%n6?Mn=8)KfBxD}*_{WD{Z!lR-g>biS5eQv9|^9_Or|kHWpl-V3Z;~i zw+tDapD)QMX%2c>fXf*L3~`EC7fF>~neEA(yI$9*Bi6`Pq!$1Hht7fE4p*old<%=l zm`I-59o?CB2{uR0HwAZ<@>+8XDTr#~K+G zjTfx3F*e2&QB)7=WVB=6FQ12 zs0A3($49rkMpQDw$NMqaMrON^MPp!zg5ogbSwvRFb4yh%R0@RdB&1?&eelg;94Y2_ z$BbYEYb|5|0Fr4ec+Hv!T@aLVbFfNs(^qR@*GaS+NfUbW-HkXb%qTAL2O8V}fL=8@ zVo`rrtLD9lDfot*5=(xdtV@fcYBXF=tkAj3o0Zph=TZ{N{r!!3+czO0#sgU4y}C59 zt{J)$3#xZL?(s!O01%?S4WAtLSx*>HX-a#2oHoGi!egK+%ZJIqL_@K9CbeWt`e`|G z7R%`-@tg2X17PElr=0lmW!P9KY01eQK72m!hePyz{_PVtinPR)??#Igs*)AClqw&N zzioqASjS9E?8Ajk9%?ub{D>00BClH2Wxs^FwZ!Hci71HNO+H%vy|EO&c*yJJ6oK~z z*JQluHBbE97#nwsyLATnNDHtKA98Tm_ZqQBuVOYW4@~b~i1_vKLp?mP^*#jbb{{4L zGJL!gb5UuL-0yo7?T^7Aocx7{%ncB+QbRb+ao}Fgo4?aSs;=90r*#Rfo~5jk5N#Up zO9GYmzoj~*`9ENa+s~um+^Ip>V?@s`cZfa=)}V;7dh&UuKk*v?fj9Rk%BYRP745F5 zc=7=>o<6mNiJgw6;%GBun_}Ca(Sv)2WlDz7^p)Cs;!NN5CtI3tEp zx)OC)Vzgz9kS#WYugJ5mG6Ao7H5w=Ssb5L*Y^RH+ogzEWweu=I(%r(b1KBNtbB?$ka( z%trO%di)fZaj{4U%sZ;X-eUeBzS&Xi3Av{R8X=8yD8va?c}{M;^JR_L(_84sP{=)8 zXw#;E_)7R0KX@}Bm?uq=ys)&<1j{919Wf3 z_Yaoh7%3P#GtR98u1~fuX?611qlh?%gpK9yUd|RNZ2_?C@Ai8;3LBn~)j@T|1^{8r zojZ3lumF17v%D?H)!5zBQmCajEuCY|n_ukum+_>UoP9WU4K@MM6Z5I8$-(oWC=GXm zCIgeoty*AlABpEoZ>h?s_`l(-dZ;Z1q6b-H%vvK$bB#GN&79`s0A=>~{@qbBk~(aE zB2sO4ZRrrTfe!Htw^FE#E$jb|(ov>g>kpwTC?2fQn_RtW+$j_)XUmozfjVPD$|*VB z1`P3sPsjD&Fo7H#ze5oTFYW0DNS9*+viU{|mcDYVdcw=7tCMfE(_X9XMDBDn)B0M4 zu#wgMrO*W=5Q((NZsRR<5#jjFyV?FeBw~OdHZ8Xddy$}dX?Qb5Ktu_+kVs0Q40AYU zj)pPnte*rfzsY8Gw0On+vUxRE#ZY$*oN>o^Fq!in;z*Y*&(t_(aZ%Zw5~n;#^1Tuk zjY^Ek$;)IE$sO!`lT?Nt9tv%i1x;6t%ay{7#-vkEs_|O2FwE}m*i^CNKGzbb^*%BX zeX#r01a2|Dk$z^;)*<~_ws>P%GZqDclXjLRER^70@=vK{;MWps{19G8*;u)@qR;pM zHYY~L_KKC|>=98LgBi2ed{71KW>*Z(hCWS(&H?_kLA^h5Upor7f>L1ju3jw8oXtiz zcD;zExcWksqHQztjwv13m)a*RK}`+|+sK`X8tr(#^a8Y|&Fq1#k~Tgzn7us4lvzr> z#+>>?$-gJ1L^c#e%+0ddmxtn&m*Y{Pdp zy1Ik(Hlmo^_g(4ydK#7<2qS)LDm@*%C2_(|4;?D-5v`iqrxY)Av~{BG3a67_xe}>+563?&MS@L*wgWWK zo}FYU+Lj~6k3VO#!t<~(7Mj-%1M#xLB@j&cI0OX*AP86r^h~>kt37M?rLD(Qk|6lT zrh>xDa0ds*tp^H^d1dhOZF-b)*UQiD&~ocOL&Nn+YEsePCiM~3Je$gfK!%QsAz0KC zVH`;8b(N<HOCM5BYd%2p)FLeTqdN&3QW8zN~JoQeAzF`lWHjwKY{uY~R0LB zpsuIUAJFlW#mT2IvX7{m9Ctg z%ro%UV}QzhBp>vN2S*_7-BO+0dVQFcreMm_yy85f9~YS!vzjTbT}m9(rx=tLZBvPc z$|!1#R%@XqTtDcix5V|o?P3>5sVX-4$lVbc{5Bkk{74O1l}iyV<@}RR#ie$yFiL_< zzaf^(4&t_v8t$tw)blEK09pNazwGbX8XUve>Zc=Ygn2Kjy-zZrliKsHD=NrLpan2f&rqCpCod21u^*>&(VSYyTi(8r6jX=r!gK? z1lv2Mrqhh$4UCHA?mURfwZ1^1^);5yHK~a+n`FFz)e}g3N^A6Pkmr4Pc;Dkdw6)Ka zAhFkN-j*^FE+-uvF9}t^2P|cu#T~h$NWwxNe^KKiC%UYVj(d$#EJ_qn7dB$?ns14Y z{!cs;t}HKX%-{0hKQ|OO5^9Z7RS&T?vO8h}up>Q^;fZWZHLm%$aP9ju)@7Hu?e~GR zFgPC>cpXrwH3)z86{3l>oL~tLXwyDq0-+XcIoA3OG({j9<-wkV@BLie=}jS41Qzhh z@JO6a(j|6znXshGF*{og$I>awock7NabpZl_0$=BqSCwd%-;XY#;c`+>mZ(Y4$YF- zpikrlO_V_Lj2v43Tr}76bG&TobS>PPwnpVskAi;Mav!Hdas)lpV3~CXNLc6+MWE1d zVa%}+iQ~CBUTv|Q^?>okD<-Md{rz0J${&0E-XREPUE30lveAYmZ7(2?>8(kHC|ym# z;0r{TjV90UjC(!11aS^?w84(lx~UOghwlI{6H{to$S()^ua13pfT-p&BOJTE=?^)T z60I`TQ9+rb`**uFtgB$#^;zAG8C80S9|0BG81Cd(mhcKvk}Wwx*B=*zr~+pzJ*Vnk zw>tcLtArid)pB_r5hk0(uo6rs;52q)^YwWXbg?A#Kx_)`sA zmmea_p36!MW9eW7<2cRzq7w0FFJ?}Ieq}08au};;unCzzoOPdnddI~DZA115t=J^= zDxr+F*kW=yr#+3VS;c?D))j={G0Q@%J+e0anv{Lo&!`Mtm#xv!Y`kFo)D(4rKHs($ z=p#0CHGCTs5_yNY?5IyE=mSC_3jAJHU92(`*OvU2Jr8(5Q=$iyRjIa_uY+0MjV_b`Q09&N3q<=ZoTh?6e(9YV0ukHz#|K8BZ~rFWJ5cL>)F`EXWqszA@hK&|%3-Kz+h} zTwGA2Mxa7#YHSHzSF?C!`d%!aWaWOM`G2&}>Oa#86UD6JSJCbj>4YK(Umyizry(qr zFssh1i-TZgea{~$t@;rIbnmWslIZiB!H@l8_X+6g42G7zw>*~h!T(8*9D%m(eRp@6 z*$xUZ3&*#!ik2g~ooyfp=a6)ojdczt2%V}_wx+XOGW%vv2H&(uT5#(_)Rh7sN{Iuc zm3reFKslu%XV=A)2?Dl1)R=R4H+i2PRxR3+>6kl~3u#d{nS&ufq5TioI{Wy=0%h!b zsfeenCn4t1RmDb^kJ8QW=hYyFRbp2ePM+4l@)RPZ4g^!V_EQw`D}IpQH+K zq__S2=b5}^NXNC3--U5~1BYgAX;xl{@xv*H}f>zUa>_TbiYOe?L-_|Ug6bkX- zkwCJtv_sCRzKxVF)#Gv?*Km{A%V1Be?vY})S{vWP{ao%1)D$nR^ALe>1Cgfzt&^^~ z8Qs|aG~(A~MN)d9($y#Eex%2$kqI$K#t7v*`@qZv_ZY>Zg0m?G|AzFt#6Pgy&gO*f zm?|J>q?^Fugnc!LVgK;9<9dwfzq# zHbVOLur2sD%`QsXQ$U{qXe78Zc@+D77LWl*3AU?&rs*kO~1BvXBFqI<_BF-JEQF0dc; z|8>j~m;n6Tbc$d1)Q?ox$QRw6T*`e%)bVo57PpkXmuME$OsuOz+yp{8UXxxPoiVE` zQ0rD#flx`Gau`34Fk%+98Zp;A*4#+O$hAnWCXs~T=!Q*vBJM-!yL2bK6(wA5&rpWG zdo$Fp9K*1Ac!@`eT8F;tt*dJR;h1jgI`iJc>;(&YfcNK9KZw_4r|Ra<8iw%T-tvB6 zhd&q0M1a^x1ofih?SQ{stYo6MKn&3&vMU>OhBfcF?Uu7EEJ6!1Wc?af+<hwfSa)A)-Az!4CfX`7(P4sUAp*O+pUj zgR#?=r%5_4t<=LDBG53;ms!ku6q>F=E!~^$?NfW`&726a;`hVwVGt&y8cwxHZ@Q>^ z4xWP4=n!MBR_cxs8i7@tNj}kNJ-veZ2M5fX{TzN|iR8iWYrzy>fXgIh7gwvLSV7qo z-7swKNGwx<^@oNNq2Xr#>7*VZdM!m(DPNiRdmTanWWm;_S>XH~u*$?Y-m$BA)wFtE z1JGlW&LS~r8yUzdGKN~ib`6xWPJI11{UScFX^)B@*YMz#5$zLANzSod&cTe<+4sTw zUQln$-llnqy^c_a*e9oK+FBC7&+G5Sn=folz$D0e$e8@p;#~yb!}))*DP#u}j4F1L z2nBso;o+kFsV<8if`Vjw`}(}wjT2P+WtkTfGMPd!%M3VgPCD#szX1;kG-mmZo;-O{ zLwc-i9r#HZrJZFSnj$3}791|QRC9Pu#1T@@V;Jdjg}6GWXdJ?ufZ!Bs+3xtowJV{_ zqEH9K68A)3Ts^e~eQdFWvFK7ldTP3n!vZE1H-sMmtZzg5+RBUwveOfRG+1|3LxLGO z$Oby$IJ06DInQ|4@T5w8{yo)DZZJS;hYMs$r)rjl{>+>i({2Lq+fo+_j+_xhy8=wK zLmi9VwJ~?G%Da|wEG}(!=sRGCQaE@|%tH)U_Ok>VVhv8iCX9b5s`C&%pXOxIGDK!= zjT@2!o0tT84`GATP~$&bN+cAkg;;0%`GE1wp)sQZ9R4E z!-hJ;d0Bd3aL(n?;aeW97NDV4Kg;v(Y-{ovMGo3>!+y@{I)gWjNAgScoJRZ!A1CXS3l+5@as6i$1U=XxjBhiN zZDo}9@e4ELDI&L+m(PS`*TkhDE5h-Wew4|N4CbVP7X(n@S%0Uza+jZ=Z@C9n9iA~A zos0aka9RnmE&Be-51Q>h7>5Kfl^nfNJ&lB{mf;1~b4d<97BuB_8n&RcW`%AjJwY|1 z)=*c`9a03sSZuk^rQlqFLNx|5ezy*k7(-%+r{jr591>^viBkNM1sv(tnRi5fG-n8mtt>X!2 zSX5zNCJ!NMj%gQpNZ#XJA3945BEhGUxq44A{W zmU|fq^amC&$qht|T1?cBDzQ6d?}%C+ccxs7{8C$3V@WJL%2u>;2V> zy{=wY{It}26SSX8CsBP7==-{Ud;jqs;e9^@^0jJGlrgjvLC>{)^}EoIDAu2I&NtC` zk)gN2#bl(SQO_fwlV_fwAlv&K3wer(bRr|4a(=h$VQHjXcuH6Q!;&%sN{!jY46s2- zZh>&1oa*!g^tP}8r%VlCK2}!(f5+EM%w22_X!_ZpzrMCPYbHp;G@Q-ok7I#5KxQ-| zNznSF!7qI*K7>cN^~1Y!BMXtaSxh)st{ls8LxQs!C2{N^vQg76KmWMwr*AYQWmtl5 zN``du=_6>J@5nw!qZPe4ZFSS=-ji!SNoFY6>(YEad*Hpdl)B>~joLH^G>un5+*`XC zOQ61@%)zog%falLJ!&BzO=8PHi65Rt>n&HfnK3kRm003fVxlLzwo~B;nC)dww$ovs zrX|^yCe2U!m*8yNOnp3@eaUz*o)B?rKvdRV7|p;I00@{M&o9r`6g4c9V0$ztA>rZS z$(-a<2MYs%>Q;;rMGsie;z1t?O9DcA1#5+JTVX;zW^&|kejn!INDb&_IBRDAx1~?w z*sDeHH-Q|`us+ujm6tl+qdxQ4n1#`kT@E_k6lA-d0Z(rUlZq3nZY#b36T>x`)*a@s z%C&qzMQ|@KV-l2P5f)mqUtYB?bSJ{K=Y$U^t6Vdt(;wLZHze}eTqQ#}Q!HZBv5wI? z)tONSS}{GJh{D(j6)SROj8a{~s{7*!Ixp9PO|S`U?cr`EG}IR~v`Y$-1iU{RZ#CI6kAgVMNLcSP#% z%_b;i)0G;Aai zAIKd}umHzuLJ?SId!K zZJz^Q)=H$*PE?DQQnabc^B{m^#E>^|dUc#VZUi2*8I?fE^DtYP0Nol>5024#o`ld& zg(wKMq(@1T5W~b$9N$^#{qeJ?gMYPQIP*u$ttf1*+~lafdTN*(yA|4ipa8 zQu#2Lmc`n7I2XFbhktu}830hb9$HYMR9`lx3h4e3BfdoNysD;6H2I35=ugZGdzn!? zC7!m9^pw=!y7fwM@FIvVlaU$9Q{-3;*$xnEK~M`)q-fnJ6AP#i{6SXoCQuH$NFt!K zj!VI|Nl2E)4~6}1m*%H7vYbH*sZdDuDmw~=4}hsR(5Bn-FMP8xmuWb1$(DTY;yc-M=v$dE<~5lXCLs^Mv-%7h=^oP`~zf!EnvZB0VT z3SmZo2(PM+$GgujxIG!VT?6j+QYsGYN)p1@7Uu_yb{|cqVs*z8Hb;an)EwO=@;TneUsX*{O$& zMx=w-dBT`D^{G>z%~Ln;pvS`GH!?k}x$mR;$2$twg=NLe+L`aZ;mTFN;jmra$Stx3 z^lI_G$<=}6{??n@H)6=&b6M;o1G2q6;FiT5WB?z=nxzmXRqdnDFlC@lZW$aSCBt~c zZFDjCcIDZ3)gwfc#muHql9_|R33xjmb81>J)w>^UwCq&tow*~uq|07N&7&J*7zL$?xu!H2&~+1&Rng%F)b6yr8dY#{ywAL z7SCHY8w73{48A~;r3B}uTTQJLr~^O;p#TMk+AL4}hL;-d&PDh4%5+g$d&>mx@=G5Xbu=hDYbTYK+Di>uqEN% zy(^-O!%%WW@ZAsCv1YB2G6WBX>y;#g`WDBy3@NR&^Z~o)j@Fs>#thy${3aLv5KFyV z_a7*Gnmbae&(+!bJjiIsx>hJHu63c<j_sAA49oX6;RWE-mCt^iuY z>|Kl;W{k#KW1KAHe;_fAg%u@o-dW!8wSq%Br@iqB_du(&Q8oREmtq)6Y0{GA+alC{ z?bp$&33zFQmM)ary`@**h7JpRC|07L{SLaQrfkisG3*Vf@kmkiOxHfxw#>H@L3X#R zx-BwA4_9L86+BsOZNs<_N04dT!0hOY#1CzxevQFjsM%{Q$Y}i9f(icu{5c7KS@RP6 z_=*a4C*<7`LnsJ$GJA4rDqVwywO?MBMCilEOA9LTi~wF-Toc@bvAax2;@!nBTwHF& z9r7K%21XLCpHQ7M7?nj!Hw*>0yBvR+lT;kzW6JC&e_YkdemABt17V_ka21Tq=pvDE zk#B*)ZMi9kvHF5Co|=47x4`Bz#9hG!nC*92=!>Sx5UEAr$kX>(;00wq&oU7e2P%0JO|A#i}9;#Lp3bGEB&nfYgbEE(0S2?3is%b)eX#O6lnRCReo)Mfb)?h14y19;KrR?^$8P zFb=)MUU?+TK>nBiH(a3g)hVZ?CBoplauNw_dV2m9_rdKMkeJ|larqZZOu(^hQ3iCq zbf|`}PtoPnFj*6wWfm7+OtJLMOe#@P}u_p&eY5DV1v^#?0tEKJYlp9`nD*{p0VxJe?rC_Ha>n|Li3%uCF zp?RGj=i%ipyFs2tW>W=TbgI^n0}0Nxpba)B>y7e3r6!5qecJjii3i1SXpg{1Ne|u+ zWugR#3rYlDF-vr*Yv1`>E^UbLk}Um!+^|cb&RoLYIg{T1?XT&S%0hC`HsuU$A(V)NK1O<^Kr{3ZPbn^b=r@F4PB_T}dyGYIPFALqiF z5=2k(plw3@q~IT(r2J}G>YOsDP3I+%AM@!&)E|ztSvzbjOUFrYY6o6N^`% zEY=(v7!zhUr4kutFas@QoDWt~hj;2ogw7gA@p2&>=qWzkE_wI6Xw6v*j~9e1jG-}Q z0wuR5(~w3l*yJRMD%;5Bl&>1Kz)MSal}G_S*EuuJO@$VwA8-Vz;-zUJFU>B6 zra|b>k|BiaoN(*vzmz<+Z`!A`0trTbEpc0OX+b7nXjw^g>vhKBVL1B{$X~MvY_xaQ zMi>hMVCS57vO(;jfq7B4lILeW4WDvIVLr(kMM3%JK7sx`=PdNrDm#egsZ0A4!6=+- zIORn!&XJA^PiU*%JX~kx4dYiArXYnSo_4d?Jze>UO2nvdma%fphKkdB%h|(bia#{) zo1jA7rAm6jRJNAC6v=l*_ z=Y)za@uVd3J zpmHC1bkRN6Osqx;ok;kyyB>0`|9Bq)vj?yui*gwM)h=rSrgtHfX;i!8#@%x7lz5}w ztY(#;{v=mFBvY6?CjX;8+&+p%H9!FEV40y7)EUquaN6LE#{*8+y(LTzAd~tKL~F7R zwU;}L`~eiBEH7_+mBeS@Z+cuU7l<55v{Uf9P6vMc>W?&1n)_lDK0Ya7!cnccooZ#$?qZctOR~SQ=-~eTw3lfm&;}8{pvJ@ob+yiG#N%ka*r5ngd0P+>T6scICda&f+__ zAr)vbfq6Oj*#=e@a2Twf^Mn|Lv-@YpV5%p1=WSR^PPQ@QmvJ9Q=2AAfGgkx)Z@2)DZN9eO5X zHn#k{L$QT$R1p$eC0fWr!BS(3oB@TsDSI0iW=bkbS{KYJWk4Te z=i%>pS%;=lR>Szo`T?Vy&&KRx;X%6}=!x;)Qk(8rjT`rU>2#SrVQ)R3HHsmXu2>$q z-2yO|?KD4r5(t!MZS3D-*d1FWSo%f`-ioh~GqFq>fPj9rlw6T>0^f*n@J9_lM2f%Y zRBuk*+{0dKWSeIdu5!BeYz-ZD&yz;xeW7F*TK8BLWzY~vD>;LF43CtVV+j49uE|<3 z82rG@S)qDlx(r*hrSfkWnkcoX*IlAU6hDu$S{tE`4A?4L9J(+DLBQBbEFeW9&kTPB zkWe9iFb4lv^Iiu0S zd=}`O0qR4N64S#lP0sfT9g{nxJvK5Hw)nQnMkwm@uufM;JBDF9=9MxqWy+E0;|l24 zMHKz(^}~EV*=+0zBq(TQ+(+>qjll2y5K2#gCk0}VF)o{kD^OkKCLNlACorq0%sZxM z-owvMF|+S#uVFATZmBK_ZpI}v3N~!)%q}kjd(UkPSusr3s}fYFDKl-_DtFxlcV1Pc zTDEp?%E5X9&cDzxQK!NX6}xq)5{;NY6(b5&Jv@&44zA@R*3}x4iY5Rsm49>|d%Frm z%-A5Rd-a}WyCgcqz%d&c6O_A7zE23t?A&00#?+>IMStt+c*gt$dC1gE8%!BS1#T6)o=+882 z9jSqQc2Q`aE9!&uXsN5gg(Vh&5Yz*6o`kWp#>@#R7aXrCUdmO9)APTOzWl z1L615P+}~i1mCjKyHKwpu%uq3Zl{|E8gso^f&Zq&23($=U4%N%q30h&WBNINd}XZx zmGB1|L_3qAE5@5H0tieWsHD z&@`qT7nkADxJtHXb!ryrs=6C74}17ZX_w(3e9v~87Q6_2w@Z@2e@s68+3AU30HUy; zDn^tvGjgqH@U}EL=@p*Vh0O0%5K>j*TCX$hrncFUG0ox4F|-Iyk<7IDWUj~UxcXMR z;L{bPYFq$-TzE@55RdT(hAuoP~^4fdoZp#X}1!X)V4~8zBV({00 z)J{OX0gJy*Wv(7^M7?2@(PdJWm3HY`O>{TmDT&S#Giq~y5Wxzh8pVCCDPo=$=9N9& zp!fjr6>E?re1CmCfS8|Z(SK0kPs!OV_#!9XP<`D6DacLeI zp_B0K#f$y&y=HiEBt^hpwaZ)&)Kn|;d35djwXW1Xh>&oWL?}73f&P0WTC)hRZ#>r7 zccP>=i0n2hY0T`s^Y57>s{I-nY7iOr%JEd`!nGgt-yH&Y7ED2(lbFe^_AIegN69+^d^=Nrp{XhTgPm%7ck4?2cv zpR=6K&2r*D_I$I1(E;w;Q3pF~7yfNHgDHhZgUqv1YqgBrE#|@x<{cvGz?8|Y>+d6A zYma;-6*#!_HPF&dv&Naz+`n{%RkQG>1;IF=5ArjsUr?%hU|a|_4))u6BTe`|h;(g% z@FfV~C?4Wxgag`zf5v+KeER1CYkzFXjM*g~OR;YsYrO!<_veu<(Dm%4)Ds1F%={z+ z_*8=@f?*nQ8=~$S!iVRpmUy()Y>~dMYd!#)VZ^xyByxorZn)GLIPqr6W@Kb8;Ui62 zoq?6M6-YSMRwWriso!-sqS^MMFh1*XZa<`)idkK}xqX2h(Cy=Ii|C8$ca(&&3(cE82ga)^I+CdE z-(@?8sq=k7Nnk6SCJ#A^l`JjVyGNTTNUTCm0WYCAsGWcE(yG}a!AKAcdUKEb8r0lF zLO)ltF6+%54|orx5wN}Zj6Am9U~Fn2eoiBmm{m}Z4ewqL_Z=)@{Z^b1HUlnc-FY@iHh-Nn3DaNcKMBP2kEe$!G zUw=q3a?)E~f&#Q(1{^fM^L~+vAuD77)-4D(d9fzW7pmbJC;$LTiyNbBFw@-G9k)_+ z$`D2c$iIf&aK3+|1=;T;q>HP3?Y%)HoFvdwzx^W8_UjQmFY_3w5O@peGwdnSPOLyV z(G(Nv^}E-Fcqatlw((ot)^xk{da*Y3wvC>6w$K!xy_00G^~pRbN~DKSVPUK$ z6Gt{MH1A^3RoyH~9Lw~Mgi||8KnEST_E`APDx#jJIQbvH0Q5@2s$VYSbX;PVcLLoA z5M1OhN#k!m5JN%;5gnX&c<$Dnzqt6#?ytdLXiCUya=GTC@uJ&gqA@Yyezu}Llsqn?O*#Bl@( zVE>;OTnD)@=i?99Z~_r%7Znu{UPP#QLTbpz{dnTt00Vi^G#Xgy$&}(tBZocS8MlzJ zl=H@O%84I9N**WloZTFGBjk#7@DIMD*Bb@r3g&>ZfY_l2egvwr zwnl(u4OO&p<61I;rS3Sa*!oIawv!jSnLjF4Sey# z$6s~34XcVBof0c%&ZgXdwx#v*sa#3YWbLI4zt9cvkPrX?;@nPIR$K#55hPJ%DRg_B zmjD0(GFg1$)EMWMMdDJ;^^q=C!ViDeU;su_UZ-t|&=*E< zGgS}CE4kmPuym~~-~a%uzCJGgN>j>OH9rT%ZYegB3P%3ognw=?|6Z)Lm+j&Q;z(qe z?r-2QJi^)jB5=e8lE{g!SlW}cx5cPn<^bnw|LsxW000T`N&o-=000003(aVc)bD9lHqhKcZbi zTE*+(h+(!AYiTJO7j<}hDVM?n% zAT0ydDi=YA5cu>B+NbAJ z+4f7a2cO1%d^r9t-B8GMGzf5M>XTHi6EPYQ9b+nwqCmB>z5ZWd?B_H?U|}a{!vh}TwQ7U%Th7$%jHf0EW38#Dd;QeV&?L1B+=H-v4$10(t$n6254&|iBSr>F5+mpZv{XB-oa99BDrVzo9X_Pv94*OFmPUI9Z z05AsrRj;nMN=ce_MML7r4zqH=IP4nQF-yYjii<7$;Zvk!M_`KARS>gmQ0B%0XZDF7 zSnL|wF-+4kH^(f1lVf@tn>thNJ`Zc>Xz7u*mc%MadwMdQM|8`7f4a}F9IzBY!h8Wd z_47P}MSuuF)}LNe5}L3pD=zmgB7Z6Hvq0@oOKe?RGay2i6J*zcOS5MAk9tNM0nQar zp2yK3`5kP(nFJXyWyZVq12+E`?#M0O^~B;GfR(Sqq(tk2p_`1=5wBXNVY+pdwjdH0 zv*G+BVKUTvHli1z-=y6aKY@_3f3slr%&d$!5cG2hk2eKZUEmd=I%}7XXLEVrmUO(o z;PRg0^?jcVCRf?TK)#|{*;V7xNw1vq5hjZ&NI#Socr4N0Ym>-pcAs}rmuN=CA!QF5 zr22l)YgL^3dRaa_6hki`u?m^q%=JfVZ^j;Etgg8NNqK!(P~DU@}+s`4}P!9c@S@ zR3Yp>v5s&lU*h)sjw~LOQ-E|K8BH!!y~T3`HN%7R)1G`Bj;GKJU!}1q&{`~1dLjV> zzc`uf8tI{S8{h3Q8vrCd8RLtxR#`NeU^9>il&T4?w!&frz(nc7_54u!q!FN`FXMnN z*4W46pCANB*RdVYI(|pO{K~IlbD;alUemm6Nrwi?zM)dRVgj2KLC&$RX87ZD z?a9F^D!>D1>?MDCO@B^vQJN+op$NYh6BqHQp-TpHX1un?=r073eGMHbw_Zq00qOc( z>sc`YPmnXD+6xdaXzS#?hr;-SDItf0U>RU2E~!%^E>`_X0M zkejDL%3VW4c;=)(O?Fs3VO4QIpa-hVAgJ>>3y?6` z^Q^Ta9}3AX9v~wxVmv9lKtv({YgZ8B0HA_Y>Nim0w;df0^l5TF{RiZumO94_KubnY{bh(T*J^oA2H^h<{%2UgN1Z24WD#A z6y1(BMIta)F&3w`alYY`CFd|E_0PkM(whaiGdy8poTz3&fB-ypqvb0%j_RmsU<|7ZZ9r*u5u;S5|!q%+XA-KQpjKRAqpZjo9hA1oAl@Z$yA zvi9>a?bV2k2Yz#Qn1OnGB}lcU+NYz^E2Z)9pSHJls}ZXCo?k-WCHEby5hk>+$J6BSA4sAXGq&S&clsGi9n;!g&B*gV)(JK+LoQYyi;`-lz(6$v$-pbo(^>fFR)Q5G>HT=r zC-f3xTRxj&SYFtP(mcPaV4{Hc$Md894_JX-D~2#F>k73tvRI}q6TClP0h51kO-Tpx z?3XEIEpe4YFXc&sUJ(YfiXg4lk<=O_L>hC(t@_8hapm+nR5RVu-w z6z>bF-IWYixG#m>Svt#7_fU*q`td8MCFS~QyZ2SswNw3GcIvKiB6rt<#ql;n8)OgV z8EG#;<`Uk7v+RwoAFnfsVLV;{pzQ8Y}t)ojbwr#t}wfM$69QMx2yzNheB*XP^ zWlZgcx1eJMKJ-I-NC7QgDBg&_yFd?X}wtmFucmLsJ+DgfLmF%bg zc73Oa$XRVrqpZF2Sgykp#IGSTs!8w`Gs!MG6g4NUI-j+WJn+eEH6_o4#Ti(Kk>nl_ zpkbj=auDb|Zx~c^IMJfH!V=)r@x(Ly?3KH+aog5U>;mm@&r_KM8}`k_AJ_KeoVRSC zpeFYJE0%Zy7{|J)wR!*p?}MLVBDMMn5dB8Q%+>;Qblpriz*)Gy!DTp)iN$CKXT*^a zPjueq_4+L}*&Q`SYSIvw&Wh)(j!lV&kK1pfTZ750Nz?-64?mnD*~+%iG~PAAXq*E_ zz*O1|l}fJ3$yT>p-S*5yQd@lZR;u!B%L$oGm~x_i1YJCU%aF>_M_E2yu?bYF>MwfF z<(YE5NEK&R5Du6DME5=QeeTV4CL|eXSW4_Kc=w?9jt?5(+FLO926}evw4M6`Vxm4v z=4Bq74~QLFD@k9j=#xIG$z z5N$4t+QGDW&~f2~wjhw!&f)_IvO0W{sVO_n%ceOgt7}=a;_bqJYy!{{UPz|O1lf_B zUc_j^HH02Cp(%bUk;ot%_`5$o!14$UU(goqYmLQ`pn|gupv#Wxx{u57w#|99YG%%B zKIbhECE;HZLwuG;?W9~GRnrQKoSq|*?5l0RmBN)@4oZveevy`v<*SOI@`Qlvt=bL9 zl;L#DS7wWHR3Ehi!EMv>k#zfKKL95AI27FuzmIpm!|k`!@>*5$ zIuPAJ`D?08&x3YL@+Fy}jR-9(0iUb|RTq9C@?=q37O^7S+npUDCd2b~gC12^U;)5& zxVG<_6Yf8{1()!^ya%V4oND}FF4Z?xA#iDwpH_KE$kiy^g`FokS}Dz{jFA|eu;ls@ z4iU$1XF{_?q(dHEC6kq^A^>B`ycKRZvWco1c)`b%olXxST)tnrKO{)jg(-5MeU2Vi zTnZYt0M`obQ=^r^XSdc1vCyu!Fy5YPn?XK%uKx?jEE416qu#0-)pRB(Bs?Uq@XMEBXX}N^fgs!xZlwJ8k_((;s zBVq`KKe$sbdGCd6E833|-08OByvvOx8s`oMa>#vlf z-)qIkm6p=O!1u7cl57YsqShJG1a47sI1^sJ>1i?2C!oLft$kn-cx=I=1J!xs>ABv% z)JI=#W8Y0a`g{ix{whO~M|FPGqFBYeNZ;S-9O61(Ja!y3)V!59e;KyfAKDL?2&FJc z)(}B0|7IMGJCI&po{*KRE8JPm-lGSnNLDKNRwQHh_EMFm=iJYeMKJnS;!y;+l0e-P zYaPast9e=8E7llgQ$_DNq10;H$ABPfNpH5EVs*H3cl}wJ;;~^Efv+gf<}WNDd6)z) z4?g_hM72TO)^IMC28dm%u+)>gl7`zaAVU6(i?j6q?wGQZ_*?x2JAKB|6FNYv!$@D( zCZWIn*%5RE6CPF1@X{z~~0@fX0hkAfcMp;pExMo7VIyv5s zWG%IcXE81LJ}9b8ESNE@3Z3@@IBLGwpa8-?GC&$ZWXhSrB#C*6+Gn);D(fVAxcxqB zsSgBpy!*P#p07$SmMvugDahVF@iZ~$kMMak%VpM?p(g+r4ZSspYO5yx5BL=coOP?J z(=ytC6XTWBaWT#@fCx;{Gx9-kLriL@7L7_W zoaDf|uAxm;T06iOqRhR-gHU&a#?$te&mYo)?Nu1}IzuD`L2d`PNKs7msC zA-M6WG)oFVn7!1K6+Trh$zKK_x@w{vr+0NzSvO{t?u6kBpSk0XH|lgcckKV&{P~4D z_lc?@$LxoTzvqHYG!jIpqNk*KKSlz$zERK^A_CxJJbMBA^eM$`91?BluxP>U#6P z#~>H3jh-dKn6VlOZ;?fes4>%C?xhf(&yhWCczhkCf|!q_q~;XEZ2v=2>a(A7Qpua9 zA|U0iTn7kDy6L$Z5-F*4HUfQ8w2U(RVlyc*)WZlB;TXgOwDZjTll+Y^(GlPQ$3nN^ zyZ>oNW!Qceq>N^O=Ee{V;^UQC{g^_AvQ21#NRCG*k8K~4NOI%CHmOT(xn5-3o!d!Wjbp#J zUo>=}C6RupS|x&CiRalyo5EQqX?+j~Pr|}uw<~fTIx*77T8goraksZl`n8AQjcN%j zI4^Fce{d7TQV6zC`z@-;O`QGOGn#jt3IFk9L7}xTc09#SsS_FLIt$3vi!7`UBaCKA zJxQHsQl%|)>4KKh`Iay)iSr!qEL_dFBAM5E(7bB59oAR0I4@}3r?>RQlG%li zzYCiS6R~5%nyM5;`Tdows|kO1U6hmY!*ndRJxu$Qjv%Y?q>oftsy9k>jNvK_!^1hKNl@$W5lPARg3j;eB#t; z-Ea#?CQJ0JA+-y3okSlXl|(aAc=BZ8EvoXPM@S3eTLvZnJ2jM@a%c2kTptK^x9uy1 zU(HOTiz=1~(u?t0Ks_Aq)WyM@n7tOKB{L6_Rb(W<4bv43$28%0Ts{typ{v)D&?{?E zy%5O9g14paPc+I;2kFc3A08$lteA?{5i-!W@)*t;UdCt6i5vAroqtXq%1BsY5_3KY zeAd(lA95s`00000000000000CqZF%%cv+igHr5Y*^orgn=M1l7)3(IG0PBBNv}QEK zjRCrTC;eA}sE`fJaDyD4PJPDom?Y+QyaFifk(>7~Yu7uP*>CORxa`VXxU4Cl@-w0H zB4TLkkwN<2D{vEl^-Eh3d*0_hEQN^IZ;I;U6=M>~WXN+m`?#l|=bA$y`jklP&bs|? zf!V2Ja)0#>xuH-tyVy-!m-wBxU7M4~Nqs*Vw1%g(0C>R&qtM$x2)wo_b2p9M!b+Ma zFa&$^7!XRSau%2@U}L=`4^`UUlL3ryd;Cr=?+RB}u(yc)V2wI;L2cTu><1((rdh(6 zl4sBaY)Y;&4#o`{?AUuMgu{v5%g9HtK2hc}oFjZ8=6KcUs;%OAk`a_Tr0zS=wDKQk zer9gp1~vZf0B?EM6GI}oI>&MbnI?`r5VEiwD{yA*P%OL0;dEP2>IehMF`&<2VRby( zoVyPSgJjoEPL~beBXgO4w3o7ybueHyaz89$q(l4>T;s!>Xt`YBMW#h0C_}b?vbY2Y zC1i9rM7X5j3l6+Ql$O7=rR0S~ka{huToQ6uGAMAF*Hq0c$quhG?3dh#p^f6l3fnnh zp4OJ-G-zy+ik?*6>28c5hlGkjOiT}K}oD@!LiX=Xrc} zB52;>Pl$2a@3*%G%sO;VYfI0Lqk3t-hsB@!`TL8&xQ9z9b8D5wu{jg|7bD+?+FYad#S{Y{;uii~ zuyV&~WL|)w$in5H`|2Wa*A-MkEG~ft+()-0G%&~9_V~rb9sh%2Smt5eax^_&yg4^4 z!sPTkcO0CGc*cnE!q2{qH!{1J@o32i0f*dL2Hn1&EoN!=?dQ{YMhO0v*C;m$aa>Sf zZ#*+Z9(-0zrse8m6ZkKfRmej9KufnA^ZWxv%X%a?TPj|c znfuy*4f}*A6o*%rzeI@6*5@(#pK2~;m47ue;QYllf~vqVW7EY)i=1#BSVr9lCC#oOHXHQyC z$&722{Xo9X?SAak+2_lhQnozGJ%=JNgn^l2+Ccj;cF|5-E3M?kLO|MU7!VTu0h!EKo;Q43;>ukhYKl2!MDTP~KseuQcFDvGu z^x)q~n}B%NZR#Z3o#yL~IlRw358t2f#LJXV@cC+WOoKBAy-SnekwYi`tv921>_K6o z_S3JIc=$C?;xP0Ee*d9tHy6+*O0C%->$$=!ZH%8MXDoy50mgWq zapAEIqt2#cyUNfjuBi^?FjRKP;Za)O~ZaoE4A_O-_RrzTpZR=f@i zjVe4v6ZqrFqC2lR3@cNi#^uz9wgW}rH?~>{gNk!4=xBB|o_h1XWMlQD+v7g(Do!-#* zqm@AtYzx)`ST?kuX3EnUS4cMrSue#+@f9+I4M!?H{KKlaE!RoaIudXPkZA+Ppapj) zdwkjft>>Jx{2qHb^%*RGD(T+AGs0!HS+HHZ<}hd9<-X_x+@eL*YaLW656vbHO$C&L zPOZ;EZzVs;xR=NtN%Y0v>lq)X$^V(G(HhDKs`jyaG&CHG^HY=xW{CvEhb@=HZYD6^ zv(%I@r%7aJc@WJbK!6&E+P22A`S;@C0c#=Lvao;L-ji)k-;EIVajzQKe;v+FnEfV= z;Fp0Zrc>Wtv0o)o_YUwQU$kQdLKR+Icz=nCGeV_|u8#0$2tSGuvW7w41rk-!yh+79 z9+71?uU2ZvnBWb3(=KbL5Dard33e=3tn0F#^o4lVMI)+T4Lyt9J}p`&w6Rm2kE2)e zi1QL~A_cUwj^r*2@@)6r;gtO*B00SV0|#qtS8{+L^#GmnlI;UTK(G)R{vqeIGqf*= zw>!arFPXE4uEy9~DyXqo}ODPi@zpZ}XgYE9#{Wb1R{c{^B%oA?!$<7lZb3SVn+I{9T;BXQq zi+!EWJrzshMvW}6Yi=7MH2xuSn==#3-j1yNCOf-K$46UAe=Y2~A{4>tN2`Y>_{55f zL2|x_EQq_N`O+MXSRxZN`V1)F;eme+=ARVH5tPnq5!wa1{`4>ul?CJ1K(0HsBo>*( z*7oy8yd@Hx=7|h=3-NQd>(QETw~juJX)r6ZoVs-HW84X>Mlf_E6dJwKjWVROVPa0e z$Y`IC?;I@P-2}|QTiXMRbxB<%U*hpt4UyK|vIc=6yAF^Vin(?u-=74h3 z&4R{CX1fsDF~!TQK<34SP3>in<6G8Yk>2BStg-fJe?rlp49AxKKV=>gi=Kq&8YYE-^uF?$V!G3(ZAT(eyqgY5aqaeZn zge{ihSsv{IMM?&f#NH?wM9N9&-so+xePP_7&pBDS3)(j(V9H>)G=|kRJ*TE=D0i*9 zz?M4k0m4P=l+ohYH*t?3&oMC1KOQZis^w~Fj@K(xY_YmI)PXv@$*}8`dtSEQ2pzfG z|3Fu|8me0A{wn(HdxxHpJb8}`{=O>Vd96V-p1RR7vYJ}`V7q9<3Hq!6i{Z~0aO~=) zy)+57?L9`_DnO1VjnLAV)L9;P#ni0>PZ+`QTv(TUG>sR~Upm4P;3^;QT{b`9k7%sXhnb<(yeIJtZcjHL_ zdi0brm=Nu!!)Dl+*VS1m8xn+8OgY;{)=pYnTs`8IFw@b@AsBVBK2z>$GRw#i&&p!H zd2B|%)193Zxskxh{zTpA1&Yp>UNE zk9JhM()lv!W5Pj@0SuBpHq_ma6IYF2Gc6qF?$ayQwmr@P zZO_36gB^dfR@_oQw0JToVHIaJb9(DMn;_f8q0mbt@i_v$gA<23 zYU_fbMu*&4ME*rU4(fqsV${`umzc7BDy9?MHGiH(HCzY&o`D+7L0B=i5FP7BOTcqt zvkR(T8K75=LOnzEv*rSj6_+!_tN&Rs6AmPG#Cim!CVzLmwK$byi@LmX1u!QoM~QkJ zZaTWr;J?yF_{3Ub+@*AffWH-pKxfh&+D9nQ#0G3Pv)!YYoy|q!EhlC;%w~D|F$;IaywK=hmDzy1eC5 z81p~cy}ACt?$`Z`m$-ZDVx#QI-OXB+1vSSq*vc`sLZ?NN^}dpZ`?C)0_e&=HQng7k zEhdO;|6`_bo(aga02e%URg ze)su7f{%7ADJ96_jE|33MO~5MCsQ#~#3Dkw%5RW&v&YC$>t{KG-qdtmAT$aaKW|N6 zX4fLu|G2Z%ed)yKVLaeSR3ud6{GS4?;XdMh6mg96cOUP+`EcV$-iL@))>69dNG8h* ztNQ9{7lsT60f5g)UesHc6k0O&YUk}!koR6D_w^^9)`q>Rq6t>-Ch9z(q#LggzjcdSJYFA za(cm4^;{5Xq-b?Ejw!LgQ{np-S^tx}LP zM)gdtksm*%f0eQy1h2@>&4QziB$AY#o{K!8K0^+E44(y=t-&4!cs<|$7`di%>dv}t z6-L2A%q-rZ;g(&$AAmz3e*LPua@`?q6f?*S$)ol4x6n{;*EOs@@y4-ffXRQapd47} zjR90tZldYoFj>BIHm1&lE~Cx`Ra{U19b%9#MHiBo*C4PC5>g;`H@>am^qYp+aTcIT z2)`XFFQ;-Ni;^u1*A@p~^41(^7pb$ZJe%4m@Npw7RTWj%dSdd#&9T&~<|GBMX3vMD zPb=(8Jdg*NPJSR_8MCq?ETi2`HYKBIYvPO(ji=6K0ha55u&9njv6568 zAuohS4B*;H&t3uGla3vXFSyG^-9wzrs`Tki<3!~9fw$PFH4~xR(@H-Mz$f~myDzJ+ z)w|3~Yh;5G@z8kd5L-g6v%!1+CjDf3THVn^C4w*{0thBA;FcoAjgwF3ERkc*xwMOW zYzlfk8A9{1uWShQtyX~Bs*ZvMqJ&O9`~#>;E{G^Zn`%Ut#dvk4r()qlm8)Px3xZkW zEj}sB7~2;fHXig9m>Q{<04nx_%#UiONJQ-TV0f$xX|@v$vm>y8rVgWLjvQSSUV3QT zNK*9dmkev+ky)`v6_*mjyBqfJAs|;J1w}F87At`OzEG(+d>g71qOF8ja5tPdQ~vrT zaK&dzl(pno`R{a8pvw+oe)IBc%=S(MYu~SYj%OySP}S6Gf~g4&M8r;Vg4pXvl%eDn zDw0uEpkF~g4A3CDb4jger*KYASUt24!D?#T03z- zB?j_OH+1f;w5T}^#Sd7WQpIX^$4@^Z3Uf{%@1}j{qXx5>JQxETqe!|{l$2UT?&?LT zx7P-G`KFilGzSl7n&*KWxVfDuO!Hk4=Oz8?yYbi@TA6norW#A?Rm`Efn+ zdWX--zUF$xbv*TvV;mZZq1h(QWFW>gw?v^%Mp2BFx4N{??rL7Zrl2-RF8hGrLZh-p zrW1{h;hWfYlgK-IDplyLQ;ViI4+*fsIqf@jjqPjF)`@1U5@QD8HH%64Px%&RaEOu; zy;`l8;>fk&LM2tTG)@8p5ET2nIFA?zY-1ohzEINSh?Sz!iz)?Wo13y=h=F2SSwm}h zu;orGFI9Ynriu874l#7F7|GT9O2a8+bO%4{`-7nkDs$sKX8v9X2qw<0+GM+sEHoh_ zXpO=f-aFL35Wfqth*4&Qfm4!Jv?x{*)tb62(3z}9xBlaW(`lJK;spUVzri}))Dt*n zx6zO0Sh}nDMw$9IbW038xynXa)Nm7owIrX_x+41E{ zdtusn3qFwHVD_uQPus$o!`-e0M-CdXpOi#o#06wfnITmFjQ#)WMR*B!Pf*iV_w_GT z&Y(UZ8ZTz+yb78eAxG)hH8k@Dct~nIiiUbZWG9J%6h)&koVLMH znU~3c8X6+5){NQX<&QN#)1giLe?d(#vDTzG|GBDy+Qc19o;9He>03yp+ zdF5dE9q?q93p7u|r`kQH+Z&4!t(9lk0Xb>jA3?O~pGmqX=0bLHNpF9mDO#mInAl-A zS6TWYq6bccSj}8dCy>HrD%vis{-oM{esUzK#3FZK(9pJsuAgt(zY7QtAgiodOGYiZ zZ8%)Dff`mc|AVej3bO?vkv^n1#MXM{hJ2T_Yi%IawU>{bT4Z2-nZ#_yp%FZNi(Ipi zqAwwpDxOo>O5u(rzE%#K>QsV>FV>VWbmlGD%$lN2m2=bebZ}fKXQN<&gncUADR*eX$U*3H_>qJ z(RByte7}AcilV1Ch3N{M>`RNq-O}uDmrOixjT)^0^t?2-V-CT6;83cTgqW7YpA!8q z4IuBzJ#@C$RB&w&OS)yz_LC02O9;BdjMALGMcDioWYuTJXbra6auii#>=8#y71M*? zV+Vz+Ashn~*19e>ayhkPto{o}8X%{ShgoXHe@8f@IwsuJx}3Xq!~s&Ck9zW%yKl+( zy{gc^n53!Tg0#png;^QAIBb=MZ&SGPuy?%W9n`IfRjoOnqmSIKj=iJoc(7*HC&+&j z^~M7}ebWUqp>J^Janun~_(UAdIBY|8W8};C2CiRe8JTNg#I7>FgZ2ko8%9!1w?5;~ z>sd|F_wk$BBhAY5eTUmHq&s2yE|!YM*cknAK`zgVZ3*(+Mu@a>&OqD7gB?k&$s~cS zM7wiBcrE34RK zb4rB|*&gRWU~EasbVlw;JP|BzKNbWK>?g-YL@J3aZ`bU2HZ}5`S>+U(Ym_iY9xY0+ zH;<;t#!f+>{9M+Dl-T{#eZ5~;u#Tv0ep8-pj?*MPr#wBQoS9rn2J>AX* z|5@sA*F|*)oB{L8#FO)*%UW8$Gcw_J@PyY*q@AYKV0&D&4HW`t`+**~-jTnlACsy!awV zmnH{P^}m>el_+q{ufGOV2E#Q8VKf>wDRK+6ZJ{2B$~72JvvI-0abe)k#>!?L6``ieZMu$D^a{6T@KRBn16dEj%%I|PA6f58rMD;Z8k^KxT>p1528_J1i!&-dTvf8it${@+(xlV%y!@}Qux zmDO<><9|!e$0CompuL?JV`=S;9!)%}*(jwk7qr2us&TM{BCGy!2vm~2Nv|~#Z6S1} z!;7!J2~uE!R9GM+iy=R@wguc5sb%^C^TCH7fq;{%41)m9mPEdfXV-+@0r*T5_i%?; z$n}V2=JI6LqaT)`>+{nmO0jeMrdP=7B-;wP%v-=6MT_eVwr%R*zoGJeht*5cTKQr0 z)=AC!U00PT)L%!ILMlV%Cgk5zKmevi423=I5|r`9hP|wO#e3)1GeZ^Kxl3c;Ltk$v z<7!d6$S;aVblVtW+sU*V0!}gk;cH@av-u4NlcjEK^JW^7d+a<)g(n_oW%R1u6Btrt zPVb~cX(~D0`MK$pSnPi4)E(pc6tcSoIc;h8nrXm2xEc}oHXzhO0@#hTFajn0^UmYM z+U+Po^#j!^@q+pL^kzRhaFd*ROn?q+ITSF{N@cD`s_k!~qM^cA zb+LbN7X%gR#w;E7FRR^*d(X+2f6Tw!MQgo{oOP>_k5Qj)-Wq^dNy>#!b$xE0xmrz! z>8=ip4l_%WDZVkHYN-0lE{EIKG2Co19I~?cMAH(A@m9JNcBw7fr0Y#=TK_w>;TJ%| zh#GvH^(%Spw!H3$#ds^E+W!7gvpj`8z;y!*t-Tor{aF;B`~1E|vsOF&qcHj7fir3P zv8k7W!erhk;IGsA)F{Qt)@yMWfj|IBRxOZJ58D=5bf{Y7X<%jy65)w|LXDZH@UU~# z%RwAJ38x$%nD_2t3gf2xk8^$?b;MMo>MhTQE6q~K%Ap5R@h&gcYlGM`c$~xyb%#iYzeZ$n6pVak8RwXkB z4)GGO(Zst%_`mxoJc{7WII=)94AnJKeTjxj3$L?4qkd|>Iu2y<(;s40C-En@!KKq~ zYAHKMm6m#rmkG`H+*lB3Py9na>BkzHS+DDvL}Mm?t#Id=obWM5LAcB&faQFLvzt;T z;=jh%Oi%Vt_2k2|x7I}%@jd^y?V!o@+PT2pCHk@S6#Ne%s$VytQ!m=VicGvVSS%V| z`?W)uwZu-;G<4)DSFkcsTIG^9uSl6g>>g*dYpYDwCseUop55AW{toAiOH{tvMy5{e z%u{2?8xze_dOJlA(arLpqN|g8Zw_~JG3wO$-OsHh(>vA_-n+2*{C$QT<7>H!y04yI z^s+h7gi8dkxEY?|5|N8Jb(j8c6=TM{mdbo}H1#CAgsv=Bxtwc`@R{|Il|ji#(=5#k zos5>DN1R)CK06FMp@zuNL1Bzo>n&$$dq_2|jw~6G(|yRP8A`WE z5@SWh|MVpCT*=cs)B1t!{F+6;m~tm)QcG~Z9jQZ~LvCCpSC89jk-YUp{v4LN>ZF%T z|BsvCQ?`}Se4#3s7`Op=*-MfB$Pwu|sRfZ;v#1713BxLn_FJ5OQPQwQGQQd_F_yz*~p{J4U-*2uZz-{*q z_W6U(d-*oD5UJ1$x)*(cLjSPP`Ko}rQnVrSx}&NZ3A@lgCPO>Qa*j!99BzqLgOn>d z*eH#(8x2UNz|?eS7D!(4@F(xWE-(Ti$N=JlHF5_Ok{*3UbZg==xkzVN=bd2gTd}U) zTdZSJIK;+GZChY{%Mo?RB3JFBJ&<(|`w$hG9K4^TkK!;+${u}tR@STVBZMaapO|7t z1AUS4ewOUDq^Quv>COEiny!UTxjIxZ75XK%sj$$7=~lI8U7SlAuD6xGuva4pMjpp}CQ?7~9>QbfCzJHD$}V&3@$Mid6=aM^mrNw15&} zK5xmE|Mwq|KZ)=LX2ae_gcQUb!LQ~wUpzu60HiVY<%Zr=!!M{!*_Qlc9vp=cCeCrz z!M3RsvzplriS;!=Ywu%>uMbJNgK|og{UXQ`g9}`(^zzjfOvhdMkkNwek;pCmX_o9;kQN6qeN7J8n?aOqzXRuA000000 K000000000z7^2bu literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_3_bg.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guide_3_bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..3118c08899e8cb4d541aa2b60c7ab0c0b1cd2129 GIT binary patch literal 68538 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 L`Td`PeuV)5Q=!{r literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh02.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh02.webp new file mode 100644 index 0000000000000000000000000000000000000000..08d1df2fba46cb5ee6c46d1f5e1fd8b6e69b8262 GIT binary patch literal 520 zcmWIYbaP{1Vqge&bqWXzu!!JdU|#~BzLeF8il19^-Mt8@SVeEQpco7rs( zro6m$zQMkxX60;Vd1|NpZ7*L*Nl6x(lcd6UGRmt0Rw zeA~Aj@t*iPNA}tuGZ&Y2#tYJJ>z|KX!gMx3SO1;cBc1QxR3!^sBCkx`v(2a9@OotB z*HoKhT~B(IuL%_AU5;D+)Y0dr$v(epG78JySjDUVln8$3y?(ZNl8>jf!>xr|z07*8pic_OR9K+8&vP| sl`kggtoK*twLGDmgiQ-c<`bj1!GYo5|9c#(HZd?v{(qza=v^oP05BWtc>n+a literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh03.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh03.webp new file mode 100644 index 0000000000000000000000000000000000000000..af53d15773937bcbfb0c27f824b4a8e33412df4e GIT binary patch literal 830 zcmWIYbaOLfW?%?+bqWXzu!!JdU|#~BzLeF8kbF)}bPPGGscEz|nmx3|5udHdqc@AGfhzHm9hGU4NXB>3O{(CaCiK8RIZ-n(`a zcW&v7pRc>_L~OqH>Ae2#c17LO*W)+TN2e{|P5!#q%b;Kztp%kJ!)HY?bMINIonFL{1pl`()Rc4&e*+Tm*a)A1^#8$0h7OmZe_I& zIj{Ta`t>QNUcG!!s4G_St-R}UNaO`cn<-z<>i?PE{*+hgt}F}hg=F94XUDl$xlCYo z=lry&{nMUXmux!c>~s=fk`M24^|M{O%ip1X{Vm=tDq-i@qaq#i7i<+WVY-#zn7BY! z_z1(>j#rk9e_LM}Tu6%8E0W>L+T3u>;{sPkEo*9nS^NZ+Eqhm$vwUe^b=iSC`D@XF zr{XUaa<$B{%C6z6uC8`~=##6Lm_u(yW>z4EBnAv9Wd zIp@{XEoYiUzgDkWsJpJ`e=i37|Bx4$9u%a2v4269VJ@TA7se9|b`w1o`Yc_dtfbh% zutA73Gw)&9M(NLYm}O2*R`Z!@ltKh`BKh6Ltn&g24vkDK9AJtmBvG(slJdd;hOkYS z+xcWH3LYMA=i_~Qxx@GD#~BzLeF8kBm>3usC$M^M%8V}ln{#_x zE*QPF2T^9`LsUR(1c z>zv%amG6@K;+K2J|9s9CA^C{4KI=(x*Lk6^XGc#t`Tq#64c6Lhr509JarpgdiA^zI z@3Culp5ndr@fvg8q;oy1R~fT}@1L=@&tlz=3Kn6eeJjEqwRSX3w|&#K{Fl^(30D^@ zI*Tm&%WW?2B@y6rLCD1ArT>lxmluB7Dk9Rx>l*d^#GG%xj&TV+YI9mY<>TECx58H1 z{bp`I^lnlidv1DYILEHSyi@CbW`Fv*;#PyK)=$qTQ!a_jzB>8fV{88pmF3+ZW_{wm z)!Z($=SORCUBD@ZOLqeT*lg{DXa4**he`3|fyAaMFBU#IZ+4}_CrwX~<=}DiY5X&* zVoGN>{EONun=vucRyxCy^=@NWbbw^WU)Gn6+dKrsGT1}%%w^R2!gzwgZlcFRpQTHbl@vP|HVAQM<~=M=l>U5&S?1(qHJ_PA zDMU~wQl2*S{7;J5m~^yTOb1M{y|RprwAt}R{NG%ehlktwWGo6E9&X!v^7;H?`xX7$ z_dP)v>)a!?sJP13{n=crl9!j4`+=y7jL#*4-a38FKZhg;l_Q_>ZD9EK{~pJxO$^rm U|1vS&{r^Ht{{NN=VD^Cm05ImJ+5i9m literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh05.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh05.webp new file mode 100644 index 0000000000000000000000000000000000000000..b10252a3060048ccef05ea6955a82f89798a5085 GIT binary patch literal 896 zcmWIYbaSg#~BzLeF8iznHU%tC%D|6rWmeTUGdmaRt} zC;i&W`tQn(sZwkFc_wvi|MB>=`6+?@>z|z{y8ByTLcp|^iApX#(-!_}c$?4j;jv6! z%+gi5!KYD zalDhEMyqS@w5ClP7FxWX;hr?pLeBY26p>Tcn!U9A0Z`uxz>6w8P={ z%4%1K{j06{wsfqC=h?ERDbZoIUIyEizNSeIvz1N=9adOl#_e;j@v5n|cYx@(?x}h! zyiSL8FIu%{s{X{lt2a&+I+ZGFUrun{D;Jf~qy4@f1OBfECM;l@QjlO|U@(wln9Hd3 zh4BP~-9(QCKB`NUl@wPnY!Kqi%zId#DE;{nbI$iAjZ7>Y0tyZUDIxt`8&sY(a0hX} zk1BY0xSdbN!gTrjz`h4uo`M&p7lcWzG!R=Nes2p#~BzLeF8kTF*7hQE?{Appy=84D(?2S zTqN}NZrRa$vF?lN3RiW^VA$|C|M&fG``^~z{=e;i?*Gk81(iyU?C2Ce#vy&`U}|A@ z@9oOhn>#yRRMusAPT#X|$LWd5S4xGK?$6DWnYwY&w%t$Mw?5l`w327ttF%RK@Aoa@ zo7eR{jD1nMbJVn^k5vNp-*`?3YT9Kx6~_m)HT~QrFkd`zMUVZ~hyADs12Kh}9j}=RqZx~9-ckhp~G?EzQEj!>R>x2xNFKeYy=Kanr{psKX!{lQai6C;?Eks^K{KyL##?JYjwtNdueh8=*k>tI<@XKy38Aj1PPHC>boD=7*RC{F>a;sZe#+$X~ z_-)s#At4J^PZIeaP{`lb@Fc!z#&-85{G7XHbB6>?e8#G^{)oV_5|^62D`I@jmqLQ6o0Z_*z~5F(WTQ%&k6X7>{002%?>yJmCTbzsZH{`lC8WuTo#HfVb@t*p8 z_9>>bPd^3R@LRHu`(!rT{St8vt@Jxf3%ptqI>Q$va6Y&l$t1bxM7ijJ^QUiztiG6@ z&%ipJ@$ozHfS;e%H5_W6Xz_gFG+tKbS9Z%8kMX{|eu;aR#_w6u7Urs1x*P^>7cc7^ z*tK-)kHgFk?(@6e8a9;A&e+LQf40!`m80&1do@wdSQy=>GBYy1KljS-!F|SjQxi@$ z2E*07k$X~4-@19%yM-B&-ERNej-3Dg-`51@X9WXB28Ig?409Q^zA&C(u$$K&=|G@r%{{a65uKEiOuh}x)9Q%zvRx8|m`skbE=F>;tG^bDR zzR7l8Uwjkqyg2<7X`4N9C(J4<_O|#%@Rn7#ul<2gbY{=nGl!TS?c$4D^zO#%KrN^3 zk6`+on-}L#tNM6v*VwtQdHXTmTk)KmY*v;%f&0 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh07.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh07.webp new file mode 100644 index 0000000000000000000000000000000000000000..8624049113b70bf585d72d6a5b4b8d58865224d2 GIT binary patch literal 1338 zcmWIYbaOLeWnc(*bqWXzu!!JdU|#~BzLeF8jgGBYqRE?{Appy=84YNKs& z-0f|-2(;^(&(TCBW_w6rsS;31xpZqw~w{y?V)6+_Sh{`Ut&(9Dz7LmC2{P9Ime?K?Pk@9!_R=aL- z`U*iUu=25>u2Gl^v~Zj{A$aU?6_u0b}y?9n$Wwc-ch)I z?b4aY7r%aM@uxU>T0>i&@WRzA)5LOhC$UyIz0OuEF*WiwT~hyq^TV8#2Y&usy^iCp zsL!UxP1!z-`);?q)6JUryShGp|AQ%_Z1O*rG2BlxId1z(YeVV{%SVU*?D?ng>SOZk z&AUY6c+8u_b+&fuD?Dtrua%nbz?^yiQ~HvEWoKDDC&(R_nDCYNRkd-(f-CzUyGy!f z3QrNqI4l|PF1Ox3VBW_?EODGh>v|mwuQjMhNl0vU7QbvQZSJVh=~y?B^RUhTQ^pn< zlO^o9jdP5jehXRtRC3RINu@=<-);JJP=`^m{pg0xiPu-`USPH1GqcD)E4?OVg@ef( z+2^rk`eiLwT6-^hN?q(k+Jh__(yu?SM=ZJNQp;-9aIy~C>S z*4gfjme;v{oT!v>e3tr!eF~>eL;Trc9;R)~Co3`IpWobyMz0Y|=`RBni@hg~% zI%TKqp00jGzO>`ew;tivFE%@;di;x$VfpJH@LNK?-$8$+N})>(r+{CA`Wv~LVE+ZP zu4t%KH$Bl|n*8ysLZgq-t>j0W+I{p^Y24Ql<(PP~BZYOs*FvGtpU+gjvZYuHoX-vV zFd^fFdHzb_Anwjch5FVN$IKKx^e0+*nuL6qqH)A5l7-F7R{7J(%AeESCrD-3|D!wxIxZP1EA@lPqxQqBZ zz8c-CQ_`E2`)5L&^7gp}{}nDuos2!O?InxbDPEO=eG!7

6qE93~S_dnRU2j4D&n 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh10.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh10.webp new file mode 100644 index 0000000000000000000000000000000000000000..3cb63af8f28055f310bedd39737f56dec48c0fce GIT binary patch literal 1852 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 YM&{U|goCFg4~RVFV5PC|h5CK|0u)}YtN;K2 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh12.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh12.webp new file mode 100644 index 0000000000000000000000000000000000000000..6237d1dfcb07d6a36f5f3ef093fcbd03842da54a GIT binary patch literal 2424 zcma)8X*AS}8~zzPVa8SpO}5E?jV2mP7%?HtFha&I%NUWRjB5~v7&43{`;s-eQW0Ws z)94aPjcg%HmV~&87`N{I^8fgM&w0*y-gDmbyw8W{ocG0EG&2k42Y|~LOl%!&bsYr& z0095Q76-rt0Anj#^dc_+aBL(IC$w7Fhxj3@VFjVfSiM@}L^E+BqCN0kGqHV&W${4b zT@cJ#NqgvT=0Nz=&{kkp&`zotL<|TzY(H54#+W$#j~p`8Bt)(q7Vd6Q_HN!~<8mJL zk0yPI!9pM-C3si8hPF{gn^ktsBnG4FVKY4w?EJ}zqx=*bWGi&16r>6tyoe06iL zD#jpEBr=6my{^V?T`>5*6q?$biE^bIR+Mv`xB9kQUk6T0SB9z@P{^iUbxc9B87|$t z`i6JnA^gPgZ%!RUN({%aPIGL63`!mrewpf3y!}2sofBU98ckM(U3aAsovv2epC&Bu@Oi`(1e;Ee31LnLXBC3*Z_ z9J{N$c8{DX5{-*{+iF-E*;)X)$#i4Ts4wnf6%fuyE++JR=Y0^8B7=!s;W{9@C#=qk zIYZy0&WG9-gN$V<7NySUq?dg*fgF2#>vOZI?o;3Fq-4jH5l0J2amjg*C$%=QSG#2x z`jTEKW=n3&+DwJh-Mi)=Gqu)A(uh_7m=fkO1{P;N3g_tH9NG%L6|_@xdKkHy;OGsD z-bs`!s~DQV{6_Y7xa5pSEf(bi@01Iw1CPb-C#D2ttSf7>P%yTxF+01mnWe1xhT$*v>?EQ{&Q?tbLC!Y6_bp1C z9ikC#a+YrCTS@1Z&u3}DHK=^7T0^gAN{~C4xr@(?aH^B)!%%L-KKelE#G>2}o!_oL z?Y+I{j=5+v90jdNlk6?7SR^`b*lJVVvn@>UFbke7oP)_zW4ar7^W6#$*}Y3sN)gc~ zn>x-A^dWwH&;26!_mgFvL`4)?kRW#K$#Z6fK~Gnnp411=MZrF6a*)sLoqAc}Yb@c@ zVq9QH-`2E;lr7GtEZ3`i+4Lh1G6;l#V|KFK)Z-ToI5)@oe%EgU0P*6#<7mhK!c@7r zjrMVc!Cw3f;0YAo={S@y7lXO%J85TqKhD^bTc2T9pID4r_<7ZLKvn~?w^g2 zou_nPk@EgNqA(}SiU{uTK>r~+k>YJ3=Dz1zX1%^m|x_Q(- zOACK`()xV?NH0c(7Qpf_3{TkOS=Nk`+7|K3_TC^52F%|gX(I)r6X(x>UCi7)WXRPy zkj31$sxiX$jo1+d)RLYxiT~)C5{#>9q{ZafRQu}V%Z(-ZX7=VJrHvAdj3UZakeNBn zP4wnUp`)7AlS$QLMPW}Z!xbd4-vagB?)6(zK>UR}=kUY06`AC8Mc4cUX!;VKIibdv{eaa*2f9kDz!e5Mfl58VLVs2xqq zW{DefWnjdb9-K3GCLkuxZ>SH}nBojOL1#*To+BZ(NrIJ-h36?1q3tbM$<;M;$35YH zTFyu#uAJ@SXW2CPDpgRx0Xmt*&0;-IaFVul=~ULm& z8s||x?KDeNkQ+b8G=z2F)BTP;cv?ciusE*d?2*-B|8Xrn_-On{h&W3z<$~O!6S$&y zLJ9}hPFvc3KD_*9Q#`5qft1S^eoBs}tkxN-a4;)(vn?A0%uZLzx5zE*(&F>Hjc29d zJ&&az=dHeS9+j@>9~_TZGnC-`1 z%MCkxAQ|`#iAv=x>-tdEJqUz##w|ozep@RIBQ9cU1ZpLZ6*v%^4D5wNu*t7Yj|!Rvc@TLD2}KrNJ&#ap$xey(~21lV7S zaByqruGc|shw=a(GK&w!+HXvp6g#ndtJz|0H%fE*&TiCn59Mm`_Q7szujfO1abRP$ z>8r(Ll5a~(x+>RTD!Xk|E6F?b$MjlE%i$FJ#{ZJT! _aExb0RX{@KoN(^Hb);| zNHZ(3tgI+6yBFgJG>Y>32hBzl15#t7j3wR;kuH&8k)aQVAOepBCgPQ8nP4$Zj$31594Q1+fgp z!;Jsmvb*yvP?y?_UTjnkj>TP=PzZIDd}{Qsr(a8c2}#5P?7i`PJAf-XW*B#AA=>_Y h$IkNv$;fKc^WPnV$jwz%vGE&Y{_E4FKYy!V^$*r`b`1ak literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh13.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh13.webp new file mode 100644 index 0000000000000000000000000000000000000000..e6383da07d8ad97aeb6aa0ce082973f6147c7eb7 GIT binary patch literal 2466 zcma)8c{J3G8ve~-Fnnh0`xXgF)-U^rF(wLQt0848K8)c*WkQ3oX2~=}_N~Tb*HBzi zWXYGU$)e%k7^2y8qqxocEmPocBHN^E`jOkNqVS>M1t>T(vN>bGFmF1_b~B z{;M}ZKsNwfyljW&;{pIs5emmtX(H@i9=t43FweN`$85wg8z*F3={RQKsD4FQ$(I!* zPG|Et`>1Vd^8QL_&LSVefGiYxHHi1)qe|8l7x*;osy=9b=6eUylvwCiJC!5JEVVZ@HPpD zMa2-F|4`m3Uoc+m(QcV2aJxYO?)N(DvLh%0KgJ$@#m!_%MFyc0P%8qj(b~IQhv_QF(_^h$+PR2Y7;`>1? zLw=WY$JukfY(i>t&CBdHpuo2tOeeghN8coHJ2 z+@gmX!Y7pCN_Kjjbu}Zr1!AhJI^po=mgOdqlD{~>B+(D-7grVds>t}#1^40P?)M`Rk-Bmv9 zlUjZipq%^ez!8$-i|s=jB8gRlOC-79|F zDQ{OaYmL2?Q^Um{vnB2~`IG~u(-Gv{i)4hwc-P+Wc%LAS+?VFRSxsBzfgHwT%whvH zsYgus2rA9oU8j2ozKv55-x$YAzNNlLNG-`gyS~0%6KN>0yffV3D02L6`QICaD<{Lz z0EqsiT-!M$3Uz1pp-!;?x%l+opK`^z$gZGLl%4Ix2oWvW)DJKq?sl6`1mBGEr|K%4 zFQ{2zPO%hi(DAxN$aF*o1I8+LNR4PCI>hv&4bC}hAO5f0#2^gCdj5Qo@+!;koGoP zNr)vUb%mI}s=Yo=>o8i@*ft)X0<_m2bXoOIAEkUABoQKN;>Hn8)UfI*ZO3~Qi;A^n~oJYBP)JSr8LDBs9UVn>}QfM53r^G8!R75`U^uY$j(^w?X z6%32<>0R<%rKgFoSV&xf zAidK_8W~Lg@!am`CejdfBRZ4eGG1gf>yF=C>Rdccxl9p08^6ql&s;l0o%8b)=&+tv z)3yGyJ$R&sr5%fLT&=6C>t*oH!c_U#3muHhI`EZ}BA>9mT%Rkm z#;~5PAC$@*M#K1a*+;o(f^~8AJbUtPmkhSNB2_&Md@An2k1wadRTJicC&}o-0gg~9 zr!+mQ(_9oUcI$-U3aPwX1_Kpbbz+`R68}yPidd?=gn%QGTsf|?yfE2L8{<*oUk@nm>ap48#g!1XU0kVL2QAid{IA4R;1`ULes^j{NZ zRpn7$Uw4aWZ5AvrH@{Hd-|AXVxKjw8AIzZ-dTCjBHZ94R?_#R)9?aM+H9uZ9(F$yr zl0s8DiCB0o`}!xxV^0dNkZgB*`uBv!RlRL0Th4dWFtxa_#1j6VA68Ct)5|5mMPt1D zoA?yv{M+Mfib zsgEl>ZKuBjIf({je7vcOq^4Cyn*7?Nktt-0$=?Gjd@+6dW4J`Pw&{M_6L53gR;2RA zZCPve2K@rPN}lU-!kEy2Sf+AdjphJ?KJ!VC?l($mp=|%Y>IZ2VDt4Iq$hg3L)!TQI zBLn*OH<_cTjti`kOH^ATj5(lkwjRY{swX%2*^QuBL;kJD-DL)#J#0j?YR?4`oh+D& zA=gA+nW~nokoAAl{-4G=0pR%H%Tot{J@Ubz)0KrtM?~vxCrKpyITEpVEikI_*)wA7 PTK|T<{NS$?_TTyssRWor literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh14.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh14.webp new file mode 100644 index 0000000000000000000000000000000000000000..26b95c4b7ae97a3bc1ac9425d00bb24b862e8404 GIT binary patch literal 2518 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 IZGX*w0QKxJ`2YX_ literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh17.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh17.webp new file mode 100644 index 0000000000000000000000000000000000000000..91f915d81e0b727f5b5334152c8a9b105c62d8d3 GIT binary patch literal 2836 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 Oz}~EO>HRLgzvo};;ADIN literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh18.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh18.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a86c1d7edee6a38f61eebc9cc50d6182fd8d263 GIT binary patch literal 3238 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh19.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh19.webp new file mode 100644 index 0000000000000000000000000000000000000000..83e263398934cc83f4543129373497198c472a46 GIT binary patch literal 3274 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 CDsLeG literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh21.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh21.webp new file mode 100644 index 0000000000000000000000000000000000000000..e5847be19ca232dfefc145107c2f424a2ad606ea GIT binary patch literal 3870 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 AJOBUy literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh22.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh22.webp new file mode 100644 index 0000000000000000000000000000000000000000..fcd6284b9b4675382e605b4a05a1c15d2fc72da9 GIT binary patch literal 3866 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh24.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh24.webp new file mode 100644 index 0000000000000000000000000000000000000000..43c642e67b6ce3ed6a1c615465ca48fd659d64b8 GIT binary patch literal 3980 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 KH2(qjKm7+_MX#y= literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh25.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh25.webp new file mode 100644 index 0000000000000000000000000000000000000000..9fa86e09e28a297ba5ad544ecb4b2855357d6e7f GIT binary patch literal 3992 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 aM%x7c?tE6VrdyzYXpe>RM*h(^0PsKa5wwN? literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh26.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh26.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c2fe308ee1a3ca5370702f4f0aaf6730c934f18 GIT binary patch literal 4132 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh27.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh27.webp new file mode 100644 index 0000000000000000000000000000000000000000..c85db9ccd31d492f4e52ffb4a255a01181e62b9a GIT binary patch literal 4222 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh28.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh28.webp new file mode 100644 index 0000000000000000000000000000000000000000..1345238fc04ecf2d68dd8562d0241675542fc667 GIT binary patch literal 4226 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh29.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh29.webp new file mode 100644 index 0000000000000000000000000000000000000000..dd3f4d2235332f8e0f133047859541f7ac95cb4d GIT binary patch literal 4232 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 G0R9J#?L&M3 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh30.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/guyantvrefresh30.webp new file mode 100644 index 0000000000000000000000000000000000000000..1de4aa3b9232a4d280f9cced6d2754c339c08e77 GIT binary patch literal 4296 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 VyGHbUx9P`;t^~-Z@{{pOmcEbPw literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading01.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading01.webp new file mode 100644 index 0000000000000000000000000000000000000000..66a0371ef916acec3cce7fe48746bbc825aa8016 GIT binary patch literal 784 zcmWIYbaUfiW?%?+bqWXzu!!JdU|8OhyVZK|7g^I`>A`)TTZn0>@GPH zqZH9wtGKAHQlPM{u0~#)`&9ge^Zqlv8IOww-Oyux+erpm~imbHMLqfeO0b9{i_cTe@n_f_;LAGtIKZ`XV`g9 zmOgCQ^wEEH)y_FddJ+30Za&{Tm9OddSzj)_Z>$`WH-2tr-(2VPo)&89ayiOdx zs{T5*HDrqjTEJipE&D(Ez_16#hC&`N>_4b8%w^P?z&L@?ZlcFRpQTHbl@#`NFl-Rw z%*=aOo+$l{fx&41&*UV19p+fycS@fQm|nT}h>D!cOea?=?c1^PzfO+p(}wJo8NW>> zgLhkSMQq$CK8^orfdym9Lunjne lwSnQ^|9c$kMSy9WL9X74fhGTu+x;sF3@Y`q3qWE}001!agpL3J literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading02.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading02.webp new file mode 100644 index 0000000000000000000000000000000000000000..30a02f98acf37da7c4681daedad159d7436a20c3 GIT binary patch literal 918 zcmWIYbaU%tW?%?+bqWXzu!!JdU|V9Q9(n-CI7%Y<_UGxrlq~h;uErYHs9~FMAHG`Kc`C_(-PF8@5mlxF-bV>uKYm%c6D}*3Dd7d z_Y!uyD<_=a-2C=Ef7?BQvZBrQAG9`Z{v5l(`{N-+xrSXAF2AX;y`Y=?-2O>pjPPIz`xy)}4IkC4q|BcZgA;8V=?GcLL*#;~S;jPw4nX|WT}(j2yJMf^zT6FauM9 zLIp7112h@tGHOj=oWN)|(PN>{(k04D3jZV+HVAQM<~=M=l>WT;00Wbu?UVa{bFE5V zUS3WmYWCCY2=-i?jHQ##e4ktkGI`n0sDsLLp9qD0X;>h*4{TX&gsix?@jc%!Abb0| zyQNI-d05<9z{Ec1^qtK2YQOT=P2k*-8V=!5(Qy>{ba4a2zyJ3*){6kMn8g2^|Ng&p RQ2T$RfuZxiaRN{X1^@u|)l&cf literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading03.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading03.webp new file mode 100644 index 0000000000000000000000000000000000000000..4d2b3ee013908b978353642dd33cc3a9bfd3e5ed GIT binary patch literal 1028 zcmWIYbaVT|%)k)t>J$(bU=hK^z`!5?#QlsQV8?bx8;J+ zJAE)i^tR2@_TaZG)Roj4uKa&h|8@Vb_`mD_h5uju|LXr&|1-8fe*U~CWiUkSJlRg@>0$3*A)kNBzbB{gWg;^WVT;?n+i{gm)?$|U(=UbH1gtJo*Ul(%H z>07R_Pl7#hZseE1=!Ux!j!Nr12%WO@e9LvM!aJ-nolH+!ryRfL@Q-z_vBK#`C)Xdi z{$67cZH@;BP`r|UgU#cQ-&eTm6+WR_ov35V=VpuHXx9D9IQ;(7D z#3Ql-Zk_s`Rqq=Nx{9L&_?sk-T56s!lslqvj@8meCV9$-bu#YkJ%OvfC+!eFv0}me z8PBIFEOtxU!FVcT+KkBtoA+t77BA{C`r$E?+4z;p(X(P{B_15+Mr*9^kR1ZYoF}k{SpC{*+tv;XX-29mS@h+~p9=1*8 zg}J%TpNic(TIx=Rv)M>ZoTkLw{_jL;USOAskJuTRJ&X78y2|D4x??QpsueXEITfHK z3RLdI;|#!5r%=Vnz_3A+VJ@TA1jY%Bb`#we`Yc_%SV_^|f?!@vLcIM$0WFfcv-e?cLs{uc`a!@U3B`hi&-4gfy~_G|zE literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading04.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading04.webp new file mode 100644 index 0000000000000000000000000000000000000000..5fd9221bd394b1c495da0d359daa82c8cf0a695b GIT binary patch literal 1110 zcmWIYbaV4#VPFV%bqWXzu!!JdU|yNj$sj`uby{L_unEX?OF+164 z%{Hx?72X@>?P|Ch_`=jzdY*X7b+OVP<`+7n#lJ9CFAjLUma}5U#E69n&%VFfhp#ZjowRZ8F?NDdEaN~T_LjmT0?4j{j6`+{FCpLp1oLi)O+#=ExXxwtWqQk zUhOxucEmKyv|LXpLEgt(7EfaqJM-ke*}wu6871& zKcw{9#Dqx?W~p6CpW$M&?Bz!7!zy3uTwiz?a_)`4*li#(`2zcw1=`0|4zb$m$5^Uu zlw0LkJjrvHepa6KB%f2O9V4fmuahLM3`f)>MEMy&~q6Bz9#x-Ilsx_GgYqP+*h1|iPOyocq9 z(w|>2B{^(f?l;$}zmthZ@<55 zzd85zw!iK`HV~Q3`}qA{^S>CuhbMBSJtvv`{=s_Jws?6w-_80PXz<^;BbRJVjGPx= zT;j%79i`Zx9M!B?ye+0;T4cw4x%fMFi|d_xW$%4C^(S)vJIVVBF6^0FXe%@-8yreSz}&xJPTl)f1Rm# zMa${63uRV4+*_j3-u0ulfv?Xw^-dD+;{e%wmqQjI$N8rQ%B)HW7ijmgjATEwFlwEl zL&1s});)|etDYrt|7qiDyZ<44vFodeJ1P^0o{75x&x+ely5%hHbY+9w@A?z3 zJM0oyRWHAMNy>GDl=0KOOSA;mMSZW(Xq`TfWsTe0_a`&@%^ZI(xvkAvs*tmF<`-v+ z`AnQK$^D)CtGuP}#p}KJ8d;*t8KiPbzojUI`=N~< z$67JPHAfv6PM;;^IOk*8#I5Q*w-rB4m?3zov-Utm!K?7cjdSukS93Pz+^|lJx!|<( z(<3=Ap;LU~$IND2ysNHbKcl!>wQC~F=C7_FJ@}tr>s}>vu7bnT^ZoI@Uui9y@3Q=1 zcJME6iu(K7{^#n_$B#MlwEwfjhfTY#e&DKA$P?~$(KiKNi0KQJx3LL)5c~I`EX*)> zl78Rytor*ww_7fR|8`@X^Zu37eukjmdu${{o%eG@)t@@^XU~=%xxZEx?;VW2e=QA| zUT2x|KaprSk)08k))i_P85kyLG0bJun!q@L(QcyKLZ79J7b_{oM=)#<;>^r@Se_{T z`3uv=l#`Ryd}bO^M9uhAT(|GjzYYH)4pn4aTWs?4S>vaRQ)l+BRU0=w=!Xcnw zp&@(f*uy7>za)3D7iO=%;hon0tEo21T8H9 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading06.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading06.webp new file mode 100644 index 0000000000000000000000000000000000000000..7432cc7d40d7f726aba68180e16be3ab526a39da GIT binary patch literal 1262 zcmWIYbaQ*g!oU#j>J$(bU=hK^z`!5?#QlsQ z^|yZ_zqkI?i&utgy;K@zS%&ZaS=WE_R)6iYZD;e?W(40fyr&;|XZpLvr!ADUgYCCp z*ZG&d-EO90s+Pf5rq|!^JYiBZNR_Ie`L!-H#!bd@`=?|}wrz#20l$9wN6zz4PjB#_ zX)8AE&Ap%-o~enP>{kpJ+s#gPSngpfC_34BbH7B+iv>$&lrM4h)y({OoAca^g$|j9 z@vB>B&Js$#H&4RwmgmfmkHs1mP76xDCnl|57XI{@x%c7LDvv($ zN$J_{o5ihDIM2I3{@QUa-|6z76V|BIW;5(L!lt?93`fOw;UJ@^o`$=NnOnC>GO@d{ zd)XyFIPk(^;o@Tl8ZQAE7&3s%7T&Z%SW$YW(_1Wz*vP*}`HgtP?^%c<6=I5Tf zTKHDh_T$_o3Wb$lc)QF0=cJSdZ)0ry^-!U@=faHjE#Lgy7OA~0j?v%4pi&t3@pGl6 z=Np^uxR=eZ6I$55_c}g0E?3|!?jMxkvcAtY?`6Z@+y>Vt77scr?ubXZ6h4n`sh-Ok z?ebH}<*@^AOp4qeKZAE|dW&S#S*oW=#68*JqjRr8e^J=_mPbMiixGpoeo%HWG zqATEL$mFu?Rf9p1m6E{s1_{fZoF%6@lb$?Lns*G zUbD8vLPT-_E`v_`r9ez4nIU9H!dV`9-BMRZMjc_-&&DgOp!f z|GAI9eU^prudUqo3m3&F{Sv+LIJ-Rk$+GyCjrR@q-;B9Btxk5`*KGObI?Y+0KjVpp z|F0V|0CST<4ICotMgbX(}Nbn#*(#eF{*HVAQM<~=M=l>U7C00YY^ z77hUghejrfD9`z;g>;v6D*S!$H}TKGGi$CqJlxJFW9~i0QCh)H!_BjAuGfn5Odl%Sx{63m2{rFS<6zqTu1-=Gu41yu5Fj-0KKfyZ8HAkWf3@?O9qbI;W2F$$+H?4Yh`W;otvz9P33G7})Or3M&3PpMhikkGBl`^FNybOEVY% E0Ea?6(*OVf literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading07.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading07.webp new file mode 100644 index 0000000000000000000000000000000000000000..1c7c00e5feab64f7ce7c2736a6fa9d0f6dd7dfbb GIT binary patch literal 1358 zcmWIYbaQiKWnc(*bqWXzu!!JdU|gT6}a$fU)?yeUGXbqOBji+LXt7hGBEa>?+lsqrAHfmabynRK#yDfAEp} z9Qj%7L2Z*h-`iMr|BPlPL-0FE`N-Gu%bp*an7sV;n*Qy(jx`6Id+NAmzN2^1q2-q@ zT3oxCJauAnMn(VEA8F3a89co58{+IUIA(f%k3640rQQ3R^P2DMn;ljE9m=@&f5pr` zi_BNYic0c$CVg>_oX37iVM(#TX_E!YHk0I&Zoczx>W#Xm6Te;SfPrti=5asMg-TCV zr+vMdGDG9txld(UJsn{Wbv|zptC(?OlRR^Kd_~D|7Gf*mH-4CjIbq+m)?kpe&K`H^1;zruVH9i5Ke_ z_a!kkpIsUM`E9=Utx^d|4LN>hX4Q%>+=icpCvBU&wnJD?Nnb)^?Q8$LXZ&yJ{|hkL zm&(E{%JVDmh=cOWg_S;A67IqS3TP8kT<6t9@ zlwzqrVK*y?;_E*kp<1EQx7+rZ#@5LOcZ5@>m`BXG?lvJXIB|#Fsf;#*=Lu>1^thfo zNT%|Lq%xja(X3&&&0ukGQ$g^YR1QJKcQwZ=EEWe|tG2YVb-ep-Z)weRQS}|>8=bB+ zwryjnIK20M>1ux=rrNXjADP&)GycD(&zip`MdgM0-<>xu=gM;aJyvf2F{eW6m$1c$ z>NxK13-X6lCZ3sC{p#k0`G<3_SF0?s?@9~$7fv+%U(CY*%%KW17#SD>bQtC`YE59A zz-TwoZGn&K;>Aje`#Bgk2ytfSJuKTO{rTYm29~WV90CdsjZ7>QP<9-$OHbsy@tM*X z!*=RAOYkuUT@U@enTMP6{=D227T!H$#gt14K%qTf?rgnZeYyOv=^>r`>s!m-z7YOz zRr2!k!sH9jIiz<#Z!Nj``sMm-_A_5XT*Ticx%v9#2!Z}n4<|vLXs1!#-RUP|QSk6^ yJKtcT?lLg^`@csphJ%5DwfwjJ)qhi%n*W!72&_Mzp;7<6r!oKEJq2KC2?GEWY+b_u literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading08.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading08.webp new file mode 100644 index 0000000000000000000000000000000000000000..4ff242f5a04cc9dba93f2e09931f600be76bc538 GIT binary patch literal 1498 zcmWIYbaT7J%D@or>J$(bU=hK^z`!5?#QlsQTZv97x|5>xcvhS=s{=j>8X;#e9ls#3> z)9(L>Il`a*G0MOG|Iy;>`m!;zufAEQE#GzCsXqOv-G)Vz&n6sHUe~Ybu!~jjI`8+Q zu-kJVx_a!_sHwJ|W>j_mqjuNt&$)Yf)3T~B%WM34Z@%r};tQ!CHI6TNny7Q-)xwx5 z>E~+K-b_Ezu5p{ct*Fn?QZ{vt#mxk%?-EdHmdFs`I2w-zLA{&HcQCT8Z1I zF8br0$MPmFT#)qG)x%q@DGD=FFV=^Yi?jlMXC>Wwyj;%b_jH%g?=uwB}g% zX4T#5XY0~0al2?sF39TjTX@1fF5>b@ruf^j*Y_1Tsn}d}IJ+lPBk#<*z6a%tFVAx+ zG`P7orGL?i%-d2-SKF-j39`zEZH&}NyT=^cQ1;!O`^bTpudeDucQoJDX8fDAyPtF7 z-H5GgTtq&czp5v2dH2s53=+wj*YcLsS54+V^7Y-hW$o5iR@EBr+_YP}@rJ3~I)(5n zaVwWS5A@F9fAsy-f;P`(UXF+TJw$WN9NWI_3rgA%xROC^{?f_!q*8AFlup|D^$J(k ze#fVB;wLWuHqot#+{my@cKHN*<|n&$bcpbU>8|*;% zescSTwAYS^y$W9%x$0ZOnIyw~my}#s9LK<1_vP+xxe3Ju7K(S)Bt6)<^NjoZT@Kd{ zK5Xe@T`l3T-DiHwZpV8E1xpI1&vLx*?@_ilAKT3EQ%j1^EKXy{6pP*Q(?z{mrp!!DP>NMye7)mAbii`8Fwr5ir?Q- z7wNcfc)T(}dn)scQZB>Qau&&tb+pP?%7#?SJ#P%wTUK;yX&Hm0RCj@x-r5M;={QV>uY#u770x zDxP}HTMPcKCmR00ZpZ*E6%;lw0!sybhPjMd6Bs8j+D&v@;G?>Dv67O!2Ezs+&dj`r z<$es3H?JRm!Ty2&0RIL4^Y{KUN@vc!a)mKYv9KZ5*Fp4=xCAR1+$u@V)@_j?`)AuM z4plzVtI|F9gX^}LcfCDyS069cT{K_kZ=LZmkQHXp9vhj}oY;zv{%$^aAv5|C*JFlV zvns{pS&JB){DQt;-MuU3QOV6mXT=yxO&LOsJae9=eR@~(Vq9m VV_AP?oSy%w`dExpJr7V44gf3~)71a~ literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading09.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading09.webp new file mode 100644 index 0000000000000000000000000000000000000000..fb3a7cbe4ab58d105c00fd2f6ebdc85a7089614f GIT binary patch literal 1590 zcmb`IdpOez7{`A@3=eXfBe`TIb7@CSR))FlNNHngXmJ$DWgLmdL8uU7%E@sbnkYme zAy#ga_hS<(xpqm#^C@GH0dVsZz66e!q;M zIA@)uu+I)r#4d#Ex#SJ&6s_$wtWnuJZpiFJ@WqZ)9cA{t9JOQ8z}|kYno}7Z?T0Ha zku`%zV08Uy3uE8`Mt3h_;Ciy*0&`AHwZm3f`r&%$A^E`rvThnL-B9NtS|9F8i?_vi zZ^`D{S2rcsPez!9P}ve>n=Dqb){JPaaxfhts#-|nQw-|B_8VYw_o?zP{X7W!wnuog zZ$n%?S6TF}UwRS$iDz3_&miP7}T;QVs&vU7nh+Qx3O9oR6KM>z|UrtJKuI$ zTu(4OaoBOa%2@ao1=p^GPH zk_^ov+t4S}3#H4rIjb)4hHG7oCHtYKw?){>^&NVmW{boYuw9gfKuq`&SEHwmmJ8-Z zFZw(DbGhmLOA< zLyW=51p6KG->s0YRw8P`!r^ohN><^%$eN!ztc-flFi3WOZW@#yhQ;HSG~6jyvvz6m zUKh}+qNnY>)Gdb0_bivA%g84#JAbYtA;ECVKH0h4bvSIk&E}jm>@kbh$%}$V9}F4r z)`{u^&jr3e2JTu+CxDCYi{k^#e61m73)%4(^ZA&keA4Ws_e2P|IP@)ug{*Lqw!iGM;oF@S)zj zpC%a@tnd2!*@Fbhewn~O6tO-gt*@^Uc#;+KHZUf`$UI}#?dSK(+OOkIRViHW>!p&M zlwweyLneQ#=(g1rIeOP!z^NrM9zZj=2IhoRL4{&-jlwULW*IAt;qa68sPRr9DnOPt zRq2(=^>7&9RiLp-B>MJBh=j$~IXb^vDt^xBrTbb|-$Yb@UMWm|Lm)~=$VtylZolna zFXseG`|6AlA?^o53;v2GTQbmM)*L01)IQ%3`Y3N7{7C(vyD-Sbr^7mLp1h;WEh~u>q$}lPH`uVI zB5_V1x%_RAy9M8ca_6ST3s`hW&wz^2kZkt2BSy9fs)#BKFBhJdL9ML?D)R^<+X$s^ z5>pu;$G*-ZXFl*MlASnU-EBfCN~XP6Q~XF{pmhOEiS&<1|7nl^BcucXn``VGZY%&C oPJ~fj9I;HRzP^xtFFx7dUK$IXV*U?_i0Nmu4$USAma2z?LX`G z9<=}U>eWI~<=NuB+F9S;tbH!SdGG`u=e(<0-LVI3yn1=6`b+Nr?$vmy7x}XKcb&^G z`P%9<0Zs3Fp4%_(Fjs%Fl_U6<;r9zK%H5YwR(>z$eo>}>`vI*sLqSIx(uLfrvJH9HaPqgh{Xu2KsAV=?RJ#Y2xKrSZ@Ddo5&3ZEGqvOj%NJysAD_@$q#v-?-;1NIR!8gSZI9U@ zM|hn=<$F|xcgio`C7&|A00IWVfnG*1dnWv-o-5J$`e}oO9cS;(NY5{Br5u*5c!(jrYrroQ>Xnev|S0 z-fuevu20(Iq--B|Rc|xzzntoC-&W6)=A5toXy$ECle~cWX9QkO)A`#c$?m^nQ;wq4 z*OLAt4yJ|cz1hr7nfK#{bdd$}i{A%3x2Qdx_Etmc zL!C6c#O1xOgP9X1^hVZB{MW6=XRxmNen8cY?r=%_iNB3hwIr;s-Fg4SF73&bw<1CI zvp9R^Ki4s}$x96hSNXTFTlCBYy9eBcZ_X@td3eNcIqT*#Rh4Kc8pY)84mwGbfZJe3Mi@ac9G(Wmc2cvOJ4# z<_SylRhXH$;LybszCtzbAl?m{2kTn6mL;Cy(ONIuBsIA$VCEt5?*dx94pV(s?kU=^ zlu_s|*Q-0;EZLh<^(Ss<;qsJme7HM5SbyD-e_l(ZS8R!Y68n0-#E)BonQ_H|U9aDs zsI=8K-(c3@!5WbL)#JyWrK^}Lq(4jdCIqZ``elCU9%r6}eB&jNA*KP}{3{Ktcnd1H zdmRGaciM~W+cHBmB8Puzpr4~@{r&BKd2Jg{|D5JHR)-L^UO)2ZRh73bsy;I_v6_yi{ zlmoqel-gH3ReGqLm8!XiH89`fVbhw@1sme8RRu*TXFF@2nYJ}1cK0`VtD09=etJ*O zzq{+c{f9d{rN7IywAB2Iot&a8v^H?@G5=XM+1LKKPX6b*;O}~(p#E=QDW@PkeFprceyR~sMDPH^Mb)9Sh;O4 zOY@7EBCqqe&gRdaxS97vl9qWkw=ewuIa4L(ee~;HPK}eNZ+Xv^9LxFE`oNW+YBCj~ zCzx{<_qzcd5-*~@+n@W!&DSs2bcZb!0Xgle^?{EybG^^`i?+VqDsltlTw#fm+vaH0 z>l>s{!y}}58;9yD28MsXZq0huz`$VDu3B-*)4p#*=ezz@OJA(~iAB M*M5%`u*!i009cVg7ytkO literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading11.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading11.webp new file mode 100644 index 0000000000000000000000000000000000000000..e65b41ea2138629fedb41730620418738832ad32 GIT binary patch literal 1810 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading13.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading13.webp new file mode 100644 index 0000000000000000000000000000000000000000..e3c9fd1d61b2e3c4d303b082a67b3f3e06e81d87 GIT binary patch literal 2092 zcmbVNdpy$(7ym8HNV&8`WSDE>(b9~DEOv1zC6!R*7IRG~%E&!28(JwMspq!%vtV;c`2))%FWadk21lD(;_K*I$MrGCd3hz?yy2kl7&*iPi zMo1n6xvhU&VoZ^G_)qxO{0BV!P5*U1!?}!S+W+(JYVh2Q>8mqMZ8lXM&p#`DVJ|$o z8N3|-+4Xz|Ud#KJGv2D-AO7{Hfxzi1vZ>xFC;|tWZxUPN~Sf3O% zvixsUou`C^<$x~oQ>gYEc*j|vnt=`XJdP!jtzIAm?}sACVh$pU@!_e->)g|blS7(v zE76WpANAsr(N(Wd=iXI(6qg3qefHU~^q~%|#yK^8-D$93-1*EUp$?jF*!FBB&|elG zOmSk4vZaQ?DNY|o+0!%*s{U^LzLLpb0`-{}>x;93chzS<)wa;jaQYay{|hA;vBB;L zn(X}A0DHD;(BiAbJ1_0&rP~q9oC0esWBzXK(MFzDmzlSAZBdC(qldQ1g@J<)lBulh zr#-C6^COe@d)r6Fh%3%~pRuc!zoM8mE$V|AJ|e{BtMdS6$MRS^d#jNxdnVLo z&`HYlrr_QmEdkc(xyfUzJb`R)Wj#E724^2F&Z?&%jl$8N0a%S@pYA(Se@j-)4+BLg znOkC)f_lDc|0;j>^meJ?$JIsYn__veHVmtaB%Mrl*j=I@jr&zaQD6x(qXPAVMK>g8 z20im>20Br(o;FW>?-;dZE%gKmN&DLrREh2DPgtUx>p^KYaISd~*8uOo-8kOR)$Vb~ zof|qvQ~pD$Dt@_`ltR1`JD(ZBOjWq1(G7svqlz~}1O)=cmkB)4%QU$uI$Y*^@v-Y* zgkOc+R2^I}p8GWAi`K(5O+r^=*D!k7=HZ-Jxc=^`@O7^4psDZ7igPm}jqRBj`NG96 zGfd1Oc8P%$J8PSHOxN`TgxR!_gD{W@W^_o*;A~cHWABqWI&fLn?jz|_(<8g%KBeEO z5^B}bclT<|Ir0I;01q3sabI7Z;QPKe5Tm!@o$3)2JL+?v ze+%jS@nQ|{C4Q?{#kFia=I`0VgLq$C^-J<9(e#JMOGdLc3D+GCd5GlYiV`@^gN6Cc z1G+oY7PD7vhqWxu6B5&6T}~r%3`qxu2h=X)x4xC(WWJ3ot>eEQkC4UZ;+(H4!{-(q z{_+@8qqD^&Db1Sz4+vE0r1njP^I=^%A{Uw{*ucR*_ z3F~$Vm#7o>BNsZ=yk5uz$`QhLC8Rt?f|aX_%5aeC+boe7e?spgB`fK}`dA+w?;0;9uQen5Tyb4hDLYW_W8jN(C9FU&Ndb%CIwSQ1AFUK}PNsmBkLp zQ~SWK+4(}3%vQJWb&4MvrXqKYX3%mn-V7Pv@*qVozQc81)&!q`)`%*ejJo1MifRfU zyWufsaJ<-lDlV@mE zrsZ}OP=9hS)$a9h_XYxs3qa{H?qmQXk_ha#q4qk6eXUvgxHOfcsz~%znef6Wh4d4; z>y>VdW2t^7KN_5cKZIoqdhQENtvM0&iQq34%G^=tXl1_bqGFSXzAfcF`S?o*S;E9D zjynA@US)ZnVVyY%qYR$4rqb*Q9HyG-Wk0E#12ocpw226#i*6!mfBOwTnnu#7MQ;k7 zLvh64oXKMd64f@2V_eshDmv!%3K?SIn^@fX_CVm!N&y2Zyx_c^REfI(=br!T!2fpe z8Qg7KUqtZ}XzPn0fGp7dR8T6&n1ao*Qq9X#R_5IUDx^fb{Dwoa0ond9jPJq=;;+TK z#k<&i&`n~oC_#LUW3sUZh@8=m zFn#&5KXB*}stWR+M31-8;1&87T5RJ}ongE3Y~(bCdTeVquSjU+a@l^iYsRyDO%;>L z_vyczi@YZFd2#<+)7-mBSC}(6|DT%wlaGHfI0gW`byns?Bmfx3t6pm*n50xB&XG%Q i-S)oFJiW#{5hk!^EF7S1(qISxum&SFP{da1ANdC^fFoG| literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading14.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading14.webp new file mode 100644 index 0000000000000000000000000000000000000000..d3fb01249ba9bfa64c2e570f93931e8741c4a8ef GIT binary patch literal 2200 zcma)8XHXO97EJ^Uh7v#)LJz%*bfg%12*p59ng}SO^ne8oQBXmogccA~dRvMpHS`dA z5s?_lK=oPTiUX9r~ z6vp=@B?n(LDPV=WfdV&bdyL!Ku1+((uU$>aVDGwXj9LFG?nq2A@lXv3q7bIUJiN9x zv199#pvw;7#oMG*hgIH@fh5k8VxBzpc+vpeaqBx%m!nUI@a z9G@E}e_#3O(s2+d(lYh1bP+clW$^~%umOJ~Cub19SVdd>yeKU#j;T_15t5L|nJEtp zLA&TH*p5t?*-AwsmN65a@H1xwNE?+~pO+M%!jKA4Uf&9&$;%913Opq_ibr#@u1t*( zS#i#HE^hX#+hm(5*$JvU4FxrqAiAF^5;H1=!q@Iia-9Y~clv2hJKKXfMmLoT zR~b?0+BmFJ-xPhN@@oIP`-3956fb4pT_2F3Q=i{!@7bu*`BhARDJCzsM)TFrF+atv zwP^2!hmVMjx3PM+>I-P^plbo?sRUAw(WKf4>XN0Hk!hOaKyU50TW-e3dQ*5KieL~y6K`a+EiNEM`0x2 z09FN3lgh*Q6Y;pjkiDkp&W#eZeMAsm>|sU%Tc;4ECxma*63D4;QY)$O?s#1Mp@G^D&H`eT>(>B&CQuqx;D9!5u=@&Y#s`H^Nh)i zC=b5A?5xDV5SBKhqiO%(f+QpmQ(8k{T z-@wml-UxZw3IxBY5(EEVi{NIFZ-|nQaiS9VlRKE9OF`u;6ZxKWrE>Al zph!HxNG`EGooe6;LHiCUMB4Yhn3+=5dqHWGG^){*(UIMK5b47chW=3t%Y-4}r-m*J zKLB%}eFqXASd9O~ia@eOKGz!omqe9H*GaQO2UOhIv-i zF)gC}@>qnZa{}=#Ggiaqb!i5_DwbjwZ{a)EwW zm$|MNphc|5+pw}1YNS@M>!(jSbu8(?f`0H;Xz%JfpEYV*;*(e?)MG5Y4(7%vNxN19 zVm9t1DP7j((Ge#V#PBb;D`$C2UirbnPo;{s&ExpvPA^QD#JpN)RSuQ7Ty4j27~a>+ z>#vEt=PBlNc`H}=La7q6Mbq%yD)Pmee7>ex2SfbqoEXByZI z5$YefM>Qq3Md94BRXHCM*S5s4X~v<(!Lxsr^ax+lyI53++#_Wv7~gQ*5?=}aiSjET zp9piMpN?t`J;iZXhYqq>E;GzhtS8qmP*Z_6u}Uwo;KPE6`Ayk`I@>ABJY9o-4z(eQbSl%d17lXZW*2iIYpA}(YWzfix4 z91u8Kv}S$4Ew7avPy=5+6R7QPnQrvYVn2Gkq3+zJHGYiRRhTCp*FZ`uc_R^FH_Gqq zcg2UgUUl5sAebk-UUm$Bg+{JJcE&{-5^RpaKNuS~ccLEpr~ik^;ah#dYQbnyp4IYi zBK@Cg$49OfoRBsAO;WC@KX=gN?Bb(i2*=!O4Sx^(f3NYchwA|VXnRwy79Ifrx&#n( rB#a(c{&JmM62|4-+>YL-p@QXi&$E`Rko)(JJ{=c!?*3XjibwBnh>uYg literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading15.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading15.webp new file mode 100644 index 0000000000000000000000000000000000000000..c6c99c5d626a46949124d322a8932d3b37260941 GIT binary patch literal 2302 zcmbtWX*d*Y7oH(&))WyL%Vex&s1W0wvNO!93^9zXp&^rGY(t5WUDoVtjEq53B-_}@ zAn)KswrnLSYu0&vec!L|=l4C=dCob{b)9pa``mx-$I{rqV4D*Fu-3nhL?Jb7xB&ow z!0}B0{>$KINTV%w002k{!|rQ#F|HEb8g2(&Et{ZXC*EL-bWD!JCv$S{@iSZf+k8b9 zp2=h$Otlg8%);u99v!ajO>Z@?5Js6~raiOah>4+0osws)y!rKT^{afx`}T@K+=tbw z;V$}B>#)OzQNd_Wz1 zo5}7?Sy!*~X|{c|ro*f4LJIDZqVBa$_{{w|`?G>^-a0|vtf1E-;xAa0HclpFJfy^b z|F+^{z&;jv&4JN&L(HOC!gKUo5VEvCkh+oDzl_@u@!XMgFie%^XO?Z}1-VP*@@QAm z173?5CpRIN4)R&x+RjyF&mF|z2~bSga1-Y7xtsygM($liY(@|xsm%k1O0g%IA7bUr z)iuiLA;rQnk&9)|-M3#pkwfH!s){;c{#+uAbVamSi}8k@nt>-V#3V{Z?!e3A#FWV@ zv~Wwi%YkV72w=w>PxbnD#9c6XWEqEV*>q|izPr(9Q@hbrIkcpBzNo>XXlMfAT{!Nt zJUE5Oy0WSxUc)8f>aD!-Dvf&7fj|738kaPkpgfU3eUN^|#a8)kd3i~;wW1^e>vTEq z^y}u4;!$%uV+(6&?Jr)>PbC`_#_c)`5pqpDIa;m8ok3c0m*evMIEh6K$sz7hY}Gbz zVOz-?ex;XRC*bXcYTAF|_1T)+A3sm4%XYFoO7(1&`Rv^Bf=kWZ_K);Eo)uJw?ll?n zS6P%9XfFM7g&6+6E(~q<%KmFlaNReB3k%cv%M~Qz){2kbFvH==i^`eI+F+-sW8jWj z{n^O`z=U7Xm}?x?v4FdCv&l(UTy8t_hjdz#hY9wK)`P^c72-Vz_Kv|(B{Is3`00u^ zFSXT6@AGN=O?>tAJl05y7QrHy^f87gA%c18Cp#4;4EgaASiSUzfRTH~fYnkMEdERb z--&Q@_E`6VIdMIApQ<6LiC=1woEdG!!)`vU6-dw=tC!gbJ4`L zdS5~GQqX&YVT(Hr#KWD)A#a0Pp2aJ^w23=SYMEls_8JES4-}D`>`(A43zqu6ohhae z{tVL@?p~yCuOMW}DbBU*ai}bP7fjq%O{;=K6*P@3*{_G*Z?`J7gh{%@YkZ+~uiB=_ zE^1k+?);JfdlOvfx+sfSe|aMd-w_AF?!$b;R~gtZ!LcQCl-!4G)Ic1U>eSG)ziA%D zH^Rm157|{`cU042Hpsg-3q=IIPD&a?f6ybG{t+SrvAomNB7Gc z;u{(%17HH!O~RzS>vd6{ z)z37tJ$nSGWhnka2t!K-EllEvkI|^|oYVKQQZzgCz9LNs-M~K!C+iS@BoH(Ywsg;b zUmTa<MDO$6 zQ5(%Q;1nqx7e9eDq|ybL`L+t}S|mIfG@tJF;y?%m9_D6raFYYQqw9c03=3ih#4F>UAxMXO@6z};d zwVGfeKc+7H0;^FrT?|8auR4~)UbLu`3$YL9AjZJ_`QJmuZ{*t#&f=-hsgHg8n^-{XzC2(`Ov513SOOgD zA!r;303g)>IY5O(U?LEfq?cy~E-EaP!Ds*|r?@=4XZ>>lqJNJLEOY$eZ{Z*0ADChS zdpNS|-VeN0Tm7*A05OVfw{C;)i|K)?JY|F6*KaGV|58lk=wtk@H5XnRi4%oL zp~J*u7V^J^#WvQyc9O{`cFd|9A3xtHn|E{!7d#N5a_N)i?{T9^(qVK~7rv3jkow=# zms)xTZw2z87LK80ZqFC_MrM*~#AjLEav+Mh-z(!VCRS7aLnctRdb`Z+@h^ZgR2Xnb?||`*$eN952MwOzcxS+;@JN_{{W*zjUfO4 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading16.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading16.webp new file mode 100644 index 0000000000000000000000000000000000000000..c67ae065a0a6dd7f4eb4cab8a6bafe8d84a88cb4 GIT binary patch literal 2360 zcmbtWS5Om*5=|7P2!zm^QbR|YK}x6wq(~J)l_E`qOAF-!(g}h{ZvsIGgeFL@N+O^y zbU~zrPy__L)KCSaTz&63@BQDM-I=p9duGm_pIuX3ZEb040Kh^^(->i_U`Yc202qE& z3h-BI+%wjZrUU?hWOW--eIK!9ldZqzu@*|foiuClFGEtxAOB5>z3CE|AC8(=;pZC)xqtfusQUC2I32j#mc*LrXa_TJRcV5`(q|NfZM9b zb@;QxVw44XqV_PUw(v8(^tRNG%_OIGU*#X+3#e)%AB86AHob))DQ_g?@HWW3R}+N zt|N`}Z2SUMvGhDUBMt7=Ydb9%L1@#NqWPcc$>uK565&+{@wn_mW!LilI_?ojtG&monX~u0bsV#PS6vKeX1hTiCM88-P>7W%q0zh*>nWWy)w^0|~l@ zzSKnj{_yBho__5$HkfD<$OigK@>+_AlYl@|kO3<}a$i&eF;$t;CxR?sVm-^2f9*hY zg7qrkT>BQa-t0pXldCid*5Vq>%KN?Hh_Ovu=Oz?SqLSly@l}cAv3%za$5laJ$?Ln} zBJOSg4qq~#ZV(Jw!F0`T)qt>pyTi~r$}{g4J<*n761vT>KVlQA)Hri}%Xwx_dD-Xg z>`t)IYK0m{aHpsuNCjFBNyO!*JwF>FJ#0&xoAORb=-1OOl++$%shTizs8>tf$zge~ z=02nEhAij4Z83Ah zRQ17bQ!n^UH)!b$Dhn}k3UsxXWY^Yo{KY()JlKSsez3-{EtGux@Qo zV*HL=DQ&`Ff_{X*z))Zcn@r+h@Oe~R6m}kE<*b|0kdfWW>^uC>G*8w3gQez)78sJc zk|nl~Mdu!Dxk#fK5&%xZOc=ot6_S|@E~sfRwGGu;iXbg2Pg%d3x>*_=T!c`E^N!(j z$azI}2HhOh(2P13j{=AU!CH!%sb1c;TckQEedN16J??zTk!s?q9y_YpjllPC+)sLxAMO)|{iFh>ENW4waMQ9@;b2N- z6%vrAdgO0K5u`m$#WDOOid8g*1Q zl@j6mEO<|07a7nVoNZYjOvs@rNsQBRTE+7E1ly$(PMZ?0Tbl`LaqpGVusWLD8KjVj$bR|r1Rt;H$>h^x;_#vpi5jCr6o&aSQMpPRv|M!o}NL;!rLVW(ECHXe$57VVqK^x|ZD; zleuDySaHgvxF4GZ-2SBrKc|)R>i`2_3twXI967mz!4up*sUWo(<`1?CpW+ke!N-5g zkTHqIN3y3G9sFS^x~!oM_YP9xFH!v%FVeJGgKhEvLHT#Zp?{fj(y5cS<+8Y%)eZ~u zBirUl4T#Og4cl(DdO$!#o?=9MnM#k8_1pE4%6T4Q^P9^@w&y{|^UD!A7Z3g)TtviP z`guutr-1-KogAP5D3%IL1*)dO3-3Wnii-sz6aaOM)b3sjfiD3Z#L3BTlw?pRXaqDo zcL5~HIm}GmmZuwvLH+|k8y^b`lClLnzy?`p#2CybPX!Mo#URb~`>SYR83UPe#1!rK zA8kE3z*H#PXWIykDR8z9#f``L?|ruB$6u?Nu;5&DTp*_>7*@0nOhuRE$>9 z6ao0#7W<2z97>nC(89!DV*kC^Kd|bj)1Hxl^ONbkl}G?UBVA#ZR`(*gu45bY3dQfS Z_`&bu+$bdUSoKDorfub|pMTNs_!~50hR6T_ literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading17.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading17.webp new file mode 100644 index 0000000000000000000000000000000000000000..7a42688d616f438277a0eec83569d43abb193ece GIT binary patch literal 2434 zcmbuBc{J1w7sr1?Ml+8s=D}dZ7!38G8cQil+1Ej`mC$Gy`&hD7M5rv2Y%xiQu_bGg zeUGv9Fe%I!vhV4!WPNp>(|OkykEL|bE|RXKK-!v(EspIp!ieIyW9IIjm36@!>wI`({`MY z>j>fsJ?CN^T`myjD?m$T!Rmx%C3!~R4{^fk3#HhJwZ91EwDGn-osrn0grq4* z;|B^|dBIz2{Nm91(#n#HxFRgA%vU+upi5%V8^bx8>AD`7^056k7{ z<=NL|iXRt2d6htiQl3>h*}elii!k5yI`7pQ-+WFksouL?KC>%G3k_NB5|Y}kNWPHs znPJ7pC`IGrKT;Sm^NLwroQmTKmfRfz&&nk!pL0JlG-x3UGF40#_+s1w)!JIXW!NsM zglh?TQyxc|+{E0;THRpWu+070ox&R-TX$xRW5F-o+lo!lF|pW`bkGWE*QhsHef_Dm zfM{71c75VBH}=j)HYMVF8qPppXQ7OyvCnBiaU`2%OG$iR(wE|SweAQyBO-08X47VV zDjeTSF8)Lh%8%f_gI)>d@svM=4`$b^-Gg@41)V70|4>hJMPPn0$(#>|M=M z?ARb&N=k#CpR~&?2>C_Zmg~gFVv0E9In2Ei3`kK1IKN5o?62%L4B`D4dJ*>Hiv zap(cYwt7-ocJhhbFXAscgoTEtw`{mKe84uI@u+?{rYrF09dhP1QPj>kp&X4T(t9Hj zaDUA=t$Mgx7xPCK+v<9~RKsu?zIw%ghrRHnF~rn|6N&Dx%%FNd19{(Z2uaSn=~KZb z>W10p^UvGJTs-Gvi^#3vRH>JL^t5=!G+VZ)B%kDos|tihhtXEewxeiNy)yNppCn2v zfm5%hVk86hcNlFKtJ3Ut3oSBJwI$;|Rn?EC&Q`6Wsmv-ktYNQbqT>F=&|Wu9*zL6u zJS=5>1O-(M@(_H8wqMklfR%&Q3Sk2oG=pa@Jp_`jBeL{H-dpl;ytzuB+Y_|) z4Qmf5n|nXOD{(uKmMQVHixA}ptu`lvCtz>Yi+aV%Qfa{?^x9PAtR53<5@Cm$wDv$i ziu+uzxKO7tCxvY6W5KifOkMKkrMO*w9XD;(@mrW_NSy9UDA>@|K`f_U2elQXW+6Jz zga`#!JaS-HD>9s}R?TRJAZud#JFv~3?lbB7(*@kA%`CEM%r58TE+$kiq8{gsOjXRk zwcLW^F$Vi)ocZeJr%)oEpm`c$2Y*CFq{6NTf03(1*bcNAaD5Nu zmcTcs%4%F3Z0)i(h!x@~HSu;nwH8zeZHs+vTmxlTLXh@cZwy

R(=3iD@Xt1bR5? zCLq_BYPY4F()mi$HVclQ@W>b7a+}-Bui4?W3+{+&97(onS|%6XqXkH~YcnJ55w=zC zU(2UQ_dD2&xjuw9hNxCFJ>j;r`X@+~%3@5^ioWum?SiegK#QD$mS6Sy5(^(&w8b_X zgYP=DwJF4@wVQ+0qJ5_Sj6#cSc@H=~T<#~!74?+x8B;c;XnfY+&OVp0f#AB!kq=AH zaH>#wKNH@7=8|P7M$*;c2GZ@3m$t#=nHX2)Z$O=oofcarnbqFySfqqCJ9A@k5`q`? z=91%y>&*xPWLE_^8amYguT0(^2$*HCNf_Bo;5gT^X*^YoGWnFtPZTs-Cws;b5F zCFu!}wNvLOPQ{~u+3;5^fm2QT0P}}^Vz-mDT^a}>3cPr{W}vrFaQ9#rvS*y4;;N&NAVxT^q)fj literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading18.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading18.webp new file mode 100644 index 0000000000000000000000000000000000000000..8d5e0e4553da7dd0125b2194d962db76678deefc GIT binary patch literal 2532 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 N8yg0s9Q|=W?Qdyk_U!-w literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading19.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading19.webp new file mode 100644 index 0000000000000000000000000000000000000000..ea09ed070d1722b0afe212d6b0d474181755f9c7 GIT binary patch literal 2632 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading21.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading21.webp new file mode 100644 index 0000000000000000000000000000000000000000..6203d944fc8367ca6c2f810aac65c3be987ca3cb GIT binary patch literal 2752 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading22.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading22.webp new file mode 100644 index 0000000000000000000000000000000000000000..7d8dce3f36f9cc120dff122e3a0d81bc1262c413 GIT binary patch literal 2762 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading24.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading24.webp new file mode 100644 index 0000000000000000000000000000000000000000..451a1cb8ba3e0eea96812319fec408fecbe4a1dd GIT binary patch literal 2822 zcmb7`c{CJ`7RQG{X0k73n=v9}iIHW*Oj(*n_Ohguy)4;fq%gxM#x|5S*&54_5vEYd zzE%<%Bg@z)>xd}fhhP2Pd*{6K-Z}4_ch9}&+<)%9-~0XRbI}Bi-UkB!_U8<(?5q%% zf3*OCUzNi4I}OaNFhkq`0NWal^_;zQ@8E-GPv^y0k8mob0}m5Jzo`XlhG*~M9pfug?sQ*5IXNYmCNsio5OzVhQnvyw_p=xNGlFY|hUg-9*EP4Y$7avN@ zcjEKRbRv~;-QQ4ldLxAG=49V10Bxnm@y=$j07_vM%@EqAbf6R4_-s3+p0qzJ7+LV_ zfN(h+kzrr_si!eFm6OJoH!q**n0u+t4YTJQXw^Iz=q={!LGzT$L%cf_;`uli>UW z#MWU~1#rws(|nmD`7!3oq#rzI`b!UluKa{#O28I7EDDC9Z^_l#DYr^Z7%IH4E5DIw zaOH#@8K&@vLG!DRR&7wJpz+cd?V!_r;iSPz9-bT=VOaO<$7B{EfFnu+CG(<-?{(-c zg^)QfZScA*k<0Iytq`0K^<`mMgawiN^LZx;lcb0d==z(n#-Ng&>jfvAgbb7eaMX;m(8ci&&S7ifgwO z2j94#B2Er%-Z|ZHtU8oGmF`T}UL?JyrbEJZa~^j=)hW!L3L;dBV}+HZ>GPONqB-rV zbu6x3*>eTB0o^&jZn|_C-`NzXnIob2=hs(tAt1oXVdJ!;DqPg-dy+T1nE-UNk()qP zSVulG$Br+oF~QhSUe?3Zz-+rFR!w~@&)5}|wY|Kz2gFa>lH65|MsUn_lkplc;-b^T zEKpixp0T;f2G%-mJ@o|@6Ud1Pw-*AQQ%y65TkmEV=GxNutUt3C?c>@Mif)`IGR~>$ z#8ZpxQjH7Bw4MqaE}DpKJK-Q{=u$y3C$BY98jW0@Q6kVTITZ7!Yx~Vo6Wb{dQao5d z@F#Z`1f1aED-t_IrKhx^91;ow%;^$Vm<_>NR}pm^+I0nMCmJla4dc*oVcOJT3_VSz zs1{7Ulk;{{bT+c~LC-|EIXGlI=nyn=;9{^k;HFZXTRvzoBRXypvCY|V!Wj#6*y);< z_P3cG))ZR)@X!spU%ZTztUpb{y!Xz5!hd419n8q&fJ)9ae1K=8g4z$>gmSYdcSAlNu_sT_AZaxas9&DbBLo&<8 zd1=;9mdoajM)u+_8Lye{Axd6Z4_xZZK1Bed7fQN3Y;;hMbh3rZItYtQU!C%McV0d` zrJe#t-|WB86mvl)vMs00Js{q$Q5i7gr?@G+Rwoa!e|f!SJL$A& z7I3%6If%Cr5JI$_J38g(c3SMJ$ti(4%cRj2d`yUXUD}P7`N~Z23dcVEIH9Ii6KJ)q z)cB4kT9u$)Q|t%(bkSQG-(EaU=-0yN09e8%#iFi)Dr5qpyF`4KT@DEhlM*@)#(E52 z_`$&JnApj;s$cn8hDYb$G?(*fux z1KvOvJ0?{%K=wOk>cy;v?mdkT`x9eRH!=H((iH{71gV+gfC>$IvOOu%Tip4_E*O@# z>}=ac-_|Tgu)XxvD`1})O0@{W%la3ljZs#j$3Lc@O?0wh81`Ir^Ey_(t*EE|CjD4k zn3uQiF(&Fwa`|fsz)b~YaCWtu|eq^NOFN9QPCEVQ@+ zYk#~cuBl*9U^PG3>NRf%;~-@E#75EmzT5Tqxhq#!`g_$rsKA;!=R3S)Z-fhyrg2a` zhD5-@V5c;P?yWZKPQIi*zL{MA&1acJvah5d*bpLy`U-w^`1w^2u8}?{JR(XcwPP;di`%U0$hn>^DmNYF~m2;%t&0sT?HS9yx3Y+^MlF(4O|NF^%+`iv8M^GG- zhh{DYm2?o8zm2FW^R^u>FW}ZRefL;M_@8#@r(ZilP{{UGX#V&=T=_qYd;|dOf4G{Z z{)$FyeJ_%%lPYG$h)XnJ47xo!p%l9L0nc|cXme7F-|l^^5G?4vuEyh;nH&2CYA NkhOWxFVOuv{sR2WMB@Me literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading25.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading25.webp new file mode 100644 index 0000000000000000000000000000000000000000..915ee080f14180443c5cbd9dd0224e53aaadaa9e GIT binary patch literal 2876 zcma);X*3kz8pp@jsWFXpieYLLvMbs5J$np|Fj+#%o4x5$O-_^ZEDyx0546|Q`4-{*z$mI1$bi%HevruE2Ea zvb<6cpC5y3YkR)tFrU^Swk$btM3xH5AK0rSOIkPJ*2b;LV)crOB1dKJQlUdswNlz0 zHUBtLW^^co1Z!)wG2vT_(*qcSvb)W^N8k zYr^U~3mg5P{W=*%F?X4@6-vXN+<9B3w<9I@o#97d0Mj+pPJ{$ByGtQUa#Q)~pi{L8 z$FFRiZ!(jG^lWc*++-)a+YkCyZmn1OeS$;{F3YoTB&y@Ko2H1(pFTsMElo?OyR6nF z^dt$i1gTm>CUU*YYjm%xw>tS5bm6=<$6w$g;5U#kLrw{T;y4hN-`mg*MGiAG-LFtS z$og}B{;#FVwnF5>MUxWNM_$EO@3$)i5wl%Cn2&UE9z>KL;cwvP&L{0?$lTx^r=Qx% z#K%Wy9*AX%k*IxY8nX{q?cq7hJ|9{+7+YmXK&RlOw#$HvuU_uJhQbxb1V}q?_TRuv z7p$rG{1pA!FcV=3{7bT>{{4>`N;WD%3)hs4PCtK^_!>hR?#|M9vJ9Oh`CQ30YDWZ? z$@W(7iaM1DPt-DbeDY;}6kLIgne{JGO*8!g@}p*Hvf0skAE%A%ObJoC_Y4JOs@

50^r8+@ly>?mrU_81K(H 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 V?HcPBd;Bk;Q-b+?*ALIN{SP_pS+@WH literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading28.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading28.webp new file mode 100644 index 0000000000000000000000000000000000000000..a519c0e3aa3418717521cdb536da1303009967b8 GIT binary patch literal 3362 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading29.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading29.webp new file mode 100644 index 0000000000000000000000000000000000000000..96048678c7fd4cf2cd1b3e6f6efa125d4801c811 GIT binary patch literal 3364 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading30.webp b/Android_Mireo/app/src/main/res/drawable-xxhdpi/loading30.webp new file mode 100644 index 0000000000000000000000000000000000000000..25b37283c0e088e7a606a74614a7418d23be998d GIT binary patch literal 3342 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 VyGHbUx9P`;t^~-Z@{{pOmcEbPw literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/logo_big_ic.png b/Android_Mireo/app/src/main/res/drawable-xxhdpi/logo_big_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..7ed0ad2ff78ea230e86e231eb45e7027d3a74771 GIT binary patch literal 161468 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 z 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

Qs7Gxe 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%0A=KfhH~WpP zi(>K5I>G;#LaU|v6Tj6y6h`i&xcvX;c@cR~aO~)&%g#ICtq*>2yBe`T6KRDTqcLPv z#fd3v7z#{*;iy#>$j*7%q?m;$uZzPd?BhS4IjFzy{_WX3svy##h`X zM=hwC&Ljmdg>9ek%VeQ~DFm2_EN-J1NB>tI{TS&Z8Kle<#s{TkX465~%Z(1LVcOST z{xPZ8UmQ}gWDzsbas}YNonRhHF2M(c^<#dzSO6@Z%ohYayQy^y95p%Hn*}fX=!s~0 zN|>ZCO3;-n_8=A3YUqb+miv3@73(k=DR1l^TFk&hV{k&15H&MuaYrLv_>+8!#k{SD zEZh&e$g_I0!$_sSgUg8Jr_y_g4XYDmJ){(2L8FxZ21~gmD20ChM1pmk=hgqUv#6PZ z0Ym5+MR&^(mezd8hw)lop3sEPOitjc@6rsm?S?Fj47GD)2k`i_5^bWRG!6uEg2{*=)Idhp2 zJf)bbs=(AExxU)F{~3Q@EliSyL!8U$>EE6F>l`jSzzN^aE0Ro^v1myjM!HxAga&7y z26*SE;jkbgEZ9H))M1-+qE~qEyCq%t7?U@esxbR(hmjZB;w)-w8|m|xj`bUBdb-Jf zlV&06?&jw|OPbtNjGgLYW$pN!vYwsuXA;yx%F23X?%hn$O)fnuc1?H}Y7a)P4g{8s zWeW7Dhwk6WfpaYyN~hVDhc|tAk&ui>^#9tti;NJ=%_jA#(5Y|e%PCT_6sUl-$D_<_ zyhpz`4!+^m56WSv*rm>tMf}nYi6Kst<}h$XDpaWeEdfO&d7@Gt@M&u7v1eZh9Qg}bg7diiZCnaCh@qc~4>xW5zGGw)|47)A> z?kXqQDmejOX6?=8gM3$LC59Pq%Cv4osTjG`vU~}AT`@OdWs<^ER1(I0us4b zSUNEIT6#i5`MptBwou1@`q}&$5=*yaW>3eWQTW{*f4xk-R2XV5H|4rRMvQSjbuU9X z8HGEQ?r*--A1#dY6SClc(b#3OA||oW4pfa*YCx}}rxk-}65!3rp~D4@{XIlQQapg1 zp`cGW3ctuLgU(k=_on}JnU2kNVzTa0rNu5MEZvz4B-vB<=rL*t zV7j^I2zJjR*%1SdHToBh2wxrsA-U}Wp_Aus#W1>;L*M@4+*Sro9lQpV_OCEwqGmxH zrm@3qrP54g6J{ey?6Ksn;*I*yesm6Eh?nb2nCttC2%)DruA}bg^@$V@&&G71|BRp} zfs0VAjjPvbK4x-AdR3pxO!mi z?P{05CEQAaxVYKCxT`-*f7>C4>a;CU{aNlYleCJKXmow?dG~rW68+^)OphmDAz!O6 zefgx>BwB39L|4f^g2X4~`3n89lw$xAzY(x>UD0a@PzMBJyiZjqKit zMv8-n(IDj*0hrUbybXlRADOr6G#q#a8DT_E=A}?ZUALC%tDDJwbq4OW@jY?l0yIlS z*~&Uq5c*N$svNA4V+!h4U6I-GQ4+Q|A&0=j3Zw@mH}K67tN%y*KSm z$v6ThpTqJ9(#&w_30#{|DN^8>Mxsd8th}33k>zsZU$hHWqIA#^IWs%DO=Pm8Vrx?8 zhnA*PYcN}$(9Lq1dUbbkyt7LD2+c#|SK^(9G6_+$-C3PfVU5|32=4N47PndI1eOWH zT!N7vm5V`oAr&3hj+Tmg(~~YX9b1LP7D;|u2>w{B#-Yxa_l8SyRvt%Bc^GuhD9qO} z3i?>1Oe^(~knW^d<}ve{NgG|vT{|&|{>fc5t1DED01sT=_Q2dT8@;?<>RE2Oe^Z&& z${(VlcN4qOv_a4(OXW;o6HuEx0T7wh+jEGAU*!^oKn@|6ncdiSB*bTjq!8{lqE@Ld zAHiT0Ge&OHIEtJFF%iUB=X(5_N-7WOZ^qTl${D&U5PDWd$NeAD*xT}kWO&S2!wVngEfE9VoxZA! zIBrn)6kctkpC=cf+1ASP1-eh$s*%Gcr^Xck!9wPNC0Puf5wsubNk_@)z_W@PtOokO zf#~YBV153Da|2uc!!10Z60VIscUq+J?a!w5GdIBEI^#+r-NQC342a=ub@WDk~+BP zz*#pYrlBdb^SZ!WYR;Nf^kzDs<(Ijcvr&$h|K~+BeTCtw!BpzTL!#bN+ze0<^NjlbZ`jFom&^hoR!SfU8Ty7}u<#Le*~ z=$YC(3Pv1k^B$q{XT@^EPNFw*GxG zP0z4}=y|(dS1$d2HgjYPDHziTwVrxX201QXBYS{dhT&Bnt4+j%@ItZVR))NbXeONw zx^cP5)4skaM;1qHTJHt+x|4W&ew}`q;MR-g&V)13lXCzK#F~5Uv9pxHKsP#C{Cma; z7Rx@feex3qd1OqCv1Xtg>pm&JC8BvPph~9n`3O({1zt!4IaSAz^D)Se%gywsuv1qBl_B`$A!6x`|(BU>)A;P;~GF@2#?4ejB@brvc81 zl4&BtyB_qaAErB6@1f!sfej+qsq-ic(X8)zIiEjf_+~{EP}8wo-B$=- zz!!~g$7FKPIk^i&|P5ebTGg*&>(K7 zch!aY6U}pVZ^mfIV4rWqoW-eKAtbw{I+^P$lDV!GN7aP`Ta-psieAGPu?4DawJEup zFx|d4i&!Vw$vfLOoCzlmHe~R&3L(WV1tgqg%4a8m2=v72k(4*l#RG_*(KQ=YZHm9U z&QU^cF%!ZRaf_HpbYv6O={LK5&d`v9TuLs}f5CH^df%0f-{bfYPv@1`+&HKcn4}b_ z5*4_2n`uBm4u^s)vPr$O9pNJADU4G5r@DEUiYZ*<(-aUME}5RBcwDS{x%|?UryIUu zcSP-;=qej3VvNO9A%h)rBuE?6Rjg*Q>0S#+neYn}87qJ@To40KaDZX{IZ@S$qvH3^ zoX%=X>^rU}A?%+re0lNMrRInyGwy|9`RH$S|8IBd^W2<3O9o1DD{`OnmAzvER$Yej zAE?Y_q=G;jO(c+ne{0Mon+~xw0?`vyR^~4jb#ZU+TY7!4Kt7br`tl!2SQS)rDbvm} z`eC(v7_pG+HRZX6MXbod61X*3A-)SJ5A2#&e3Y*jb#Ul*r6EVb6vldV;M9SsK>Zg= z)-1B$?jRv};4%HoV#xQ7w&%`89I)-^^HbUB2;b|HYcVBwxU)?kz}(*2LR1^aW6Rpk zXn#}Bv{>gXUxPU!$dWtdo=N|_AcnzY(wmos+hDL7v^4!V1jhLzx=?mr-|afGxlzFk zmd&ZW#MG%p`iZ^PYimu3aI%~J3*DrWxborErlP7#DhWkEqXYk&|DUXDw3V^6W!3x1 zeP6lpM(JJ;L{8rpYyppPo(g|Il&#Ops9ex~XN&0bif5RmSDrzc;$?IV>_~grdZ(tY z^$$dyr^mbxGwk66+`_$~39|L+_VxjOyMVfIpyE^hcEbP^-%Is5FQCHYOe;~mMn_K+@+FeqyPUBUd%8q1 z3$?g)IB74hM9xThg2?MH-m_RZ(o^JwLu9`*J3vlHGdu|2?&!YX*6(?^!gKU&D}64K z1*1mZh#FS(@p+7n$t9~qI;ga#0=3o_&+!B_N3Qkhiee)bjJ&Y@-JMiZAU+#ECvP}U zWv0a1-#WeBDPf@Ixc{y{WB#o@hOUZ9T{hP_o3XQMJ|?F0f_S0=hI%9?oji}>a={~v z*hh$lm&=W!)XT$_TQe3*Pm-U^Kmbw9*gkO8hixAsx&=Fd6+-yRL?nvCneFc{%n4f7 zRn+U0)5G57r{7=Ij=D!tF>PX1n{0Fx)45jR%Frx~4wv)@&HVo|KGgdKHGKt_B&rYev^A(7{Chz<#y1pUt=4f=5uA zkH0H*%nDN%>rdhuOs3}Tb6@)**ps6~U@mG>_DKuBR4D3l{fonwIDFn27qpC4$hi*S zm1pXJYmd4zho>w}hKHM)Oq9>52Rl#-_dv4JWQ8@hibXsVUv?p6Q%v)Kd?;{0$0xc^ zHuPyUTKCSw6=aZYWZL1E{HgqW-ZjC2Oh1Jjkc=; zDT!#^G{jBTqZB_ESrI<+6|F6vR_&qwAndye_PRobaykp88vd9c>O1HOJK z3%*RsVk=^@|4|5UUQkQ6`FZ|Qhq<~%;I(jT zPmj1)4IjD7V-q;GMwm2)MKcLFVZotJrZi~fxY|JUig_BX!}RtZ2CnnpZ-xW^gE}wC zb2?Ly6a8x<=ezT5Kn+#tG6@c@o0+&(Y)#svh(+yr#8`U6s(IK0%;@|(at5HFH?8`j zsz1+vsX$|Y7vnBpGThpJt6CyHa3ufasNbqZBq*j zD?RIGk1VYKvD3l}&-^+b*#oFZ{_u*3!7)FwfWJqHq%rjG4XZVH;m%vwaf4CP{8zI< ziqrR*hi;T(x04v?uvqbcG{RHSYsv5XB7bxXoSSLrtr{a^-YI05*Yb*RXhC0Ii?cB_^WHgg-o1S!zltSK?OMzU zpZlUt3kiRKj69cGK*TXTo6<8IDN8{XGI@~o%tS4WDo3c;>{S^sd3QSlXf!JS$;#x6 za_#R2*jpk(@e*t&RS^waVYI1jm^)9*ddGrdqR%0s9;`XzB#*JU+c);<_4;8jLDHTz zF;oCja40^b<+plo>zzqvR+*u?yh1N+C0RQJ%RA(c%BYHzd>hnzO7s&W#1kVkDjSa& z=3eW17$ZyE{c{ytGys5B%4L1iqmQ%s{yVv1`!v*f@^pVaB5*6zmDG=S)K0ykVvBZv@hJ}|*EY5Gx{)y}gUA^6_lGt{( zfeAq1YFI5kep~_sYMQ%!Qjd@QmTlesNQ3RAgLe+}ZbJXc-`pil;mXB}nW(|JsOp;w zQ}T`}znDChLuCXm^TRP7Kr{*lUNr;-YJZKQxF0fG6G6+(Bl-`mrTx1varB!hx>G<& z0Bg`cyNel^g*MM-bPo1m44*VR1~bSUbEx@w)En`$c4SS%Pk@pVVfiDAkB{wx4%1OR zkG!i&{5wR}Q8;kud;xV{IT^a@z?04OuiNWz%nUVqakbY7eeO_G*f*y!u!g%Q%~=+Q z!?5Ps$U7Co{jF>rHS${)Yi#s{@ZC2MqXzYcwYthRLU4*I&E?}(iUPaie;~bCDyb`m zZ<~d(ddnM+DRe|9yBCm0A9##C8di$bzTsn9N zHPh(|vdF=)j9)je6PnB;)5eYLof6m&p6bR55QVgN*@kbrs{UEqA6_*&$`RYCHRRlm z@m}uc1)`gp5W)v1dOF?!gU%$Mppx%=x-%NpBLo^a%}$=Uutg4$4JdRHs7ZZC^!6H_ z$m3PDct0?7oB_VQKln0gT-1&W@v<%j6xI)uN|A0z34)QKyrHmX10a790Wgw_A3 zY(VmfgiW9AkzMUmI2!8nL`4%KR=85Z&khHlNnt_iaJ*9d(&dh#MCYfRo*=>**|I$oCqT)NNg!@bNVvSWY2(iWc*_Msz4JtL>rqpz#}r2xWqm ztN|s*PvR2B3}D7~j^zD&O+15O9XBQEX@#bz*Joh#~dvI$E1 zmcZ&iFOW^f^|6AZM+zdZdlU4KAxm-{P}jrltY?0n(c>eTU!_k4OVlMW-x$y=UinnG zr(=t?=Xx`|(r$~vnUNb%i&&8^hftmQ^M31qhiUT0EMap?`$gkTD1K%96UZcjlbct! zM_elDZV6{D$77-;eJZG>wN9KQm1F;ey1teL#V-qFI-sGfEp=nMT!bhVEfq9*qL?Ea z;(?Pi-0b8nafD%aN$sQS=9-H!t{&kTd{yfm4j&?FK0732TUS}^cwU#Pa=Q1dLT5^I zbFQgue3Z{pfq@KK%$BEj!joog{L)$wA->|tXF~=Heq{5;81J3V385ce{sfeS4zm?< zC^rS?ZTR7g+47<-t4^aaGO{LdanhMv3m}N4zb|j;JTCNXfU#FEw7<**nh1?knni2V zLHn8MTZ+i~t~>Jd9DDJ+Pe62ZPd_RHTM(ku%d%Lxf~gm;PY$o~lTbR z&dMjeR`N(F6fv2Q>l__Rmabmh=@@0rGYrxQ>@Bc^#WwBRcq!cLmB#WfRr~5}ns@1B zJ@LCeatTKjV$8!8+GGOl(!Y9(pPRm;wYP~0ogmG(2JwT7(uMs*F+TFv7Pi)oQ!9>N zAIyq^!&Q_k>tdgPaghQ>0=X`q2cp9!ITbx;)g@Oda2E0{a2vBzf$o}^m^P%7vX$vl z%x}o&Tyw)ge_@e)oYcmZHe#ACUC=M+09t&L$CKqh3s>d?4JGEqf*Pqlta({LR{VHS zdp>Bu{9E`^Adv^tWHia=doVfEGs@AcSz`>})510rEC(%Zy@jr(KK}k=akn8z!}(K3 zu)Uf1tYX%2>_4mrDoVD>+a|O*_8`^Ay$%LOSbZIu7d7r9adVkvGxm=_rV(PJp{-98 zm9_A?v)<`H4b9dT%*QhKUoKIByHIvz;1_pxb=Xig^?01K)6 zJH`&~B6w+CNtht$!jn3}0%%|FkcsQM;0;Fv;SK5`pVa$H$u45V<;DA4**J;cp7TbM z;d-4iw8()wsK2e-H^+fXTPJ86TJLk)WAp-!asH&r?F?7#JQWBJfXcV0|36M(!1vHa zY8DI%xv}dtT2a{+Jx#fYZD#k|Xlq@quP`}PMp>eQmm3Vt<)fB(<8l(vB6^ZX`9m_u8<$O@g#EsM@k7gecP0(PlkvLcpqoqyz?Em00V3oPe#OoIlKg``b-uEg7 z{T+GEe25dW=EeTac!Z0el3o{v7NkB!`=A~WU7H1Yy72TfckHPK5}b)r61ykGGrDa* zcFFMbRP1->qKOta3M8yE{@%V+@72ow#abb8t-DEY>0WgU{h|7$&lq7LCVGD2BE|$6 zt}zhuiu6y;m{?JM{ukGw)q{JICUdPxb$K~V{5SBBIqC91BAh?a z+1VS{dcyYA6ZgA`8fbKRVMcAjE7#oz62b@0swePgZBE=$VOg1`sGFmG#wNo~q<&gn zZzbc`I_XM3f}_x?oVXYG30gge&1TEpq`iQ9^C zRxT^3DzX%IXq@QEGG{p$dg5hBgV{^YT-`+4{2v)Q;ba=ssq-P=W72d$W^OY=a>*8-VCU%JyD!Cv2ZNK=z zU~k$fDOs4UY)sa6fs`rkdR{=87z9N%KjiRtYCdE7(ap-9SdD?xiEtZQ*+He+hoD~HyE`yq zq!Jav6FE5@U3|__#YH8ArFmg@0m>5wjrJJcd>QsFQb3cp8%zhXFzOYH>Gh7c>1Ai)?64OTUB;G%YW8%r3JzLP z7QY7`@cBk#(9mQkQbw6Q@*9Eb>Z=iI8jaR9rSS(cHId6OqU2|ha0BuG+Dt%InLYqb zlNGTav#~n3DxR(H=wYrtPYY50^Y*oQ#8?SjSgGlBx!W(Q%sh5-a7l+uZ>p=03=dZn zo0=s0gL?p~6+8Feahg@pG()U1%mXFqX0?AoR+e`PfhO{w^QNZ%VZ%CyW;VQ(k%vYa zPc*-ZPA6Kvn)kIZ4&KO3%8w);lsGXPA{B-Rf^lXAPokoy=^6N=o+VNdbhz68(uotV z02P$RV%z6KeLa4~FDW+H-(IX$&MVpD*njRTB_w1~w%{md7Lgb`Z>cBqJ>|o?aQ+wi z&9y|H5Vgc2L?FX1l7RbKXBrwn(kWu(gYN@BB7G#SNH}%hKz+<~i>)Nd>XMoLwLyrcSvjjMG)I zQ>{=-$HrMH5q+Wj#J0*)$V+?fC10#~6OiM?zEE+CVl7*pcjThyaK!N7u)r`L#g)~P zU!=!%H|e^Z2r^Mk6G~T|u%M8-v_alZGSDP;wt~qEm!yBOwBQo?(Qq#k9BTYTcsAi; zB`38SwHU|dibg>6kln`@aamj3v$NnmIQg`>1c1GK{b^I6u-lf~q_v~_yToOtKcL`9 z^Qx=!wW2R$3U=+PQAyxdwiaD=x10P5>fG3dUTkXk7LHOptPzsm0CI;hi!V-AnuVdD z%^Jt_nytxFl2U3$DeAhjKl@1Dzf^w{8|}uWzySJ`os;2nGIJOq4g`dh^Hau@I%Qpr zb{mJJ^c;4N>BD_@%-q)liRce~Wo^%x#fZVH z5?aeloT$X0qA^T7u`>GK@tYZ6p6{>!N%sK%*LBDWHomgsuF^dr{ERZ}*GgVIw0>I+dtCf?tfSSfpJ~{DQ2giEjtRW~CWfpbp z%}N6g01-^=BU}<_`z?s zj)-Vp1DjmA=;Gkj!1|SlkL4AZj*1ZGB7mYk(@|cNw%tNM3pL*UWUT$nj$a#z*Qop8 z*hg#O5C$GzQvb~*`_V*$zhekbdezL~jclSLql^0J%0S!d*SD6)`AhUHpCbYbGzsg0yzU;UaR`k0AI7 zL{*c@B6e4v7R|_X%d8k{|6qCIg`uP=xt7v$$$;=ibj!0w4@T`F;#YSDuG(}j{P_1UPyFiIsK{Dd?0bB0Bia@s z=wNl2?l>m|M?6UHh`hx`=rJYFq_oU2pg4Xx68kfOGI`N^9%P=4TI^a=APO5@B25b1 z0jGWNwY4LZqvm>ZQ|)pdmeDA2tGu-TIY2LnDYfQ_XOmdk5ujK-tGnY&0&hUlR-tiIbKDV(QTzc{ z06mpq`fasVu?Q3Mi?iQ%xuI!TiqGrQ;bTCGWhq6r&^q9k0-wUa_ubha@I8!EnSc6| zWvy8Y!%o;=!=jd)7*_MsWSYp&sfNMqlx7D2iD)aWzZkB=@$won5DwXX`BW^$UZYUSAv)^PVi(_7GIHEVmY}aup z^Vv_k4c4&q#(8BRBhNO>hIedqvQJ+L;$y2Odc}M~kGcL~3i@ zWVkP3)=v1Z8>&b;s~BZJ58tqT(I%QNVYcQB@*}p^JFI@60rW`sH&|9GIy!Y)PCtHd zyGPFq9uh;Fm`Io9Tnzq>O9q>{Fs@Jm1;5LSl$EC1T8vi6Pk|xA6NY-`?9v}`^CkF_ zkj-=Pak@g{@{NO&g~zRRUL@_xk@Zn_<*kO{Cz#R)R#af{E{9cIh>L+xkVP5~* z$Tv9pT=hu06!lp#Z58Dnzo+>n=DXFHmS;y=7ovU370nztp>a(bN{!e*l-`tipO2uQ z1>l5wOW6T&=HhYr$|~XHU7r%{ixXL>>v3$8`nuHW+Xa>Xqh&3=l?M2!-SA$E{Lr1v zUYH^kPC3Jo-QF5m5JA#tpkIVIWFE+^vMa%d=py-x<-Kc9VRlonetK&asW|Fkq;W+#1>zCAfT@JTDHP{Q(`&+|2bBgzu26-gu z`a8kcM=C5}V^dh;C%k8g6Q`4Ojy6%C$R#`sHM=%iQ!(pRFX5XV+BWu|iGK=Cmf%qI zn}0E@tWYjmx?}GQ11_4cEmrX!^b1~rB~36@sXy`K-7hZ~dB58>e!iuJjoo}@qW3~| zz;d%Hl`qw*X($Ejbx+OEub+2txT|~0=KQaGkX8S_+I~l5d^j}mcMIthSKI30@c5tw6d_m? zcUdD7x9YgOd#U_G$3N`ROV!dTs=Up}A_- zE*8ExDVfnaU}yTvIuZM|AtL*5&OEaJutt%=y%q6HZ)yrgDulQ|)vw|c^~SSgdn#YP zQT|nCg}R-1c=l^KEEISDC_aocAv71KORQd&U2;os&NsTgKpv^(DS0-_nt-y!B2S3< z>4$)6%Htae-n~a;oY9qpFK3CSJjX5VwLNixMTT5_Ej3A6;N$^rio8%f`*{a2L-gRl zoy(~j(;H;=_+J#MxGC<=r8LpRBiX;6N!PzM$1HT!V$du~iH=TL+&BH8zoj;3RRbcP zGP36FPF`$dEio!ps#lzts}nf7h|a5B(CYFon|qQk?UrCrV>|%oFvcvr=1_bL@w3Np z|AEVNKQ4cN$~QVVo1L->qdo+OO4d}Q@fRg7bMYwt=yDqV-qE zQ5qhftMI&AFjpS4;_ zbs{H$%wbbpLz7e2=uN#4ZitueTsj+T-uQ&+y1A#JuY7@ialm3>@>N5?XY=6lOc*t0 z^e+#{heZ@@#uVa$UnyM^p>88j3*@=`jwm0;5quS8Q00#V7ILz8jFq`uEf8H3z2*+j^b2&5J3- z58n=gdjHu7nI)~zD4h7oBk#9F_n&gq3t4)~@qFEbt`LKX`C@^kYp#~VhpXbImjrQ* zNDTClu~9ET8ZiPPLxy3TlZ>2x6L=mF0OHpjZ-a`vNkB#X2x?rCBz-1vdY)Syk`0gQ zKZ}!bez$!#s>EidU}*4x<4bzuR0`V>1Ju4dVrii{;Je^{d=2fRj2?GKrZb!o$nP-m~(QI>7$ib_kzYeQDgw8 zc_w)U?sx#Fly~Q+gyU)grk3ng$8{Q#EV4S>>8l2Jw#aWa!c9;T3`hO0_h#6i|JeCJ z$S6UsjJu4Z6nL0(|G9!XnnzzKONuKBaBz3;Uu|@W)>uU7&$%SX2z+% zGrGtPH_OIuq69fokQ|jCzleao6Xo66Mr*8s{ZSw6Jg<6=CJ|oRz#P`J>-|@gTL-nH zDP4sXaAgPWar|2Dr^Twb9*n+*z+*XFuFf}g51L6xW)lV*jLp?c3ET?PX(LydEj$-C zq~eH*I>q{ESAwL(N<^-6MbGA|fWLhU4S&b=@w`x_&==C+Ga0f&Jq@m6sZuvoQrUII zZD5Le1t92Yf(vPNd;YDDtVP4a07WYgdaqQ)(2qhCe1Fi+7@8w?ecCT_bGM~Mmo)W> zrO&8cEzm&9rYx)r;w#{Sy0M#{QT0e+u7e5*f5r?!{@n)at?XZ38^K#cVoE>lvFXGZ6=HfDoP>n$rSh3yJ%MH$f5)!FkIS5*}~m5*b{ z8+xra*5M}tPtt>9WHNYR_4L%gi8tD=q?CJp^xx(Z;3%C`VxuC(1eBCov-Lw~f^rQM58ZHwS8l*wYHJz#)q~SO1lzCx_w%gkxDdQDMT?1Tmc-u~1nb!9z z1ZQW0a==7!WT*~=JbwDp>nlO*=ZFyjR z;v7NLE{d~?8Z5c+gPfv*ZEQkT8C~~ksJn!koXXMo^8t-pW*VbT(kq5&P6n0c9|bjc zjOcgJT{KhfsJwz%H6v^LZeg=}sH@jfo=Nr;C#Gg%0-| z`zyWOMKEMn6G0s{zdHqD4Oxt} zPH#;5HabK)+jY~+U;8i3>HMEy@Jds!ou!iK@f4s(-F~8nyT}PvR#vM@nwf!5W)Y(w z6Za)6osz7sRA1=@$q4ZhA&$gS+Qi8!Wr{Sy!NPpCv*^ByDhXvnc-xEDHcxMT<9?*}xG+k#PM>hb|lIkOgO@^tyPEiT1SxsG4};DyaT*r8?Jkm9*rXQ@l%+WkfTD_xpu zJMu!i1-I|ZV&=?$T0g#8M&_CRLhvc$`&oeGkVPg=-_|RJy+!1f`X89EpX272ns(yre)vtc8!Dl}*?_#|NI6pEFi z-uMx)e>o(G0*ncS>7X2v>qC$Q)Pga!5+Kz1=&E-cf* z-m~749(~J628xNENrzbMT|b^|XoZot3vt1EnTNyY-4&a1G%ly9j`y)eLX>DEZokhy zzRf&~0WIHI;)S@JwqXD)Sg=CRaTF5>=s7w2|Ju3Ft|-s-@8iifhPW-5umuq#+o)hf zMMOoVC1P(_qF4|T8^i(%2vUZL8_PyiRAN_Vi-jmnMMT<66hQ?6QHmolqawWwZKzZJ zyny>1+~23ygKMqxv(9y{vmC!8d!e$^^s*u-{?eE2M??jZmJRK1Har$zDp}pWy2faX zR3vB*_h~LWJ8+`Q^tIycZhI~r?s~OD-uvA8Skmb)v@bgAmqqR#U9$W{YO9gAV!7(F zr^0!Vj-g!LXFn-n>Urzy3HEn4OV-DyPYB%L@Gh)Qeo^D6eO0fBo44zhk$kOGT~;mb z+hM5)k`*oLTOxhxpY|fSx~<39R#P24%gyK~yOjQD_QAH9;T}P4Bg<1CS(jGT?Y2DkvtQB(d#@jbH6Me& zQ?9*|6@9+l@YQM6)#cxP=x`8vAMM{0n7nXE zHc~#L@|$53Yh}MD*bEnU#z@U{pRN1ht2Y0xTN%G>Yfa28J|;5~D?Kg^OOSaz?#*$l ztcZx*qE~tF*Agc?W7oMeHw_%LFL`cVq27%fF7F2k)SI`c)`sM2=c@)sb+4L1JEL-+I&`kpXp` ztG!ReX`{#4NB{Ou&8@CzZD@kb)-`VT>-&~!+Zv;ShhE!U!vpDI(pQcMT>BQ}?c6=7TcdABi ztodxd#roW#;249}oTd=ZgC6ZqrW`Q)D)4t3acg0xl_u**m&CI7L!VB;)bpjKId3dd zokA}p`?+YIwe1!^6vuyFy-*RrfuCg7zD+kjI5)T{ zByZ;CI4nJTr>x*x``DcNU#B%Ip6|RRer?o|7B_uQTVcVQZ3ZR@vUSytq1|!f=+aE@ zE3G$uPT$NO*DSiLJLwDONk>;K*48-sZkiUkrR$Jhm9@gKX@b{0b@io2C&v+v@)Mg}J-HTpT5D|}`wj#@Xt zdSs5dqE_5-JRiBXA(9{y9$nq2f)XcN3vdHk-DjBfX zGP-(pmzlAfu;s`#o#>p=>3)s!OnFb-6_LxSf~3UCL*B(ciunTh!QxedGtmljNrn1Z z(qpswnV%jtR{hpja7v?IG->mF)0%a~Cp`_d`AZg?j=grXWQpMH;-TNR)m1lY1AC)| z)%96M{^N#fTB|-e&&=p)X^9cNm(0*Nn0)^$r`zpTHZud)93CgV|9IH`Yt@r3E!}^1 zXKPreo-isEaeKjPsbvj zx~w)CZEdA@6spFN^ilA+yN=~p39j#$)dH1hU`_4YOb%iaI*_p;R{ z3a2SE3T)@TTBHAIw~1fcd`(i=HIcpS{rAch?e}N*Ir;>vB}P34P7i)tW)?Rur)hce z@lU0tE7h*1LXCR&q5$8J%^80J-B({|T=n_YaQ#t3Xr{ z)S*qcO`c#k(0+THw^z5vkO!hPpW5|_sm^9)dAEZ7fB#r&urng+X7J)w=~w*A8^ZNI zL^gb$GSaHI)wQSXn1R_kBWd1x+yCi@x3xrg7H9+o^1!O1Uq|??3(6NMYaFNA$V2yz zH%@=Avi0*!Z+KKw^Cm#m8MrmE)yl5XR{qj=vF)$wBvp~NJg{A1*n6e@x3ifg?msBc zT#2#w?}-zoclVx5mxeapFbEs$P`F=A8qSZl@u(lcj`ZTmqn|8iI%ETQ&!vA%-t1| z@qR|sD9@T!t-rrAa7=1n{T;!R4-I|iZ)>XSq(d%Bf`XdMnuA;NGp_V4sjmncl&5l& zZ|?qkp4)|@JXzAa$L5Brv`p>CvIfuRuf4i7Ma9X%9p#R8vPkPw8?7E0HQf^h9Nev5 zS8&c;9+Q3Ecu{|{ysJ4Pp`z@yD(tAy@MG#T|K9KS-G|lR3R`x&X{6Q?_0iV6uTL8- z&}^#-x089e6<7UiXE<^MwHc*~y(gZR^y#b*u;!QArxU9ewZ@kj|Z13qm=G}P4@O0Q{%@ek%vV49|wP0`pm#)jqu5~ zk2n8x(0|ygsV#8UJ}Ypw{$6>|S~sBTx6AKWojQJc!NEA!bT9WBQF_zn@F7h{{#CpF zTVZqW8`o5?#);YE#SyjJR~Zj82{rj-y4vVvQdD}Ywx^A$roT1$$O9uyw#6rYn;c7EQv{?Q*nu@!yuqpklk zv43o*&JNA9_xfXfbPgoW#RlYVa1D_yC&GdMba=<&%>H>PX+jGZ;71f`MyjVvYh z?yQP0th#PA)fw9fo89!CN-Y|%&NUI5_)b0ivaCP-8gfV2emN&%d{pHReM!|XwUtlJ zC7#~uU6M5YufMx#YM?qPU+I*cx!L%YUDwC#kBiS&xW;d(*Y-*R`s$@|5kCu-?rL3s zMi@Is>Ay|)%How9n)?amPn#h9?vr@h*z&!2Z>1Lh!?xg2WeB zUf7k?t9#!xURWX1oAFE&8rF~;w&$01;;!oQkR-LF@4Te%KQ9*rULSMg&&bAP?OR7# zkRsdp-+Sg|y1vRuC<|!NRRk&Kt>2loC#G5Cy17qop02vz*)jM1&qIa##_2!4ctYa& z*;Di3MY8eTJtD{FD3cCRlN{4a2-r=YLMTHB(! zFl?R0sqhY6b(Yf7be^8H-M=+3+I~*md4q^0Cn`gKuDMX^l%285M%EO6GeMNrsq;wU zCp>V^T$!1+X@;ic{e5lgo0x)Oo3`AGujvt`2Q?pXxT5_a_7p$5??3g<*WdV$&U_ov zDRQyVjw_uiKPC03o_o@5sl?Rw?B3wt)!Ej^JkpbbwYSdYEtB5M-kZ-Ow^ZG za^Lm$$X;c2=<`(XMHceIUnK`-USU)k|YC9fgmT z@2riS3c4J>R{nT5QzYA<-JaNfw|9MRxGJR7wZ7=}^G|sXzSw77eeG;|T2iNbVpr#x zV^fw@8I-KIFKoK?TAg*$Qu6qI=dF{Que;UxzS2Ca4>LA?6}!#dGDVUa{3+ULn6~+T z_)|}-Z5lWIe8B^G!(X{y4N`e8t8poNr%JuE+jUNG--L6T$ReGlP15dLB_Hh*y;=>d zbY0DlyL1@WzN&CF3@U!slyEJ*v$r=pWmSJV?Vzx_e@W2}!5yT^}YquWk=1iQBMe z^4*T|rE0O?LY?A$9<#@kJk9k`^p{P_&NVfyo3Q!9l1n9HW0#pOn0uZ&X$VnLFrcQ8J6B#4_s&l2YSAMf6X{P@}VXb77 z>Wp7ikF_&mAp24qe)2X@Vp+H8Hxm@OpuMoYt+USX7?g{fjJR-OjX& z4Mmy=*#o`D`-&V(OD3tZ6`l88hw3QzNWNRY@$b1uBZ37*G2sEqI_qC<+!(2qoGVbr zU3o6v+FgBU?tfa(JSo>Ec_~w(k_KM+T+x&%w^u3^S5($bDuvfJKC%gw<ectz#-sZ3tw)KrEEzWS zNNdWpvEyr{%6A9tX4%_aRBJt4)OGoxF$;Eg&1uN0e!bVqD(9_PYw-i+z7lQxeb1ow z*JXauI_Ki{$Gj5WmuT!gG%X3fr7O3Vf4w^RS9P&g(4(}U(c7f+CgYz^=N|2_W35%g3_+d?dTkQ=U+@XiQ#B__p%-M?M9u5l<3yzR$@vORPzV*^_Qk zc5q@x|NULcsxgyv=S}&dr0`7R#GT1ogSS++Ms+<2s#9mR9cw?L+iB4Mi&I;Dt*b-+ zHb2o}l^WCkS~I@Ff5ncXM)I3rxuNvwSFj-_LS}yA!SNJfk!f%$xh;Jfu(zH*i%~eX7 z)HLi)#K`1%XKQk+d#3p>*wL=|Uh`COM`F5q;zeyr&p2Ufdt3Bz>9Ep{y*+6<&+nZb zw$7|>{IeS)OXro0*^)mw$8$)@y=c2{l#^~(4iDe@$fC#dd{3Z`*@h!Nh235wuQ{63 z{CVv9dtGI4tkV~}Pi0k(^z83B>G>?XeMkGk$tC~TIp^pavE%2&zpvMOdF`_}QShU# z!-3&<1Ox*X|P^+vd*vm>c4BKNnBUo4bjuO5eZB}hH!YH*wzdY$(Q2JF5y~ezUF9fNLChol(U!@f%>DzCbJbr>Sc8!1R z#h#|acKWxp!Y<>mH@|P6Y!y2B%ffFD@2mEo66$DQKk0U2fw2D1r@v=OYn*1=Yv&5y z&P+AkDH_q9bas7V|F+>sE_~ z4ZM2DE_UqF{{`6n_v4U`7?Y(RB0ePrxd;n>GTtz5YI&F zuQ&Z-dGZGb*E!~*>u)Sy>wK+EoSI_%v}$C*!ZKm<^!jIq)t$c$Sr*y4(f#_C0|k>C zlM5EO-P$7cxx4$;KtW}@#bmbwt$Tc`e6y!*dSM>s=vXJM&AE0W#A=#N`IGLcFMMka z|CliCfyIYlpPHySb7~qp%B}|NJH2Xf&-U~De@-5n zWVvYUtNudS+~Je$$K@5))sK$-XKSjNMdM(%xJ za<}+~S8jW!jlH=@GP+W_y;trdTa?+;*!XPE4+8>@)ok0aQ-A-$!2aSu^G)L&>K-0k z;%j#_vAiejp{4$=ij&fb(@z9CpTA}}#rD3a??z8-#i+gsdQYuB1-d>?J8{Q!?zR!r-4oq) z7LU4+`_6XGnZ#1x%R}$4${pW$>7>ICdh?=enwRKUI3M5dI?}IUdC~>(k=SKPCo*UE zcP3r_P1e7}I-gS99g_3s*BBP&T}+s8#-i^`-=@(kgH7A#e4J<4IqzNAo&MV8ZBtXH zzAiX>ZUn?ySSpHG9sq}Qo z(;u&{sL9w-(qAtw*R>sx-#qaDi-x`o5&;AdKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** h5I_I{1Q0*~0R#|0009ILKmY**5I_I{1pXfa{|9v$6)6A! literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/checkbox_checked_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/checkbox_checked_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..b7f5acf93bafadb3f426fa7a95941342cc971321 GIT binary patch literal 1584 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_1.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_1.webp new file mode 100644 index 0000000000000000000000000000000000000000..6ce46b7cd9ac6d21b19ad5824e653c6c2208f0ad GIT binary patch literal 1140 zcmWIYbaTsLVPFV%bqWXzu!!JdU|=u+Vk0o}baoCn!3g9sFrEOBEI_H;ypp0IcPE92 z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG% zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI zw=ghlJC6`Ugh@eSQ6ktlU~DijrKK@2d|J-Hz#GZHAbf#=fh!s;2PAN~O#vt+19VqD z5T-NaFr+dlFnBWLF(fnS0a-@CNHt_I1IDmVEfWKSzEJ~@K>DHuxzfk}cy6~=cvk;U za$D|W3pT5#zppDYvve;IWH1rq-ofaYY{-ytK;Z`?1OEcS0}NaY>;g+253UXk7m{^@DU zYnwZuK;mIYwncT^rkZ)Y(JMD7DnS6(+K9?uSwIIqd%Z=b_&V1Yvt_&wZfrQ~tG}S; zxVT0w!?pL_Z^ek1IN*{BPz--E8<=v$=PN*4hpBSM6_( zP3K+Sb@a-IMN$=k#eEUC+LxX?b&Et=bHJFlwRg}^kXxxs1+4wzpv(~14iTN>4S)n?9ySyj)N zR-e4$A8|JJ((+St?HFG_&kj0!Tv@2|`Rd8*=PQ^0(qWBxlTcrL?8ThQyUXN1%wyNu VboSz()RUi5?XuKDZY*P9004Upd)5E| literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_2.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/compound_normal_ic_2.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb4f7c2e1c42d98c354582b7760f8862184ad5f1 GIT binary patch literal 1230 zcmWIYbaOk#!oU#j>J$(bU=hK^z`$St#71D`>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b28>~!>r4y``bG^r0{M#<d5NA$a3KVKPzJigUFQRj7v(4 z4~%aA;gsOG#hR1Z`?lhSEz^NXDz~?!&VGFpXx25;`zuZVzc1(iKG(tJzvPbGB^g_M z-1lzF4+w>TtBbmh{hYgb`2^7_tJ^d4*JuPmCFIxMdieLb2?N7~x_k2Lc&};Q|54hr zga1$7l;3iiI?{hwHhsKs^Vyvn3wZj@=FV$<6#1Zd!I}&4dAnJS`fnTGRRV!awwwRX zV9dK+v-Dg%_dcz8j${&V;5{@nLZ{{4HeaPytbngu_l-~BJX z@P*<2S=MhFdpG?kIm0&l&yihPTixZ4q`C4exhe7GX36d zkE5;<*Fv`bntrCKW8szw50`tDTAWSp-}s_Z#dMA9@09Jg|F)Z-+rIgYc<3I1`GSVi z(jM&zFxj_dvJxL(wiJ!L!3zva=9 zd|hWYJ62in&-om^cGYVEvy(ZmEsb=3HzYg%sr++(e%Y*d?KgU62EWnCU7g31buhEj zxiG5k!NHzKe@u3~h;kP?^CGH!^)~-mLH_)`ac45W_%QU&JDK@q((-lv&*vQ2n6F+i zr|j)@JgD8}CgmHl6-e&hNy^cS~#K%ifplvNX5S zXkJ`AdwJRWFZaS<9bag9;K}WUQ`t6`nku{J%h`Q+o3TV~N2SiXoLJjkb-a-aufJYA Mwe3{Wd+T5Z04>Y7g#Z8m literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/decoration_modify_background.png b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/decoration_modify_background.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a0a8eb300af334058a6c3b407ac8999c3b6abb GIT binary patch literal 2125 zcmZ`*X*AReAO8QxOf!@+W+b~1Whr5BMYgdF*S@b24cTv8d#^t+uHnjzB@;1MQ#X>a z=8|D9y|%{Kg~B8>WvNK6n{;)~`{6z3J@1F#^PKaX^Lsu#=lSsDINDnY3rPwA03b}T z#ycNy!1qHPI>5!!1pNa7W1X$cfI6=9TL3^I33yZ2ME`Za5RRAy)~L_Fe&qBG#t?c1e1_LoZ~1#` z>_-DkuoUD40%3rkll8oNCP5t>7SLyeHhfA^ zffK3HzTcHxpw_9`^KTXgmP@Gf|E^@EDO+T?_bw2QFZ$@4vT0rl^lq6V)C0g<`y2tT zgBcPEKLt~TrZ~2u;1Is4+dBsmqT{xxcoXf>+In{dIxKXkgW-qrMA4^Q7}4YwpjM)7 zCJoq=_@Q-XJWi-1YSQ9GIv~R{g7aE$2d#YrA_RCa0Evy*Xp7jm1FY~<>QzO=n1vnN zpfu7Xn{qE(1$5p|27;^y6WTeNO&Xx#p@6RPJFKHTd8z^@5`K<{qYdx8Y_v%ftq0hz zlomo6&9q++#rWkHz6qe7E1rvU;OI56zz$Tv4XxD_QB867zEam|dENs~*PcAovdUSt z+bq+P+Nf?LK0XZ5Xl~KImLwI>pi|acP4zbrAm_ikUjlz zu^unx08_fey*l?Qw*6vXPwch{Fbsso5$BQYS}mtTLrN$4)#4NYVR1d^qpNlGZq^Tn0Nd5yhXf7hsJD}*5XRA@|hpu2Z)Y2 zUa2mR=H)?6e+7d%KnT42->ta_zG0gGt=Ie^0bK*!uQ_(k1rPgvYHoyt?!MSej6%ZV zR*YHs8L%y7pzrug#yLP=04g_-HBYV(=8dU#vjjsEONqpXnJ;VZ#_H;oE#h2m3?34);i?=zoa=@%lSj)z<{5Xb;OiqqI={`%lvo8i<5R6g9!({U1o>+cX$53SRFqv&<4K=p>Uy zygE~#$}r2WHL7)a+V3XU_0L{copWisY8+fL7WSrN9$FHZ2ieJ2{(Qa{FHa}Wt8s7# zd8uOllbXt5Yq-85PyM2oi2_>!4EeYo40aK%+6}%=IQCv2MS6Phv2?d~NjJTZ%&HI- z%DM?#iTbSkUK#CZ3s&44o51|AT}XJB+rHexDZ*lh}4d zs@SQw5LiYYQQq|eL4y_6IhD1P5bC9pnHYy5oc3hDOV-n667a*~^09)Zd!ve>-tK;3 zuH4KrLdCcXy~Il|abr^*mvF}6aDj93)@TqTsw9s#5SSJTiYPdpwQUU~el?dhKNDSw z{j5wEXiflAJ+>rkwD;5hloP>}R2><(Dc$Y7ls2tu%bjjj{jzRm;`a5{msL@ai&cgl zAWA>i;dlWm#**!o+6dtxZ5Vg45b=My`9CQS{Fg$6ZEn=&y?XQXqJc^sO=_v!|iXE~SACVuSJ!P(hsYX6nsp^{O(o;h{QF?Y! zZSObKTJG)X)y+P7YnWR{If5u$lM_y!nkxiO5pSv_nP)#H-VabO)~ZXj%4&fR;;9Z( z3V}o`(*41?$ks1LP@vL6&8Xk2!dqF_K1Vu0HOog8b|XFP%+YHeKm?kV%f(DyOvMs@ zR`Vm4(q?NOHf>)Od+uS`X|s~%ZqhB&6QGUwQ^9z|7%@lU38{}l zjujW4ls2ejboboNrd6*rSv$r=jyeXSjp8Lq}qwV8&&thK-2aD5nj;Ce}hK^MbSL!q*!tmbsUw z>h1&)lf~S-=SCbA?Cfg#D6W+^qJ*_CC_iyf$&wXFHXT{r38fBhtaT#bY9p2T-iZ(L zUc;!#lM#cO+AU;fJK5_O)bpG=$h?B>X$n#2CZkj3wif5dmaOJuSCB));rBX?8T<(CV)1!9D;87WVi$vw)0$0O;Gs2LJ#7 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/episodes_post.png b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/episodes_post.png new file mode 100644 index 0000000000000000000000000000000000000000..3d957ecb710a9e049ba84b581f9fdcb46be4eca9 GIT binary patch literal 1569 zcmbW1do-J89LJL&ZflexXK2%PE5!(-YN|})GO8}oB2%JFN`h#M#4V+0XgRHxmLld> zEG@FAAR^gx?a@(nNh%{6J*yH#R+nhh?9E?0>t8$j<9(j@e4pR*e!jo&^PIOhD8Ofr zj)@Kk1lr^KttSSUsj5c{3XHEmZ!Q8R@Fk273e^7GY!L*~nD+JbI8BLKsd0~|pD}!L zS@W^G;h4v@)Xqc3!F${CH%H?cwmN;z;b%P^o3F>iy$Y^q8F&UI(q8`n(`kSe#{3)} z*=IQ8(xqjCNxMnVY#tZJMwNV)aBG#Ls98H~O!wdaJVUla-|pur=9`M`^N?hoK1F>> zBT++WarZrV%eWF6a8LB6DGJNs;M8VxUDaG+Gi8SE$CkuQ?C7i}es~#$A&Jr%#%YQX zeipx*kR%~V4%)@x2YD~oe-o3Svk-dq3-1B&W~Hc@urr=tcYGbqzbY+_swW#xG4BKp zaB#ZWP*N364F zOit? zBMOfQotJfhx1Xs`7r24w$5eiIn&Y2*pVozMKVYT=Zl#g$4(~05|@3kvUowV zdlaLI_@tb^m3txcHN0|OM!e8Fu@9jod(mLw7F|Q9ocJ?usvsh@HzK+=2r*n1gs=-} zg-g|#+H9>2RF1RjS}7`rkFJku)q89{b7)d`V@|HM@##`QX1&|(y4fgTVRdA9JX0)H zJD>w>IOsHItSYAYu$3igC~i>QP#~!z2sx?1d$X1OvAMwOUG=tLPXJ=t_*H|yT1_qu zC_@yT>hS`!!MQPzMQkllb^hJNv^BuvRsqUtCDi%)iAm(CJKqz^i-6U)==9P&qpcC}e*%vpp$(m`Pie`;`Q28%D+K6D)=P2dIgpys0%( z<#u|a0UR*P$k0$RktGx1mO!5f(_2i9dx9H};uG=!SDG>VlJx;_3dNBz8g2pbsy?i5 zs&XOW0p<98EEm6V*pdKO6>WCKht?_lSjso9lL+r4{=#<{RbF~k_zke$Q9jW1-s+U= zz*lL5jo6$gE&y)yj}~?q;3dleP-g8%q(>P@-(Zd^5O#|fOW7ZGPe2S^ZOJPw#1hI3 z0LY!1lJ>C&ZjySavx!9g|Jch^QE*#^lsUA(>d~v=bhdGrU~!w0gTPfZ8}E;lrS=ks zh89eAQf(#m|H@$Av{3oc;p$5rgxWwH=I&fB(Cn+~s^*P8fu^e=VD+2CUu;x20d^z# z;|o@jypi#A{S^bA)yj*DxYZVX2(<$t!zx9Sk8OA{U@`)BZo;Y~OJ^zu|JF+Q&`k0{ zdnSn41}jZ)n4S*CVWhIBSJ6lGiSVys%XX}_6&vfY&;uXzqtE|(-^G#c$U?eEPx^^> zj3lK7%=EH+etA_SfrPEizpS&>6cbWv!UHKPMWoV=xH#DW*g3-7IV#?HITF9QxHaB= z?U}`2=F!j|UeaQ!Uu9P#qHQ~POLx_l5K8!*~3>v=@T zw_X^o6ruM;#WwYGaC&ACbMB42L~^xgwW5x_E_n;P>>#)8*CWhP|A^? zWK>-_OrClv1UEP4F+EI`5>0WDRQV+uFIgt!Xih;NAb1r<*0zxIxr2NfU$IL=?~>Ru z>i!f{`Mc!<2zA-XY~kF?7gXqgnj3V$iKVN}HHz2;FO6nD6Q1a_1OE9SU#|eqc2xA0 FzX41-6N&%; literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_off_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_off_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..02bc386f79bccfc39111a879a2afc00855048a52 GIT binary patch literal 2080 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 Yd#Wt8+Ce%-&MP;Zn%h3Lt+@yM2TYfHe*gdg literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_on_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_explore_on_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..ad7a801edbe79e250783c3e6f86eb3606eac7d0d GIT binary patch literal 2980 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_home_on_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_home_on_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..0737d0fce9413263444ef44fab89b9849e0be910 GIT binary patch literal 2932 zcmeH}YdqB38pr=GyFw!Dj$LlmWDudEXk0dhkrczYOiYrHkeNZzm^wmv?{k|9aM1Z0l|QagEc9Dtl;~dH8%O;cZO|pIPMw_ z)STO7jFY1!$d^FY@cj#4{0nT?LI-y2=KcN97+Hda0HLX zVsroC9JJs9064x30Ak5MVi&Ukpe_ag6bFCAAin{C%pCxrbp43^IFoB$7_V=?69>KM z<;wuDPznIjZU7+v9snd!-*TY)54EX*DJ8J3V6gcDR{H~)0 z4cp-*06^FJ_norRp?eF2BF2=!a!N*HXETe%G6^GpIem*tHF>S<*+P;`u@uo>R}H@& zNg;g7#m;ryog5sbzz{2Z$S=bz7V%b31;(#5Cu5YGqZ%GwrjcI~empK;CA@At((iO? zkxgpftDLaatZbgjoY2fmB`Nzxh@zGTAZq?B@laOa5ar)}o)TCXq^yw&(Ug`(-H(|X zq)p1pg4_AO{cle|=L>fxuCF4knDbx@3lnJnyshkYS8BPCc#KJHKdT!h>}2or%HZ(| z+3GxOB~r`dy+&$Dgt;7DELGsa;LKI>DEzs9ocHL@BFMdJxEa1?sTt@djnGNmb*HGr zwul&(z)gVhE-W*P^VWIIbuPGN?o!;*GeZo$gYkB^PcCP05rc+MJ(IEz(?-w!Ml<~Nh234vmB>+1; zg+?d2MhxS6bfXQ_3Wn~EZ*hK>nbxh#(Tdf{l!gW{>0 z7z;hC1Mr762-FG>Rc*FAw}&u77>(W%atS^qHAl$j9>3p=))A9u)wJXKPhn@;n~I7*#P@V54~X8005c?bo?x}-EzFG2DW z>|nzq!@b8flYUZwD+Pwx7*+A!qcc3$CyGg@{*YU!h!Z?zy2ihS{}b+%1lfgvYrVx_ z7Q2NFQH06*G%7*1deRy4jQ535@veb5?qw(G?GQ6;&>mZzv=)599v?(oi|>DfVd`2i zHKTIXu zZ>r}hQz31^HK)hXsok`GZWS|)pfX)rl5#^T%|eDfJJeGOoJAlh;@a;>kPveD;M252 z5AsHgjDvPH3YJ3fRqjwRh=X(?y&yuni+Kg!(Xc`H?b`E_*ZpB4>*lBIMVK-6K)qN& zf_Om!By;j~POlzzKc4=M8 zAzIg1FT%@9i$#ucG{_!)hwL%$eFW{}Emd^wz;40tLthhCSvC258x2jr$D)v5wFj*K z2ps-UX&Tv$<23VY1-rV4)ie5OsYNLIw2eWtJq5wYGwFCf|6x`&QeR*iW~Nh!WLWt4 zrE2UKMUHx3;U6)!o2E+McFAkez+XD#@~aI^svD2v# zU)k+y7t(`;4IsdJsyQVc2G-_cnbAFlN(ukt2MGCX{iPu^}LOSX9%b$8E5iUDtV`P#4GQ=AwF0k*ZO+jUxcekf6To)l6T5;A16!yBEwL>Jq3+%tv%sKYD$O z64rJYv)*~bMK_jRmYB(p> z?)iirmLT6rrXtyxJ_-HeX`gq=2j>Wrc`4G}?ZTaM^!>7Ai3xnuT%s5UDdtL;Q89ah zeu!OeO(&Cd=)zV*Bs4`XS$v5s#&NN96)JzI^B7a3%ewmRqs4a1WoRp!FOks{;@&3| zMJ5ZEte`K>P+xDWnhy>xNL4hhnAQGeJU)3htkbB*Dlzepe71s<%&ohS34HVU6H@Nh zF%r(Ys8;ITs@rJDZ;87QlQ&fL+nmSVmPyK!Jt;vU8}Iu2qo%shDmUincc>wUwAn-%+K8a`fNz@;wI=on)=oiQb3mNzHVGQa=-S>!Ge8f zl_E>`kgZ)q20t-O9%Hh-TJL_>`oU`G+%xGmn({O`{k#f1G3n zTmF;tXA~DI8J^MUL$0+Y$8;Hv)7(dt$ZyA*In$-Hw8ljDujya@L^N4#pjVT?ht0nL D<_fm% literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_off_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_off_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..b69061d0142766f85ab0797d1535528c86355687 GIT binary patch literal 2236 zcmb_aX;_n27QTRw6s1s$itJ8}Lu=VY1F}k`0#SDJv4j}FfT)lJ2?1ds(m`!0E=&{< z!>*t#LD`}tVR2}I2qY?mpkY&y01~z+2qe%iI`h~cPJhik=broCbKd9NbI-lLC>NKy zF97gAc);7wdtbl?0DuKNT|X$w+1a~83El#w4uxF@hX};j7+==|+XDhI+f_$^5-cA^ zD4rbs5q;LetcAXh+#b`a17el8OC8S{x;%I_}HH?J~~FhzX)^e2~iZqS&E^!oq9MCIs&h7pMX9f17Em3 z2Nd^*_wXPU1F-KM04f=ue8+MCxPKmiZO=dX5QP9}o&$i%|K$7BljzWx&=2X>!B+YB zaRBCT1Mp=a09ua$*bwv~2Als;+jcml57$M4B?3f&aIhVq01@DU8H_C9N8Jsq;1_oP zeLVo?t}UCs@>i{3O8OpQj1#V0-k21k?4bTOL|JA0#IVCaSkI3wzaj#ezDO}=vH$3Z ziq`nw9;d3Q7vfij%;P;<|01U6CfaJf!u>m80UKel>%*W? zrCH}}ouJIHNYhDxx}&5C3^UH{;`Sc4q@*Cq57CrVfC|DU1@_Re5Rwf+!0GE#C^UpZ z*Z`-@(cToVnr2N!5?!avbxx*fh+dj^+0LS@-_}SiihSU#IXDHtcJAsvAR~$5+-OV! zUc{8-Y!fjFuzHCGcQXm>?g3$Qv0d%1;$rbjuTAp!5i8m^^;r{^XaU*lzu)Npv9|20 za9^D1=8SI5etVd9Yj|gniH$TiNZTR8iH6A2UY}b#{#_Ri_8V(GS6R+& z?MlJb;En>g9KTlGfakdwaq0xDs?NwQ&hr=Q%m@q4?U%anQsKj#wd#xZRnPjzL`l_t z2D$Z39o9kCdeQ~Ys`6Aa^fYqv0rCA_oq7n_<#&_zN>{s*iW+X%_4{qo)4K`sftRha zd*m&T^7p@PHN9~q8P|D*E&N5Ok(YS)Nod{lP7)#kpJ(NHpZEB}l8iqAyli8u&q=5ApOml` zSu^yom-p~vl83C8qh}El&GLbxKQKKUAISfy<+)EXCZrMAK1Ch{sQJazjRGF%o5-xA zKHvmhlU~)cQzN?bX10!x#~T|v3v-HwSc4VZbGPHBaixY{m#39;?S~vj*Dt!e;RdVv zYQhTqsE*9?%Q%$P8$`cJLPzH~4YT15Pa$Td>t(mr){FW_@7(O-)=}>gmvgcCPCD^({^ZKx99#_{FixOq%U$c?I5zm!Yr5+cs^$Nf&G2A9X ziP79^1ABuEexNpHrg=>@t=xRolSs}_JSn(#xZGP~*_3aJjmRMOH#15I-BZm82Ic1q zI!UTfQRUL?F?dot=fFV<&ZR4E>SGY+M6FvKLtr;*IPg zYFSd*`Iuu4-}N(aMTzEpBhQ)nn~)X6C2Pyq&mcP1Uy{kGPGSs9&EBQqR8723_iAml zDfXWiyf{MUU^??}UJYK+=gjFNtI+A9w)TakJvxozN=n1RnaBgK;>2c?&YI8Y@JtGQ z_PLqE^*vS87qci74e=jcyedMqnqwO~u{Fp2v19K=!K)Qwe=2ou;Z=4{*}rs7`)oe= O8LgZ@Ted$FfIk4(_q(M4 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_on_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_me_on_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..0f0d9a750cbe761608fe7154c3f3ad7e2582616e GIT binary patch literal 2834 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_my_list_on_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_my_list_on_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..3869990dae5e9421bc74771024d8f4e225cb4326 GIT binary patch literal 2720 zcmeH^XIPWT7RO&yt{qf#MbxDS6hk12G-)9cz$ls!Kw5-^&q-YBZ3)$-iWGxMAVA2z=yM+w-?%(*#22+Crf5w5?EV)f1O#p9<3Y_C^3{-yvo_jBb-O(La9D8O2HFvT0${-BL2T3y zuEFM?4FGz40N8y0d(52y0MDZUK$i18rt%m7r0)PgRp^fd>%|8O@2Fm(jHmp|A&fvbQApa56_egFZ`1PKm)sy1*M{9$wf zSOpCAYVV%iA&S{zi5gB7G&yy(=;+|kkYW(^?%;)2gr$(QUC;kXlc4I|R1Kn1^TZ1e z3m?um99PMv_zsjAai;j;_^VIloap3`Dl*?{rOYT(9NmBZ@POdV!HM6ia0BfQp9VFW z(NI$KgN&E)y|GFhj-k?qmqH`)Oy_4E z0c~;U&6%905+p({iv49M8fEhE#+0sf-48^I8mAhxJCpxNx+4pl^f680b$)2_O0Izy zoHJh>F`hDU?XmrW=wtouz{I1vH?lHj<9p%QW7&;+m{?e2?~`%PjGD>9b@9QaaHHs| zkw>bmE8<_OG1(a1KU^Tl;^o{aSY(}GRQAK%T#v0gUNen`F5KDYGN{ z-Cpatb5-xQy;MQ$JlRfX&*&anx#G9F^i+O%x|bSlC!Z-~kjxY$ej)eh!`4FT@JsfG zZqB9$r`|F~V`sJbv4=}mhd%6tojdUv9b#q^Y3?g8uIUQH4+-afA$-c5GPh%%GmX`X z!Aohv#6M;FQ~mO~Qg1yHkfpLB`sb)?$Kw;#%Jl5Zm3SHP3pD#PqVs8YjbDysn5_f| zx>(jMTOQD~e=Q_f7&_$#>9il9E}3vsjy9qiQ|?V`tESQC_3QC??rf>ik1OL3V9{R2 zWNTt!k#~4Zv$$=%d2)o%!#$CTZa>RxFd)0Gc6;*YMQio9B_77l@!@RWDMq?fH>#t1 zw*KP#`^l>d%lw_shp!p$nx4qdD40%Cl3^=L>bS(Y)=e-b;0f@d#r4~1LD+09h7a8_ zB&Xb3ISD71y~)!37W1_SMj16!wI;+vj2GF^Qk({gm4b+YC?c^046$&6F^6$V803-d{jDb3P(N>Q<=uEo6FR&a6H_z9HRy;CjL#GhCl&LL_ zf|M3(I%h^eK;nvnmiMvL&cWhch4a;Y8uT8yElIIvIW2_@(>c`OVs~|uc5Sa$L9wLl zmd!KnVOjn9JyMk|Z0iv1d(%nTo78a-gRH1YZA0AxRyZp-x$e3(9og>vA!*oB$M7zZ z1-IIF|DM(bi`luDitC)|DRv~u{+$tzRGoT*MnLlDSm z*$Z`#JLkz1SwjG1C%~ImN(mu7Ux`@?f<%{#-X+WTRsDQdEm_?5r-?C9GTa9xwc@xgy=me)m|7)^FgRW(Bc7?o)nw#7VNU z#Z`#x%a?4Asdm@M$Hgbsa^ooJYmPtX(Q46Vx@=Eb?Sll3QaiS11cYN1;k>kPXWg#I zC^1}wf=K4L8lFn{2p5V+hw$sTqFjxfW(`K0Z(13lW;A!jV@YK|_%_gn7zvS)YkFg; zpZWnITB`r@uXFMwen^|w)C$*mCeEZW%()cW+ORI3)RoUFQ)y)6OvFHhlBlc*e%zYG zZtnds`T87Bmx4-->yC-19q2PQ|L~QM7)#MrVc7LZ!(1TT{lOS{(SXwLcpOju#6pkO3 z7wvprE3_Ru;v$=xOX0Ck`S!%R`K0EM2tmAV(}dI$2jZh7drx^PpgkZSW|yrm^HM!> zPefz4uftpVC{OwQgwDE5U2Ffa#RPk?U&FRguO95BGef6Y;5GdpKwn)R5ljZ_WnSrt#sr{#7wCo G0Q?Cdq%_e0 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_off_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_off_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..1cc996d17e52598b58d4013d4e9bdff0864cc569 GIT binary patch literal 1828 zcmcJMc~H|w6vr2hMnqaWSP>0^hzV#FgpM4d5vWio1PUk!5{__4AqnIFxuHeVDR^*H zOi4KEAUX;uQUU=H9UK7(A*e*IfJz|BVFZL9H{IZLbgb=veY@}b`|Nvfe|xz(*x6yw z0C*m?aXs#8?zJ8OU<}=Ur90T#x;Cl6Ay8>jDhj5^6b8-B-bUB!gtspG8Bl?3#R5q5 z$anNfg;mp%ceRiAezM}fgQ`KnbP_Ci16`j67l(V=1bI{FJ2p^q;5)WbattGq0c%{9 zO!IKFg&YLgAoK$c{D4W3G-Z7Ttg#|TFqLa5O?kQv!IWd}@VgE=2GD^UydE3n`QaEE z^>+ZwrvO-e@qH|i4M5cy0Je0$kLecz@Oc^l{I>V8_jeK*Knqy;9SZ8IkPrYSN&rwl z0f2@Wfb~8rIVk_KH(i**zEu+YEYvE`5gQrj1m#wR=B;PnLsX5#DO&UeZ!s9`qGS^bS zoNU(H%|Es$+_wSFs>;CZCW*DwU0H+u%k@1`JqLc|Y~o65<9)R`oykevi3yCEx$dE{ z(gCE3x4f**<9%0ZvAD41r0>)$fAH$ZD3=U##2pqzxD?t%p~ex5 zSPmyeqbLW364Ui^UL=}hEExps=Nlx)>P6iQ>G(_PiC zaW;k=p=yrCDFYk|h2k7hHP`wry9gymS*qZ~a6BJVq`Ge1O(OBWcldT4&j;6%W4opo z>z;U@5+D*DugF=USWWKXJNJkxwc9%R5Xp2=CqdLB& z`)A*_UqILCoH8lK(A|N zNRS?9MUw|@?=RoRtvBQ;9yk8cFi1u02I_7gFKxTzXJo?!kuTmw#5R3qA0voKytUM~ zxb}Xa$f3Dv{(Nekze0^tGkD2|A{cCzy}EZ~^8D#x_7%+ySOGq^96f$jZJKDDK;|Hn zEMk9RT$Axtrfu%9wN8Zfs852tRp$Xi)~E%TjT7a$Q&aA%x8SXAqQg=ucuvIIFW)|P z!7oDT3SJP8(HxDQA2q^yinN^m9G#B19ZA5&CtvQ+qzK1a)@I+VHudA0Z*!2{=h5W9 zEGNv($-2bNe$@7hKhQ{6s`P3e{oCSdris};O#bMdxUpGzfntI!FGyah zw*3Al#c_`so{$<^Bui#^~#Ch*CX+KOrm!0&+|1c zR+FQ1rO07H?PDv`=)Ms`Jk}`sx@Ptvdy3(~GPS&{H9L1Y>!TSl+b=q0h~7rhqzj^u zb0b-3JC^0a**8u5L(+D%PG;(0Lo?c`cen{jW5oCzH%G(bk7Ts`X=MS9s{YE4#aL64 zm>)DZ;2mCCDfvh)lw>C)Jv1-#qY3RDvh@G%8@jnV+7&^rqLL$&%WhW%M#04gLZPAmNn& literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_on_ic.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/home_rewards_on_ic.webp new file mode 100644 index 0000000000000000000000000000000000000000..64c81a8f82101802b90149bb772cbc68c68250f8 GIT binary patch literal 2530 zcmeH`X;f257RM_Jq98^Cv#C$k66cPKppK27O^|3HyEFqY{p$ zL{K1&i-gH;SPaBOh_!?M#D0Hb{|K@~e+|+c4Luzt*-K)Q>b3@ixw}H+W~lE0kpK%F zkENu3XbxF;J^&_50BlVA8uOzAQ2P@Ay9U3;H0}TZrvbq3`5OCrCK0}5-_M_ug8YWS zKmZnt0g%T7pwJ6|EaCGSd?|2D6ep+1%cBb0H_075C;5#K12tgOEm&0=!PBU zWB@QY{%FT``KZ15Vwi3}TQB{W*|LFQ!-G7Jvt5Pb^h4t`I=vvn{fuzqp3YpnUNn_Y zADLO1Vcj&Mgz=8B%_8$w6VL}y^_2TwgSG)GBI8_C>0I{;jCs14J>SodpR#6`4W5nd zjyFGexmBAleMehyBGnQWhwtj@is?z;xEVY)*||39%43J7o;4j{8}rzvJk)XCOBN0x z6Q*&vBU!Fx#3I!CC=B+Ws{bDU-%jAur=iKaqqRdlRV*i^YIc@>)MgvC=uXGsv#%Nr z;GBQSc&QF*KAgxAEZ#5c*jezv7tWdd*^Iyv#&qz@i@ZM!eOIZIdNM4=;K8_<(nEA{ z=<~1w)b=G&^Lgsr^6QTaNvchvfJYO|@6cTXWebhzVZoO+CpX95zg0S~=DkMhsBvyu zJOBGDRCBEL_kCnpu1hzCXr5TKg4XO zbNBfLI3!Igs5*PEhYb68;r2h}A;s)L=QRxcOb@xhU2<=+i z;ULYN+~1bREvsHzb&WMQUf#P~X(zJN?Ww+J^FqBPd^CFgiB;t}?^XvDEPaCqG9={o zZv45IW#6s`)@;Z(49<6r?3_Ulr(2|DzwwZ~@oZYFouU5wuKZH#OC568eLF~YHhHZE z!UwNJ&O-^q`M0H1>lW%S6?eVMv6+ti8tQLbI?$|FRU+XY=FyP;Ic3#CEm?}r|-5D_*9+i<4I7UFJsniDf@^3sh zbv$AFc&feLgYoPBLhIG+_b66QEywiJ_V+v7V}suc#-l05Lm$%$pEOl#?<$7*9_hH- zxxN~jx7__?{d(B#@dU+WCqq{$!(aC!jx0D|Obpboxlw}hMDZqDgUT10L~(O?-|`c* zg5|L>*PG+;ja-I>%BLD@>Q}nPoy<*iagHYyuvbb`0<)V|=X@%-?4A#^f_jEK)6rhr z&fT5ZBO9NT@H#Gq!L_bFn$DadyUkWJ+!eMXif&Hr%`6F~U2I6nvf`9n<09xb(saZj z71y)s<(!n@ExN2bWmzRS$8d$+$x}u)HS8WYPD#MyZ>#qG17CApd;rJP-0Fx-4C$+5 z=}?PGF@*_*oH33KeYCTR1PiPPob{*VTWuH9a7W;tjC;Iy{l^wP-SQ#|Iy`#>cs|y?;oN-jbnWoc zz4p=vS}f@Tt%~5v7Q^6f%)S`4KJ#~6mC@C~7eV1e>)qU0empaT$X9#OQ%L@(F)s?; z)SG#WJE|innB2r}jOW!GtC)&K1n=h9KFslF3*u4oPL2YOIZ&}k5u$zM4SOw%(x*I0 hmELbEo^Qho%|$H)^eXpAa$3w}$xgI5d__hY{2Mflj6?tc literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_app_logo.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_app_logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..3378403ce6d9e19bd319cebfa677123013bfd3cf GIT binary patch literal 1939280 zcmeGCXIRuu!1#MFOOmUAHL175qQ$)xB?1}g z=YOVUuIqjOH}rqIl*X!i`M+_W5C6Z7@&CNB!wR?cuF@zq(z*XSY2wm6X-dPI9{(F2 z^e?>pf5YSdg#-M2{iJc`{tK^LIDfJgH{`K)P0v&bos2g82d~!K8oXm;RPcKBol&)4u|N?0^4f+wv%Z;N~`gK>O|g z+15W!Akf$<5Tq9UpKbrg#CO@cW&g7~Iq6d9?k*7gIwugQEfNU2JP`<#9slP)>Ei!S z-g-;_(v{}RNBZ#)cnaJEy#+G_-U3&FfiyHyU?dnJ7$ZHx){7&13Jlxx+l6ZWeNMOE zSzelYApUG>`vt??fGO7Emf}H4+fus~$j^5jJw4*O*=5}~_B!_aiZ7^jEm z4lf&`HU-$37adgXGC6^s%oaz!+(!!j8WJ3xA*<_efRN~Kvf_-+t_aYD&T%6 ztN6GW25`nCDD%9ycb&a_l-uW|Y_-a3Ek zw!wW$x>t#n@o$YwDXEnPB@agqEST=$&?n+R#TBm!8j9DRJ@q@dSrXKD@UJ_EdVI7=d3p0)OM%}(LyM-rwL2=?8>h9kpV;`o z^PFqY+o>KI;}-vRD@ko_%Kw)c^Tq2+tKyztSL-o4?{{~flGL6-DPASFyh{&Nta2!+ zTvd`<5bN94H{_bv$6x+EQ=cu(d80XFgSXQbE!kWCI^Wk@?wqw?$gYfzn@T$W|LPuV z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_notices.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_notices.webp new file mode 100644 index 0000000000000000000000000000000000000000..62b3b26d91f46890e55e8bd7ffb74840e8dcf75b GIT binary patch literal 1572 zcmWIYbaRtoV_*n(bqWXzu!!JdU|=u+Vs|j|baoCn!3g9sFrEOBEI_H;ypp0IcPE92 z$S4K&2Mmlr2nLDC#RU)+RuZV{+ck*V%eq)q;1}dfNi9wWD)|7!Dn&rcfo>83vPIG% zYz+`Q3BtAkvCB&eN`PttKGEKu}=*(FM8Ej?esmz1#mbamN3j z>Jzpc{V})kwp-VQ1I?TZa&K?T+}#Bv*9zXg4y66ua;%k)W!TR! zdVaHdU1i*RXP5tyJ92NI*l|bhmB+f5!a#jM&~Qt)>fD{8UtPbyTR%5D^Zw$ZJW+^* zQ~Ihc^EQ1v6O|dheNP-sScM<>mesA5+Q}&sqO+ z@9V|YpFXAL-_NPOy8N!bV|C%t9=+IIB`@vjj{fY*{qp$Z9G|e_Z_6dVtkuhoo3#Ap zBJTX81^)Z5ol89X|A)x++l`#Pr)KaqGXCFg{UUek*{AC-9(`JL`os1>OY>5#p!=^E@0RP;NxPfpvTaj@{`&1^N!8bu zO;BF{Q*PZm-8)t7i@Mogi7>qWuGJ9xHfjg|77MApF` z`;He={Lzv3n1XOGEKJVZ@vE(Ci~k8LPk%FMmGRl)S6Pa(xs!sQ|9`*CZt9XaP77_Oa|hil zOHH&24t*>1Fuiu|)JoNh{jb&+C9mK0dSC0uV=vb1j5xmAas9DS?a7gQd)#JSG>ezo zYTzZhZmZ5*VOc&6`9+LH=j?y}dvRsntEBM#+FusV!&af# z!PRiVce{eRvX9+G0ec!-NA-J5mO zqu7SYBzlUF4 x+0$OFd+YCpLo+ovckj&3Tb?!b^P?=@+x&l1@Bid~=YQ^9gu#-~ze>RJ5CDUMH=+Ol literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_paly.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_home_paly.webp new file mode 100644 index 0000000000000000000000000000000000000000..c3430ce8e862357a86e4110eeb6ed41294bcac4e GIT binary patch literal 984 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_detele_n.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_detele_n.webp new file mode 100644 index 0000000000000000000000000000000000000000..92f8962a95d87f470448c704b90de9398ba40af8 GIT binary patch literal 1520 zcmWIYbaQ*b%D@or>J$(bU=hK^z`$St#MWTs>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9EI^VeEscTU({cs|-be-p;R_55T+v`TAc4be3P33tpu6&c zFr6WXA(cUa!IL46A(=rB$T9*(sv(0JFou18F*7jeTOZ&PXn(SxSH*qRuA2V~Mto{hQEjzvZxM&;k-J!Sfj`z@b*_@Tk} z+h@Q3Uc2>L-Tv+CR{#E+7b&)O>#|HE-^t&9=gPRxKY!e!?^xlU^UpVjhK6p{Ij!>Y z|Nqy&J#~cipz!XwiU4yVmViSZ>53VpXFs=-}8qC-* zDS&ZOKyYa2E7gV5SSDBvnwzQnv+a^bv&&$n9IcNM^%y`?|H_!i_ zo}ImZ*I%KF^=x_4nq6CtPl&vy57bBzIPjtL_nz{|BU|l#0sf6miEHx`*Y8(UmBf;0ls~}$PGttJ8S*4md&zLS&p+HQVrs@c7XeP!a2x3kLjKZCmw;o9eOKCho7r}O&UjLG@0 zYu+AZUtIO%z?1%LpY!*mFI)fT^YGutrPw0i#DPlu_}5yp!0X=oiR=7c|DRi0zQp#w zj>Mjn|DO)(HWpTI>(3RA+*p5d!LAwQo@SB~&*Jyn+n#I{*Ii=J@S&^(`!Aal5u`_I>jD z_Whof3+KO)xEa=;{rljApP$>exNl55Bfq2nu5Rq?V1DaWFV;+w%Xv9Jw||yvyleU~ z-Mzm{T<(8<9LyU#^WMA5$uI10UpW0e-M0)JRibK3Ca25RuRQiVS&Mb^%VkS;izW9M z9+N;2i|3~KK9xA`KogZZ?o;=t?sV?rJ&zj Q+83vPIG% zYz+`Q3BtAkvCB&eN`PttK=2?(*InG6iuTNxN6ZXv`}7BDdI zw=ghlJC6`Ugh@eSQ6ktl79h!#md3#FX*mM}ZzKbQ@C612u4u3vkig+K1)!7+&|UdJ zn9h*HkjkLI;K`83kj$V5WElY?)sVpq7{fjWK=bvj5AX@NvubY2z3%m1+|HnHs#)WwRL~)|38a=ao#v~Z-TOCQD~~Z)Vd$d2Y)EXKKQovPTP%by$Y6^ zCui>d%^%D?|J>i*KN#oy`1Il7tKIXj?vHtN^WfvJ-F^kT?*8UmzS!JyldawEl*gCf z9Xow``t>!nUzX~|+`o3~$iI*E*9_-(>&9G$QOl@|NC7n}a?PW}7)zScdljR$Q{#c%E~jPZFMuWj;Jc-xHtCTq8vTz2m`wIFLn z){#Xky##N2eKjiV=;CJG>fZ zOk^mFa+$?)Sw&1(!ii(G+Y+GwLk7qC+h)$2igPws_2;r2-xj$s@?>Y^+~Admt+wU* z+E}atO1to<2zx+w^ zeej@KIx6m^N%4NL112pwr26-Bix|)UbwO%V^V`kRp9;SW>M=Yfk&H<=UtglGJ^S;* zlB%po-_&!gFYi86iud?^Iy>F-*NUCTr7t~AOJ5Fn`B~W3 z7u_#<_Ahz<{!3nU-Je3&bSa}PM=$JuZ*E(ao79dTma@Y36-!P%Z{}j%{AbdVZ1z3h z?^VCwiy-U^d@ubxdemsq?PI@}`bdP8XwT~9{=Az1)-35TxtO1si3g2VNdK6YcQ+ZF Srnq%1zU9Q)Ja}I#$_4)$G9w|;Sbv77Au|u981H3l#;3E2 zir*hV96utu14sh?fCjc1pPx7<8mkn5jYSGjlE%0I)d@fT(q5 zZpI`bJTZLg=gf$4R&+D~@=5@#g8^9d5CF@NscXdW4{LKKE;$hEVi8*mI0T}AGw=cN zfC1JK=?mheehxf|H@rtg0f5wcZ1?)Yp1mb1zF zLCRhBwfij&9b*aP^fkWgPXhQ2U|uyu63?oS`l3T@KIp?&z76by;p1(%3bD>Zk(|y-xn3}XpL*n;_b8ij`1!8 zEPhm=HnZ+(Q z!@5LFiM?p0h;m3O8aZVp6^Ux{M_MyDC94xhi%t)r%hvN8s;f>uug4MlgCeH%!`{=X zQ#JX$`YTSFA$rf>OI?1ItTsVSam@=7?j~Q1DA3RWlq<_BpyToN1zhcyt!ZY8%VEu5 zY5Q3+Fvu2kua=>R-ZIyz6*nbUYbxmM3Hcy0vPS<~Wy2c=zf=2l$)MBCW-6aPS%gm{ za~0n$-{dV5vS*`eYbSBNZmxWfUcyKF%JRiHrR09*y(HXe-QI==TM#@8QH}mTS^$c3 z$yc~?4DXcNA^N&Zoelm*h}C|O-v}3Dm2{(;6Rab>G3c7{>nwRSYVy~g)cYTA1uP@W z7Iw5|v=oy=vb?mV_?+d}XCpdSq1uWq48y&ad*LJW68y%noi`?Yc5W>;yr|?!M{~xj zu<@$N;~}*IRbyV6Fg-jbSAb6}^`sfC5ke3P1rU00p1`6o3Ly017|> zC;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|> zC;$bZ02F`%Pyh=2CxN5c3aZ3#zpN0|U!&!P>2A~V#&o~X@`T#6G{u&n%x58n+l(gG z&F;8NHKR$4-c1rHShih`Md^1)Y|Ut=p}P{* zt0Iw6zEhpPF}tBfWh+Q47HTRb*R)bndOK4Zu&iF0iaqC&BlcoSHHs<4lwy)$oj~n~ zPQ1h?{S1@Zc7aypo1wGcLg8?-_~a-~zc{T@t*>(N;eEincORuk#_S#M5Qv^z{RuyI BUmpMf literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_edit.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_edit.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b955ac9123a280451612dcb563872dc0f8cc2b5 GIT binary patch literal 1192 zcmWIYbaPw4!oU#j>J$(bU=hK^z`$St#9CnF>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b28>~!jZ6#-`dSTK0{2@M#<~V(MTdxq z25%nD`gmjM0jEQ*=i_Hg-Dqv~>uTAx(h}u{E!nquEH}-Ky1gxT^P;ZJeQQIHZcUqW z=I_6ombSJp=N*0C@lU(pwp(Z4?&M$19Uj-FW&75?U$gaERQ6gBk$e56h@fD8%1X(N zvTJl}`GM|WV0i0lH^2PnL$~$Krgw{3mYUt3zHV+*#Wd|r>)4g-f5%UePVO;0CIKR5 zSV!(FVg6v`zv=X|nb~&prt2s{!9OY1sl^`>_n+8SsI>OAE7K2)wO7v^coHYLlhxk8 z?bFWE1ILr^2}CVW^*^*i^z#G1BRvmwue7Y37-Y-5xH^g5kdfc%N6z}iC!O~N`ZV!f zzR1+$nyu25;$OQtSjaI=*aQO`jYy?k4E?Gf33=_*n8N# zYtFCr%I!>(!}xpNf8$?#!=7%-gE^P3+Y}#iQa1* zM?Ph_vb;&;Jhmy*U-pI;=fPn2MRppeS5N$YakAu$AHO5)T$iMGtF-)5t=JstB=A1P zj_D1fC&%ly1?IP+l1{8hNSIunaaiPdaeMfY{hSNW->dIU)Zlj9bN4rkdDX+pDkh6B zbC(wTCnP!d@PFsJKkxDDb;g^|-1Ff+d&=&Gj$T&(hqp;_lk7#`T#dNP794&#=v-Y} zy#M)p?LaThrBi}n#FbfxzsE8AYP%S%W1e__{@mhome1$F3A?`^>Nek-YWR7t$wm$a zfgjzotF|86&c^=wejR79f$_CMSJj{K%jSf(>)Tv`CIN6dSo`&E@a^v8GB*YW07Jx; An*aa+ literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_grid_mode.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_list_menu_grid_mode.webp new file mode 100644 index 0000000000000000000000000000000000000000..bf5d92efc5ccbeb3902562fb4e9964c031b56760 GIT binary patch literal 1014 zcmWIYbaQ*h%)k)t>J$(bU=hK^z`$St#F}8_>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9EI^VeEscTU({cs|-be-p;R_55T+v`TAc4be3P33tpu6&c zFr6WXA(cUa!IL46A(=rB$T9*(sv(0JFot~?m>3xJH66GFt}k4WD}C&b=XPs_XZ8O? zx8^dlPknbUpCPRMjRC_#MV=N`hNgl721W~(3mgoLCQ^MY4BQ0*4a_nPj3PV_?z6Kq zC?p7^+}<{KTd0K0^n-khMUP3}dHvshO`y)tZ!7x+|E53Kmb>`gy73>}Kl~mSA51TNa`o$`l={tEzEmZIsMz0;@q7OHXN}$b^S|Hz z*k^O*@mo9J;#>K@`1h^a=Xy46^UWNy+4@^!c6~0|I^D$gOAI3{s*va)`C5yL-bWUF zk1hJ{FKro+>>>b^Fps={sJ$(bU=hK^z`$St#MWTs>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9EI^VeEscTU({cs|-be-p;R_55T+v`TAc4be3P33tpu6&c zFr6WXA(cUa!IL46A(=rB$T9*(sv(0JFou23GBPmeTOZ&P=r{cT+5SJzZMUE~!9{1j z3y3ocGBR{+_5cBai3}|Q6I5=R<=Wof z_VsW1x%#5`=XX1<|LyJgXIyaGBsv!`X8^U5WjMBzsr%_%ON*wU0hsZtiIpc{QUmB=aKK? z_Wk)*ljHrk<9^%uR6F17nEy@Zwr)}1|L4!+N@>|gr@t*Px%%t=H+R7gv$mCtJvK@`X5&Ccwm7Y~JAyh!oj&0NwRLP0_U4WZjoDD_+v1P}fJ zUJQso4&D?G6+}>IOKGr;l%`229&+)b;7viWRa6jbjW%g^cb>kbvra-%QtiO7OTzo? z_q*TsW`P~^f@9{f5SYv5`0(&>JO~2my6%hrc?hhmtej~y8jGIiomEPKlyb+m?Q5L# z$5T^N-;WB1<>lqodcE!f{B;iife>QVw(a|qlamzyz+S-$Vjal6!Q6e2-GSGYQi)y2tr{$rIgPH2M5o`SSt(`7b=^I)1`34&T9y?mq-#6Sgwj3jg9q$dmNg%X#cpJ?*$+{WYinx} zPzcc#s6hnN8xaFUeAD0GpGv3GU#J+?*VjX!R;g{1MOx-NBv2=CEEan-F)=Y40*l2W zN+}~Cg<__yZFT|~N{iFe)0q%hDwU9|YLx^tRqDibF@b&Gk8IPulyYu-eEd=fESJk6 zkhX3gGi}qdR_l45w(bW(@XogF^w`+gb_CRx+ux&3$V}Hz`ZWlGCp4O)qoW_Alu4lm znksdJ>tM`4lu}ztsSA$dRFlbMy`>K;l}cpURM-xrnf87E2O{R1&F1A)D%I#XDZK)f zQm>R!x22SYL?Y2L9W4sA<@Qhvg&rc#`M!T^V`Jk}E|&{uuj}DZE|+(O5GQo&m~F!t zdkX;96N$t;0Qfzfhnt(54;W(?+Z66`&KDVDcZY_CUiJctQm$63r##Pl$T>g9Ik!0H zTSADdj^jM-c0?U&nf|1&UM7<{-E1~b3L#!6lgV#KQPmR4zZP~4<+y>r0bBR#E0l4D Q&;S4c07*qoM6N<$g0OpRH~;_u literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_play_serise_play.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_play_serise_play.webp new file mode 100644 index 0000000000000000000000000000000000000000..d2051855d7bec23cfbf81beebf092547b3995905 GIT binary patch literal 3116 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_search_search.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/ic_search_search.webp new file mode 100644 index 0000000000000000000000000000000000000000..2550d9329ca8ed9950f37e10c141f71a46bd9052 GIT binary patch literal 1366 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/icon_list_share.png b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/icon_list_share.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c50432d24f9e6d22592168dfee46a971f4c277 GIT binary patch literal 1115 zcmV-h1f=_kP)Px(6-h)vR9HvNm|bWbRTRhn=gv$U0-I=y6fKDaeGtJG+N$_uLmxyDU(^+$ZZbPF znFbMxA5eti`eu>7#6CFPolO@LS`rleKnNB5z@n&yRE6S0)J0K9D>TZMnBBR@y-1EOb&OP^k&Mu*gYieq0dw+lbyb$6+056P;jGP%A9WAwU1huod)!tk# zx2IGpeF$JTGyhIRFI$#%rd3?^_pSo@zJGw3-y@=1!$Ve>`G{@X=b}PwHIU-CBBdN3 z92{JT$KydOuwDRxnJ*L3vzBFj{J#JSA%2rmKIS;i#b!`F$xszQUI_7IKA*psN~L5y zu$}@D5i|2w%xv4X{r!Iq6apxy%gp?c<2b+8LbaWtxw*M*g+gJ6lyVngwu200)WazOvu!1F$X1;SKf#%zR!5 zF_BCre`yQI_x-&9rU2{#aMQnls0~$67lI&o*md3O>SNOkd7d|@Y1%k|6GXJViy*a9 z3u|j@iOI>y<%U3>=iQ;}`m5@m0c<6Vf-5q!YA;9Y0;SXG{X&RY0Cxh=wlFi*(re6o zY7 z@J;2V|6wai0F8+SoA8RL91(R0`y&2z^e9|E(KJq^D0(? zAUHlTF`=v=@@fF|qY%O}P4kl|LiK?DBBGa)$)p!Wpjizu^H1fU)UM+==c8(=qP_}X zXBeOg__SddFD4QR^=y9r4DjjoOcd47=ooJDoqlbrw?VcWJ%(#@_r=-*5xNE3!V6{g

a_8!foDb(feCeOXn+S>5}A$e&3r7BEoFiHg!7b6R68y=MhLVpzt6M zS@CM`BzbfRukcR3k=zDke<#`Okz7jFdL!8}I>#ipS~RvvzSjX5CldVmM-hgfjrG_i z`Ci2D{-8tws8FlFr$T}1(WF)ZmNcqG*G#1n4A*a`24oqhr;Qh>I1IwsbAJ3Y09H^q zAT|I10FVO!odGHy01^N`ku;=IC88svlmM_2326WTJz=KF5E5Kkq5uH?_)i!AR;A*9 K|M#r`0002Gjc7gq literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_back.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_back.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1ad181e0e19caa4804eb739fb4c13765dd77869 GIT binary patch literal 434 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 P<+=0g->wW^H6F@(`;e}(yYCEPdObLsK84rc_ z_os!L8rG=Zph*;0kd-!pZR_Pb)y-R$teML50A+bfp&BbOXv_B(c;H(S^(b6 z5Gf$L$SuP(PVN<^J5nAEn7&%eM7CgR3Y1Cgz|7?4Y%(YeCrE>(XGCY zMmxA?w&-`4lq~4eE>R8otQ{$OQ@bcdK5Dl^jhHs=hBqj2MQA5P-`2`HLu>0d_6r0$ z|NE`u)*b2F4R}UY`8YVr`|N{rftYWjiQ-B`L+og5xWdq^iS}hlWDL{@cAv!^f zQG9wtW7Ut=evxTN>?QO}~Nx09H^qAYuRj05AstodGIl0A>I_kwBeFrK6&ur#^@P zuo4Mr3KpOUm2a2n0IwP%#19*HaT1*uAQxK127ANU#9mA$U(;lrOiRE3{{A@A|LuqW a`(2O!?OeJ)y}$qfFTcp(4}ba50002$Pw`9u literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_lock.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_example_lock.webp new file mode 100644 index 0000000000000000000000000000000000000000..270a37f566e18dd064eceff0cdfc82253c39a852 GIT binary patch literal 302 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_left_episode_player.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_left_episode_player.webp new file mode 100644 index 0000000000000000000000000000000000000000..6f7d79ef3a1755adf7910ff1190eebabda43edec GIT binary patch literal 1180 zcmWIYbaR`+!oU#j>J$(bU=hK^z`$St#71D`>FgYEf)U7NU_1dLS%6Zxc_l?b?oJ93 zkx>fl4;UDM5DXHNiwhtutRzs?w`&l!mvynKz%R&|l3JV$RPq6cRf>R?1KlJ7WQ(Lj z*cu>q5`=97VwaZ`lmOKPfY?PLLC!#S3XrXlj>JwvVkZ|AfzZ zZ((5Ab{-*y2$O=uqC~K9z}R45N=sv4__UmXfj5$YLHGg#16MRy4oKi|n*vZu2I#JQ zAWUb-VMt|AVDMzfV@PJu1G0>Ok!r|b28>~!rA!PA`bG^r0_DvMa&OPDf0wxG)H46h-~AdCgA5D>Pd;tczrV9QQSYC{^FOZ+ z{d28+Ip6a6pO-6LzgOj+EB*Jlcehxo@&B(EPrBZGRa1U`-`Czdf6iRJSN(qPcO>HX zRCfL~Hzw}4-2LqC{%3QF&sjc)5WDlHKlbzSxYPTmmw*0w z?7`am-y`-}?4A62xmlUzzaz7^UW>|Ji%f+3tuMbRbfnr`w`vjZ&AnBhCkfrUa_Hw_ zZ?3O*z8C-de3SXK+l7PP@-=^com|RX`oD8FKO@*w)uDRdbiYxtLfLgcSgU9yW)^%%fbKvu!4W? literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_login_icon.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_login_icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..ef3d92ddf2ae311f5007f18f77d91252863aeebe GIT binary patch literal 5774 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 Y70)xWO!XE=^}8vj>hHR3OCAA#0TZD_VE_OC literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_privacy.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_privacy.webp new file mode 100644 index 0000000000000000000000000000000000000000..05e38b8d906fc39ced0233f75ed9450df53b904e GIT binary patch literal 3134 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 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_right.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_right.webp new file mode 100644 index 0000000000000000000000000000000000000000..9016440f57079f5a3340fc08362d06c146820b2b GIT binary patch literal 356 zcmV-q0h|6(Nk&Fo0RRA3MM6+kP&il$0000G0000H001KZ06|PpNbG5Tidb6 z+V9v-WvjDMC8ce%b1GFSZ9AEn$}_Ev&bDp8r@Oz1m;mdj51MYeFlDIsH6zsMVLx*0gmhJ4g+6wlK^9?Wq?zznr;Jl=qJkh zzrc$KQ5FGwj1*JW zp`kjc0FVxeX#fDoo8#y7H7Q^K{`$DsfB*eznE$KeKl%Qp|9*}C|JG7%|NquV00021 Cdzdl+ literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_setting.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_me_setting.webp new file mode 100644 index 0000000000000000000000000000000000000000..c6ac68191ec62e97739f8b99362e0741fd9614ba GIT binary patch literal 2654 zcmc(gc|25Y8^_OBN||A7*~MEi_EN)yLDI;YeaKcAOIgPjStCh?w3w8wWC>ZbM`Uk? z!DJ`mA^R>O<~iz*oIP;8D02{j z)1WK;>RJ~s8ni*cApmJRhzwxK&D{rYq^T}!ZgExk@HhYg+b_Fr@9p`U{xyQC?|r|u zROx?J{O{xu2b{M(C|LphBp#d`ToWhAoKC+Palm%JS^0qdeLQ_YjlluqO^hyr>;N*t z=^t$O54QKjALwI2jk24o@4;LLcCb4r&fU})yfT3<0C)pNfF_`Ruzzq2n#U^uKy3m5 z{lh;wyCeXpxC;P0Lw|B7(*b}r5&+66e{z4GiRX3v^usH#)01glav;cR&9*_Y^4m{K|fIN7@y3XJ(WR>b!;4oj2 zS2PG|sJzgFe{_tpfX50>pRsITA>XL(KuTskZf}R46{355ic7tb441o1Th`v7UI~TC zo^Lk>8p*VHgn^#ax_>cgm(L5b z&Uo-<{eP^!$n2c)CAPLsZWgHAKI85F2udr?-;VL&Qumj#`?o#z2T4UUv*nkQPcU7` zYp*+Q7D$~8U0Q>6mt1D(5sY8E?u9FI#yDj5BKxOO7D79BRWhnwE4%c|QtY1}FL)%B z5Ed_qW|0G+d-jCB&k`xVJ6Z3RQV$i}kFVOdS(#S-YT0vX2oq!QHDqeID5nufl-m}z z$H)~~6DfW=qP#z5jDCFDCYqMlh&2%FWJ_Zur(5y`=!8$QJ3<3?mk7_N2J+>aP$ zEm*P2$3<*&*)l`q1gz5Hjh09br(|ny{L-d1 zW_o}ObtkTAY`JGTYv8KhQw6_Nm)uNg9c*v$ewuZJ@9q=sQJK40Wjam}a#ii}5;DbC zf-azHUT&MM&Ll{)f(zks?Iwqy%6{zJW|VKQOQ)sPcIHNfOx00xv4gqKN-ck;m; zi3k9P*fIA?)D@OYo8#wE?H$o4HAR!7PaAn|PglK|?8+#Fl{xhmz&{3$^|#tAF4%an z*Iac;&8{@taMdv}aZXfsdD4ZlUUmDtjvX#Q-F!Y;9}7jUEk>2aqYIDe5?1tGz4wN6 z7Wy!TVf{4M*&{GPw;ZlAWo~O~uS88DR5k48+ptqkPF>W%n*`D;MCE!o zH9%H{Yj@)V!g`_waq#$B^hgpOAT{5?6xM z4lm6opSm~Js1$KaMoqmUT%2LgcBrbazfDR95u8Nq*PNcjE>69+svz)=Z~9ESZs&S$ ziDJZ8hE^VUdDo%It;|zm+)2@r9QvQE163kWA;^(qZ=-z@gyuDy<5bTX>n2g4skffD zE)=8`8DltvDSJ1zxttHEtW$1}+AqTiydM_i|+86f-*ZqXu3DYFWF4={VJf z>;&km*{Ne3_(PiqH(FY7-^!rAn59E~kfa#?meOWL;TN?h%NfgtqS)mshHF*4Stec> zndrktV&mPe)P1EC$%+~J(#S>)Qf*QDtKs62y=KxmQmmC5JLG_9>4YOIJCr`g6FeSN zK0N2_YhI0~4OTrzEqozn4hl>{rd0ZrMT;#uM1UcX|9mLAiP7BHG-6zSmR>z6hVjU? zTpi@;_60$r1)$M>NCOK$AJ&!N2f-#ZvI;a))7!=wb*DnUt7*XaVR0Q7M#`JT)E4cW z?K9y>hL87(km|Y;aLQE!oPt;a&%7p~zhH671Wu`L)w7sMDsvxZX5%xgPm%GLDexec zK4kdPo_g%_g%;<#Ul>G{CU$aGSG!~W<36386YIVaVKthVilj>jB1E42u;csgtJ{Giv$!>%5Ea-#|Z3i#hLTgA+`L;iaC=`;HWS2W*z zFZkWut_jO#3BRt$oRL1V5j1h31)o?d$2jY^O9~Byz&fE7mu_ok%`P49l_kc};@%me znmQKZzgcbeUG{ER_n(Ye>(1{-8Le73PRGvBH<3ne_tsP@nC>gvK3incmE@nW3OOcm zO3w?urDXkdOA)Z)v*6Pbp3Zy>5xHb13bC2$!VKEJo}FL&@o_;-9HG+Hk%@Z`XQQN~L_++GZ<{81M3Q4Lx_{Tto)tLP> z+Oe$aNYne*A%)T$D=w z?7`Q8yz{92Ww#*fgFNQWnTO#)I7-a|ZRGyKPV57&!8rIGK2}~wanZw@_-?%ZZbC?z wM_l0~Q9-u(;bb;#BVZTDT)>5%=R`&tmITV7_lBw1WLgaE?r1zM^ydZ0-wS76=>Px# literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_play_quality.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_play_quality.webp new file mode 100644 index 0000000000000000000000000000000000000000..7bc45094ee9d2b50a576725eb45071b3c426164f GIT binary patch literal 330 zcmV-Q0k!^8Nk&FO0RRA3MM6+kP&il$0000G0000s000UA06|PpNcI2#00EF|+uE^L zPi)(^ZL_jjIjL;lLVDY%T&1#Y+x8Qj@5#A@h?oEXV3l%7O?8)JgFo_W1m`5^3d0{+ zByG|%eN?#s0D^{J5OF+~mnL3*gormCRxC8{p*KX_%HsowdBA@@MbM_+@%QI~1WESp z6Mw%HfXX^DUIDmMTN06vjK col2#nqM@h=0I(7XX#fB{qo4r(_)P!+0PW+2ZvX%Q literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_right_episode_player.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/iv_right_episode_player.webp new file mode 100644 index 0000000000000000000000000000000000000000..cfc9a1d8637767057e9406a228a24dbdf456eb8b GIT binary patch literal 2096 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�shB*pIotc& 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

  • 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 fUi)`BVp%X#iMSp03aTSppRZkd*_BJEBE> literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxxhdpi/launcher_ic.png b/Android_Mireo/app/src/main/res/mipmap-xxxhdpi/launcher_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..2162ca147f4452dc2bd49260a5701cb08248b6ec GIT binary patch literal 50429 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 D37hs#O#gck%W5P(_f{5ps|sw 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

    getParcelable(name: String): P? { + val bundle: Bundle = getBundle() ?: return null + return bundle.getParcelable(name) + } + + @Suppress("UNCHECKED_CAST") + fun getSerializable(name: String): S? { + val bundle: Bundle = getBundle() ?: return null + return (bundle.getSerializable(name)) as S? + } + + fun getStringArrayList(name: String): ArrayList? { + val bundle: Bundle = getBundle() ?: return null + return bundle.getStringArrayList(name) + } + + fun getIntegerArrayList(name: String): ArrayList? { + val bundle: Bundle = getBundle() ?: return null + return bundle.getIntegerArrayList(name) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ClickAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ClickAction.kt new file mode 100644 index 0000000..4b759ad --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ClickAction.kt @@ -0,0 +1,32 @@ +package com.hjq.base.action + +import android.view.View +import androidx.annotation.IdRes + +interface ClickAction : View.OnClickListener { + + fun findViewById(@IdRes id: Int): V? + + fun setOnClickListener(@IdRes vararg ids: Int) { + setOnClickListener(this, *ids) + } + + fun setOnClickListener(listener: View.OnClickListener?, @IdRes vararg ids: Int) { + for (id: Int in ids) { + findViewById(id)?.setOnClickListener(listener) + } + } + + fun setOnClickListener(vararg views: View?) { + setOnClickListener(this, *views) + } + + fun setOnClickListener(listener: View.OnClickListener?, vararg views: View?) { + for (view: View? in views) { + view?.setOnClickListener(listener) + } + } + + override fun onClick(view: View) { + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/HandlerAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/HandlerAction.kt new file mode 100644 index 0000000..eeb417f --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/HandlerAction.kt @@ -0,0 +1,38 @@ +package com.hjq.base.action + +import android.os.Handler +import android.os.Looper +import android.os.SystemClock + +interface HandlerAction { + + companion object { + val HANDLER: Handler = Handler(Looper.getMainLooper()) + } + + fun getHandler(): Handler { + return HANDLER + } + + fun post(runnable: Runnable): Boolean { + return postDelayed(runnable, 0) + } + + fun postDelayed(runnable: Runnable, delayMillis: Long): Boolean { + return postAtTime(runnable, SystemClock.uptimeMillis() + if (delayMillis < 0) 0 else delayMillis) + } + + fun postAtTime(runnable: Runnable, uptimeMillis: Long): Boolean { + // 发送和当前对象相关的消息回调 + return HANDLER.postAtTime(runnable, this, uptimeMillis) + } + + fun removeCallbacks(runnable: Runnable) { + HANDLER.removeCallbacks(runnable) + } + + fun removeCallbacks() { + // 移除和当前对象相关的消息回调 + HANDLER.removeCallbacksAndMessages(this) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/KeyboardAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/KeyboardAction.kt new file mode 100644 index 0000000..30757be --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/KeyboardAction.kt @@ -0,0 +1,34 @@ +package com.hjq.base.action + +import android.content.Context +import android.view.View +import android.view.inputmethod.InputMethodManager + +interface KeyboardAction { + fun showKeyboard(view: View?) { + if (view == null) { + return + } + val manager: InputMethodManager = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? ?: return + manager.showSoftInput(view, InputMethodManager.SHOW_FORCED) + } + + fun hideKeyboard(view: View?) { + if (view == null) { + return + } + val manager: InputMethodManager = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? ?: return + manager.hideSoftInputFromWindow(view.windowToken, InputMethodManager.HIDE_NOT_ALWAYS) + } + + fun toggleSoftInput(view: View?) { + if (view == null) { + return + } + val manager: InputMethodManager = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager? ?: return + manager.toggleSoftInput(0, 0) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ResourcesAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ResourcesAction.kt new file mode 100644 index 0000000..a83e700 --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ResourcesAction.kt @@ -0,0 +1,40 @@ +package com.hjq.base.action + +import android.content.Context +import android.content.res.Resources +import android.graphics.drawable.Drawable +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat + +interface ResourcesAction { + + fun getContext(): Context + + fun getResources(): Resources { + return getContext().resources + } + + fun getString(@StringRes id: Int): String? { + return getContext().getString(id) + } + + fun getString(@StringRes id: Int, vararg formatArgs: Any?): String? { + return getResources().getString(id, *formatArgs) + } + + fun getDrawable(@DrawableRes id: Int): Drawable? { + return ContextCompat.getDrawable(getContext(), id) + } + + @ColorInt + fun getColor(@ColorRes id: Int): Int { + return ContextCompat.getColor(getContext(), id) + } + + fun getSystemService(serviceClass: Class): S { + return ContextCompat.getSystemService(getContext(), serviceClass)!! + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_dp.xml new file mode 100644 index 0000000..75fba69 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -170.6667dp + -85.3333dp + -56.8889dp + -34.1333dp + -28.4444dp + -22.7556dp + -14.2222dp + -5.6889dp + -2.8444dp + + 0.2844dp + 1.4222dp + 2.8444dp + 4.2667dp + 5.6889dp + 7.1111dp + 8.5333dp + 9.9556dp + 11.3778dp + 12.8000dp + 14.2222dp + 17.0667dp + 19.9111dp + 22.7556dp + 25.6000dp + 28.4444dp + 31.2889dp + 34.1333dp + 36.9778dp + 39.8222dp + 42.6667dp + 45.5111dp + 48.3556dp + 51.2000dp + 54.0444dp + 56.8889dp + 59.7333dp + 62.5778dp + 65.4222dp + 68.2667dp + 71.1111dp + 73.9556dp + 76.8000dp + 79.6444dp + 82.4889dp + 85.3333dp + 88.1778dp + 91.0222dp + 93.8667dp + 96.7111dp + 99.5556dp + 102.4000dp + 105.2444dp + 108.0889dp + 110.9333dp + 113.7778dp + 116.6222dp + 119.4667dp + 122.3111dp + 125.1556dp + 128.0000dp + 130.8444dp + 133.6889dp + 136.5333dp + 139.3778dp + 142.2222dp + 145.0667dp + 147.9111dp + 150.7556dp + 153.6000dp + 156.4444dp + 159.2889dp + 162.1333dp + 164.9778dp + 167.8222dp + 170.6667dp + 173.5111dp + 176.3556dp + 179.2000dp + 182.0444dp + 184.8889dp + 187.7333dp + 190.5778dp + 193.4222dp + 196.2667dp + 199.1111dp + 201.9556dp + 204.8000dp + 207.6444dp + 210.4889dp + 213.3333dp + 216.1778dp + 219.0222dp + 221.8667dp + 224.7111dp + 227.5556dp + 230.4000dp + 233.2444dp + 236.0889dp + 238.9333dp + 241.7778dp + 244.6222dp + 247.4667dp + 250.3111dp + 253.1556dp + 256.0000dp + 258.8444dp + 261.6889dp + 264.5333dp + 267.3778dp + 270.2222dp + 273.0667dp + 275.9111dp + 278.7556dp + 281.6000dp + 284.4444dp + 287.2889dp + 290.1333dp + 292.9778dp + 295.8222dp + 298.6667dp + 301.5111dp + 304.3556dp + 307.2000dp + 310.0444dp + 312.8889dp + 315.7333dp + 318.5778dp + 321.4222dp + 324.2667dp + 327.1111dp + 329.9556dp + 332.8000dp + 335.6444dp + 338.4889dp + 341.3333dp + 344.1778dp + 347.0222dp + 349.8667dp + 352.7111dp + 355.5556dp + 358.4000dp + 361.2444dp + 364.0889dp + 366.9333dp + 369.7778dp + 372.6222dp + 375.4667dp + 378.3111dp + 381.1556dp + 384.0000dp + 386.8444dp + 389.6889dp + 392.5333dp + 395.3778dp + 398.2222dp + 401.0667dp + 403.9111dp + 406.7556dp + 409.6000dp + 412.4444dp + 415.2889dp + 418.1333dp + 420.9778dp + 423.8222dp + 426.6667dp + 429.5111dp + 432.3556dp + 435.2000dp + 438.0444dp + 440.8889dp + 443.7333dp + 446.5778dp + 449.4222dp + 452.2667dp + 455.1111dp + 457.9556dp + 460.8000dp + 463.6444dp + 466.4889dp + 469.3333dp + 472.1778dp + 475.0222dp + 477.8667dp + 480.7111dp + 483.5556dp + 486.4000dp + 489.2444dp + 492.0889dp + 494.9333dp + 497.7778dp + 500.6222dp + 503.4667dp + 506.3111dp + 509.1556dp + 512.0000dp + 514.8444dp + 517.6889dp + 520.5333dp + 523.3778dp + 526.2222dp + 529.0667dp + 531.9111dp + 534.7556dp + 537.6000dp + 540.4444dp + 543.2889dp + 546.1333dp + 548.9778dp + 551.8222dp + 554.6667dp + 557.5111dp + 560.3556dp + 563.2000dp + 566.0444dp + 568.8889dp + 571.7333dp + 574.5778dp + 577.4222dp + 580.2667dp + 583.1111dp + 585.9556dp + 588.8000dp + 591.6444dp + 594.4889dp + 597.3333dp + 600.1778dp + 603.0222dp + 605.8667dp + 608.7111dp + 611.5556dp + 614.4000dp + 617.2444dp + 620.0889dp + 622.9333dp + 625.7778dp + 628.6222dp + 631.4667dp + 634.3111dp + 637.1556dp + 640.0000dp + 642.8444dp + 645.6889dp + 648.5333dp + 651.3778dp + 654.2222dp + 657.0667dp + 659.9111dp + 662.7556dp + 665.6000dp + 668.4444dp + 671.2889dp + 674.1333dp + 676.9778dp + 679.8222dp + 682.6667dp + 685.5111dp + 688.3556dp + 691.2000dp + 694.0444dp + 696.8889dp + 699.7333dp + 702.5778dp + 705.4222dp + 708.2667dp + 711.1111dp + 713.9556dp + 716.8000dp + 719.6444dp + 722.4889dp + 725.3333dp + 728.1778dp + 731.0222dp + 733.8667dp + 736.7111dp + 739.5556dp + 742.4000dp + 745.2444dp + 748.0889dp + 750.9333dp + 753.7778dp + 756.6222dp + 759.4667dp + 762.3111dp + 765.1556dp + 768.0000dp + 770.8444dp + 773.6889dp + 776.5333dp + 779.3778dp + 782.2222dp + 785.0667dp + 787.9111dp + 790.7556dp + 793.6000dp + 796.4444dp + 799.2889dp + 802.1333dp + 804.9778dp + 807.8222dp + 810.6667dp + 813.5111dp + 816.3556dp + 819.2000dp + 822.0444dp + 824.8889dp + 827.7333dp + 830.5778dp + 833.4222dp + 836.2667dp + 839.1111dp + 841.9556dp + 844.8000dp + 847.6444dp + 850.4889dp + 853.3333dp + 856.1778dp + 859.0222dp + 861.8667dp + 864.7111dp + 867.5556dp + 870.4000dp + 873.2444dp + 876.0889dp + 878.9333dp + 881.7778dp + 884.6222dp + 887.4667dp + 890.3111dp + 893.1556dp + 896.0000dp + 898.8444dp + 901.6889dp + 904.5333dp + 907.3778dp + 910.2222dp + 913.0667dp + 915.9111dp + 918.7556dp + 921.6000dp + 924.4444dp + 927.2889dp + 930.1333dp + 932.9778dp + 935.8222dp + 938.6667dp + 941.5111dp + 944.3556dp + 947.2000dp + 950.0444dp + 952.8889dp + 955.7333dp + 958.5778dp + 961.4222dp + 964.2667dp + 967.1111dp + 969.9556dp + 972.8000dp + 975.6444dp + 978.4889dp + 981.3333dp + 984.1778dp + 987.0222dp + 989.8667dp + 992.7111dp + 995.5556dp + 998.4000dp + 1001.2444dp + 1004.0889dp + 1006.9333dp + 1009.7778dp + 1012.6222dp + 1015.4667dp + 1018.3111dp + 1021.1556dp + 1024.0000dp + 1038.2222dp + 1052.4444dp + 1137.7778dp + 1166.2222dp + 1200.3556dp + 1342.5778dp + 1422.2222dp + 1706.6667dp + 1820.4444dp + 2048.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_sp.xml new file mode 100644 index 0000000..e36cb3c --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1024dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 17.0667sp + 19.9111sp + 22.7556sp + 25.6000sp + 28.4444sp + 31.2889sp + 34.1333sp + 36.9778sp + 39.8222sp + 42.6667sp + 45.5111sp + 48.3556sp + 51.2000sp + 54.0444sp + 56.8889sp + 59.7333sp + 62.5778sp + 65.4222sp + 68.2667sp + 71.1111sp + 79.6444sp + 85.3333sp + 91.0222sp + 96.7111sp + 102.4000sp + 108.0889sp + 113.7778sp + 119.4667sp + 136.5333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_dp.xml new file mode 100644 index 0000000..df38b72 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -213.3333dp + -106.6667dp + -71.1111dp + -42.6667dp + -35.5556dp + -28.4444dp + -17.7778dp + -7.1111dp + -3.5556dp + + 0.3556dp + 1.7778dp + 3.5556dp + 5.3333dp + 7.1111dp + 8.8889dp + 10.6667dp + 12.4444dp + 14.2222dp + 16.0000dp + 17.7778dp + 21.3333dp + 24.8889dp + 28.4444dp + 32.0000dp + 35.5556dp + 39.1111dp + 42.6667dp + 46.2222dp + 49.7778dp + 53.3333dp + 56.8889dp + 60.4444dp + 64.0000dp + 67.5556dp + 71.1111dp + 74.6667dp + 78.2222dp + 81.7778dp + 85.3333dp + 88.8889dp + 92.4444dp + 96.0000dp + 99.5556dp + 103.1111dp + 106.6667dp + 110.2222dp + 113.7778dp + 117.3333dp + 120.8889dp + 124.4444dp + 128.0000dp + 131.5556dp + 135.1111dp + 138.6667dp + 142.2222dp + 145.7778dp + 149.3333dp + 152.8889dp + 156.4444dp + 160.0000dp + 163.5556dp + 167.1111dp + 170.6667dp + 174.2222dp + 177.7778dp + 181.3333dp + 184.8889dp + 188.4444dp + 192.0000dp + 195.5556dp + 199.1111dp + 202.6667dp + 206.2222dp + 209.7778dp + 213.3333dp + 216.8889dp + 220.4444dp + 224.0000dp + 227.5556dp + 231.1111dp + 234.6667dp + 238.2222dp + 241.7778dp + 245.3333dp + 248.8889dp + 252.4444dp + 256.0000dp + 259.5556dp + 263.1111dp + 266.6667dp + 270.2222dp + 273.7778dp + 277.3333dp + 280.8889dp + 284.4444dp + 288.0000dp + 291.5556dp + 295.1111dp + 298.6667dp + 302.2222dp + 305.7778dp + 309.3333dp + 312.8889dp + 316.4444dp + 320.0000dp + 323.5556dp + 327.1111dp + 330.6667dp + 334.2222dp + 337.7778dp + 341.3333dp + 344.8889dp + 348.4444dp + 352.0000dp + 355.5556dp + 359.1111dp + 362.6667dp + 366.2222dp + 369.7778dp + 373.3333dp + 376.8889dp + 380.4444dp + 384.0000dp + 387.5556dp + 391.1111dp + 394.6667dp + 398.2222dp + 401.7778dp + 405.3333dp + 408.8889dp + 412.4444dp + 416.0000dp + 419.5556dp + 423.1111dp + 426.6667dp + 430.2222dp + 433.7778dp + 437.3333dp + 440.8889dp + 444.4444dp + 448.0000dp + 451.5556dp + 455.1111dp + 458.6667dp + 462.2222dp + 465.7778dp + 469.3333dp + 472.8889dp + 476.4444dp + 480.0000dp + 483.5556dp + 487.1111dp + 490.6667dp + 494.2222dp + 497.7778dp + 501.3333dp + 504.8889dp + 508.4444dp + 512.0000dp + 515.5556dp + 519.1111dp + 522.6667dp + 526.2222dp + 529.7778dp + 533.3333dp + 536.8889dp + 540.4444dp + 544.0000dp + 547.5556dp + 551.1111dp + 554.6667dp + 558.2222dp + 561.7778dp + 565.3333dp + 568.8889dp + 572.4444dp + 576.0000dp + 579.5556dp + 583.1111dp + 586.6667dp + 590.2222dp + 593.7778dp + 597.3333dp + 600.8889dp + 604.4444dp + 608.0000dp + 611.5556dp + 615.1111dp + 618.6667dp + 622.2222dp + 625.7778dp + 629.3333dp + 632.8889dp + 636.4444dp + 640.0000dp + 643.5556dp + 647.1111dp + 650.6667dp + 654.2222dp + 657.7778dp + 661.3333dp + 664.8889dp + 668.4444dp + 672.0000dp + 675.5556dp + 679.1111dp + 682.6667dp + 686.2222dp + 689.7778dp + 693.3333dp + 696.8889dp + 700.4444dp + 704.0000dp + 707.5556dp + 711.1111dp + 714.6667dp + 718.2222dp + 721.7778dp + 725.3333dp + 728.8889dp + 732.4444dp + 736.0000dp + 739.5556dp + 743.1111dp + 746.6667dp + 750.2222dp + 753.7778dp + 757.3333dp + 760.8889dp + 764.4444dp + 768.0000dp + 771.5556dp + 775.1111dp + 778.6667dp + 782.2222dp + 785.7778dp + 789.3333dp + 792.8889dp + 796.4444dp + 800.0000dp + 803.5556dp + 807.1111dp + 810.6667dp + 814.2222dp + 817.7778dp + 821.3333dp + 824.8889dp + 828.4444dp + 832.0000dp + 835.5556dp + 839.1111dp + 842.6667dp + 846.2222dp + 849.7778dp + 853.3333dp + 856.8889dp + 860.4444dp + 864.0000dp + 867.5556dp + 871.1111dp + 874.6667dp + 878.2222dp + 881.7778dp + 885.3333dp + 888.8889dp + 892.4444dp + 896.0000dp + 899.5556dp + 903.1111dp + 906.6667dp + 910.2222dp + 913.7778dp + 917.3333dp + 920.8889dp + 924.4444dp + 928.0000dp + 931.5556dp + 935.1111dp + 938.6667dp + 942.2222dp + 945.7778dp + 949.3333dp + 952.8889dp + 956.4444dp + 960.0000dp + 963.5556dp + 967.1111dp + 970.6667dp + 974.2222dp + 977.7778dp + 981.3333dp + 984.8889dp + 988.4444dp + 992.0000dp + 995.5556dp + 999.1111dp + 1002.6667dp + 1006.2222dp + 1009.7778dp + 1013.3333dp + 1016.8889dp + 1020.4444dp + 1024.0000dp + 1027.5556dp + 1031.1111dp + 1034.6667dp + 1038.2222dp + 1041.7778dp + 1045.3333dp + 1048.8889dp + 1052.4444dp + 1056.0000dp + 1059.5556dp + 1063.1111dp + 1066.6667dp + 1070.2222dp + 1073.7778dp + 1077.3333dp + 1080.8889dp + 1084.4444dp + 1088.0000dp + 1091.5556dp + 1095.1111dp + 1098.6667dp + 1102.2222dp + 1105.7778dp + 1109.3333dp + 1112.8889dp + 1116.4444dp + 1120.0000dp + 1123.5556dp + 1127.1111dp + 1130.6667dp + 1134.2222dp + 1137.7778dp + 1141.3333dp + 1144.8889dp + 1148.4444dp + 1152.0000dp + 1155.5556dp + 1159.1111dp + 1162.6667dp + 1166.2222dp + 1169.7778dp + 1173.3333dp + 1176.8889dp + 1180.4444dp + 1184.0000dp + 1187.5556dp + 1191.1111dp + 1194.6667dp + 1198.2222dp + 1201.7778dp + 1205.3333dp + 1208.8889dp + 1212.4444dp + 1216.0000dp + 1219.5556dp + 1223.1111dp + 1226.6667dp + 1230.2222dp + 1233.7778dp + 1237.3333dp + 1240.8889dp + 1244.4444dp + 1248.0000dp + 1251.5556dp + 1255.1111dp + 1258.6667dp + 1262.2222dp + 1265.7778dp + 1269.3333dp + 1272.8889dp + 1276.4444dp + 1280.0000dp + 1297.7778dp + 1315.5556dp + 1422.2222dp + 1457.7778dp + 1500.4444dp + 1678.2222dp + 1777.7778dp + 2133.3333dp + 2275.5556dp + 2560.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_sp.xml new file mode 100644 index 0000000..e9d7c4e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1280dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 21.3333sp + 24.8889sp + 28.4444sp + 32.0000sp + 35.5556sp + 39.1111sp + 42.6667sp + 46.2222sp + 49.7778sp + 53.3333sp + 56.8889sp + 60.4444sp + 64.0000sp + 67.5556sp + 71.1111sp + 74.6667sp + 78.2222sp + 81.7778sp + 85.3333sp + 88.8889sp + 99.5556sp + 106.6667sp + 113.7778sp + 120.8889sp + 128.0000sp + 135.1111sp + 142.2222sp + 149.3333sp + 170.6667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_dp.xml new file mode 100644 index 0000000..0bc15ef --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -227.5000dp + -113.7500dp + -75.8333dp + -45.5000dp + -37.9167dp + -30.3333dp + -18.9583dp + -7.5833dp + -3.7917dp + + 0.3792dp + 1.8958dp + 3.7917dp + 5.6875dp + 7.5833dp + 9.4792dp + 11.3750dp + 13.2708dp + 15.1667dp + 17.0625dp + 18.9583dp + 22.7500dp + 26.5417dp + 30.3333dp + 34.1250dp + 37.9167dp + 41.7083dp + 45.5000dp + 49.2917dp + 53.0833dp + 56.8750dp + 60.6667dp + 64.4583dp + 68.2500dp + 72.0417dp + 75.8333dp + 79.6250dp + 83.4167dp + 87.2083dp + 91.0000dp + 94.7917dp + 98.5833dp + 102.3750dp + 106.1667dp + 109.9583dp + 113.7500dp + 117.5417dp + 121.3333dp + 125.1250dp + 128.9167dp + 132.7083dp + 136.5000dp + 140.2917dp + 144.0833dp + 147.8750dp + 151.6667dp + 155.4583dp + 159.2500dp + 163.0417dp + 166.8333dp + 170.6250dp + 174.4167dp + 178.2083dp + 182.0000dp + 185.7917dp + 189.5833dp + 193.3750dp + 197.1667dp + 200.9583dp + 204.7500dp + 208.5417dp + 212.3333dp + 216.1250dp + 219.9167dp + 223.7083dp + 227.5000dp + 231.2917dp + 235.0833dp + 238.8750dp + 242.6667dp + 246.4583dp + 250.2500dp + 254.0417dp + 257.8333dp + 261.6250dp + 265.4167dp + 269.2083dp + 273.0000dp + 276.7917dp + 280.5833dp + 284.3750dp + 288.1667dp + 291.9583dp + 295.7500dp + 299.5417dp + 303.3333dp + 307.1250dp + 310.9167dp + 314.7083dp + 318.5000dp + 322.2917dp + 326.0833dp + 329.8750dp + 333.6667dp + 337.4583dp + 341.2500dp + 345.0417dp + 348.8333dp + 352.6250dp + 356.4167dp + 360.2083dp + 364.0000dp + 367.7917dp + 371.5833dp + 375.3750dp + 379.1667dp + 382.9583dp + 386.7500dp + 390.5417dp + 394.3333dp + 398.1250dp + 401.9167dp + 405.7083dp + 409.5000dp + 413.2917dp + 417.0833dp + 420.8750dp + 424.6667dp + 428.4583dp + 432.2500dp + 436.0417dp + 439.8333dp + 443.6250dp + 447.4167dp + 451.2083dp + 455.0000dp + 458.7917dp + 462.5833dp + 466.3750dp + 470.1667dp + 473.9583dp + 477.7500dp + 481.5417dp + 485.3333dp + 489.1250dp + 492.9167dp + 496.7083dp + 500.5000dp + 504.2917dp + 508.0833dp + 511.8750dp + 515.6667dp + 519.4583dp + 523.2500dp + 527.0417dp + 530.8333dp + 534.6250dp + 538.4167dp + 542.2083dp + 546.0000dp + 549.7917dp + 553.5833dp + 557.3750dp + 561.1667dp + 564.9583dp + 568.7500dp + 572.5417dp + 576.3333dp + 580.1250dp + 583.9167dp + 587.7083dp + 591.5000dp + 595.2917dp + 599.0833dp + 602.8750dp + 606.6667dp + 610.4583dp + 614.2500dp + 618.0417dp + 621.8333dp + 625.6250dp + 629.4167dp + 633.2083dp + 637.0000dp + 640.7917dp + 644.5833dp + 648.3750dp + 652.1667dp + 655.9583dp + 659.7500dp + 663.5417dp + 667.3333dp + 671.1250dp + 674.9167dp + 678.7083dp + 682.5000dp + 686.2917dp + 690.0833dp + 693.8750dp + 697.6667dp + 701.4583dp + 705.2500dp + 709.0417dp + 712.8333dp + 716.6250dp + 720.4167dp + 724.2083dp + 728.0000dp + 731.7917dp + 735.5833dp + 739.3750dp + 743.1667dp + 746.9583dp + 750.7500dp + 754.5417dp + 758.3333dp + 762.1250dp + 765.9167dp + 769.7083dp + 773.5000dp + 777.2917dp + 781.0833dp + 784.8750dp + 788.6667dp + 792.4583dp + 796.2500dp + 800.0417dp + 803.8333dp + 807.6250dp + 811.4167dp + 815.2083dp + 819.0000dp + 822.7917dp + 826.5833dp + 830.3750dp + 834.1667dp + 837.9583dp + 841.7500dp + 845.5417dp + 849.3333dp + 853.1250dp + 856.9167dp + 860.7083dp + 864.5000dp + 868.2917dp + 872.0833dp + 875.8750dp + 879.6667dp + 883.4583dp + 887.2500dp + 891.0417dp + 894.8333dp + 898.6250dp + 902.4167dp + 906.2083dp + 910.0000dp + 913.7917dp + 917.5833dp + 921.3750dp + 925.1667dp + 928.9583dp + 932.7500dp + 936.5417dp + 940.3333dp + 944.1250dp + 947.9167dp + 951.7083dp + 955.5000dp + 959.2917dp + 963.0833dp + 966.8750dp + 970.6667dp + 974.4583dp + 978.2500dp + 982.0417dp + 985.8333dp + 989.6250dp + 993.4167dp + 997.2083dp + 1001.0000dp + 1004.7917dp + 1008.5833dp + 1012.3750dp + 1016.1667dp + 1019.9583dp + 1023.7500dp + 1027.5417dp + 1031.3333dp + 1035.1250dp + 1038.9167dp + 1042.7083dp + 1046.5000dp + 1050.2917dp + 1054.0833dp + 1057.8750dp + 1061.6667dp + 1065.4583dp + 1069.2500dp + 1073.0417dp + 1076.8333dp + 1080.6250dp + 1084.4167dp + 1088.2083dp + 1092.0000dp + 1095.7917dp + 1099.5833dp + 1103.3750dp + 1107.1667dp + 1110.9583dp + 1114.7500dp + 1118.5417dp + 1122.3333dp + 1126.1250dp + 1129.9167dp + 1133.7083dp + 1137.5000dp + 1141.2917dp + 1145.0833dp + 1148.8750dp + 1152.6667dp + 1156.4583dp + 1160.2500dp + 1164.0417dp + 1167.8333dp + 1171.6250dp + 1175.4167dp + 1179.2083dp + 1183.0000dp + 1186.7917dp + 1190.5833dp + 1194.3750dp + 1198.1667dp + 1201.9583dp + 1205.7500dp + 1209.5417dp + 1213.3333dp + 1217.1250dp + 1220.9167dp + 1224.7083dp + 1228.5000dp + 1232.2917dp + 1236.0833dp + 1239.8750dp + 1243.6667dp + 1247.4583dp + 1251.2500dp + 1255.0417dp + 1258.8333dp + 1262.6250dp + 1266.4167dp + 1270.2083dp + 1274.0000dp + 1277.7917dp + 1281.5833dp + 1285.3750dp + 1289.1667dp + 1292.9583dp + 1296.7500dp + 1300.5417dp + 1304.3333dp + 1308.1250dp + 1311.9167dp + 1315.7083dp + 1319.5000dp + 1323.2917dp + 1327.0833dp + 1330.8750dp + 1334.6667dp + 1338.4583dp + 1342.2500dp + 1346.0417dp + 1349.8333dp + 1353.6250dp + 1357.4167dp + 1361.2083dp + 1365.0000dp + 1383.9583dp + 1402.9167dp + 1516.6667dp + 1554.5833dp + 1600.0833dp + 1789.6667dp + 1895.8333dp + 2275.0000dp + 2426.6667dp + 2730.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_sp.xml new file mode 100644 index 0000000..860fdb4 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw1365dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 22.7500sp + 26.5417sp + 30.3333sp + 34.1250sp + 37.9167sp + 41.7083sp + 45.5000sp + 49.2917sp + 53.0833sp + 56.8750sp + 60.6667sp + 64.4583sp + 68.2500sp + 72.0417sp + 75.8333sp + 79.6250sp + 83.4167sp + 87.2083sp + 91.0000sp + 94.7917sp + 106.1667sp + 113.7500sp + 121.3333sp + 128.9167sp + 136.5000sp + 144.0833sp + 151.6667sp + 159.2500sp + 182.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_dp.xml new file mode 100644 index 0000000..21e3633 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -40.0000dp + -20.0000dp + -13.3333dp + -8.0000dp + -6.6667dp + -5.3333dp + -3.3333dp + -1.3333dp + -0.6667dp + + 0.0667dp + 0.3333dp + 0.6667dp + 1.0000dp + 1.3333dp + 1.6667dp + 2.0000dp + 2.3333dp + 2.6667dp + 3.0000dp + 3.3333dp + 4.0000dp + 4.6667dp + 5.3333dp + 6.0000dp + 6.6667dp + 7.3333dp + 8.0000dp + 8.6667dp + 9.3333dp + 10.0000dp + 10.6667dp + 11.3333dp + 12.0000dp + 12.6667dp + 13.3333dp + 14.0000dp + 14.6667dp + 15.3333dp + 16.0000dp + 16.6667dp + 17.3333dp + 18.0000dp + 18.6667dp + 19.3333dp + 20.0000dp + 20.6667dp + 21.3333dp + 22.0000dp + 22.6667dp + 23.3333dp + 24.0000dp + 24.6667dp + 25.3333dp + 26.0000dp + 26.6667dp + 27.3333dp + 28.0000dp + 28.6667dp + 29.3333dp + 30.0000dp + 30.6667dp + 31.3333dp + 32.0000dp + 32.6667dp + 33.3333dp + 34.0000dp + 34.6667dp + 35.3333dp + 36.0000dp + 36.6667dp + 37.3333dp + 38.0000dp + 38.6667dp + 39.3333dp + 40.0000dp + 40.6667dp + 41.3333dp + 42.0000dp + 42.6667dp + 43.3333dp + 44.0000dp + 44.6667dp + 45.3333dp + 46.0000dp + 46.6667dp + 47.3333dp + 48.0000dp + 48.6667dp + 49.3333dp + 50.0000dp + 50.6667dp + 51.3333dp + 52.0000dp + 52.6667dp + 53.3333dp + 54.0000dp + 54.6667dp + 55.3333dp + 56.0000dp + 56.6667dp + 57.3333dp + 58.0000dp + 58.6667dp + 59.3333dp + 60.0000dp + 60.6667dp + 61.3333dp + 62.0000dp + 62.6667dp + 63.3333dp + 64.0000dp + 64.6667dp + 65.3333dp + 66.0000dp + 66.6667dp + 67.3333dp + 68.0000dp + 68.6667dp + 69.3333dp + 70.0000dp + 70.6667dp + 71.3333dp + 72.0000dp + 72.6667dp + 73.3333dp + 74.0000dp + 74.6667dp + 75.3333dp + 76.0000dp + 76.6667dp + 77.3333dp + 78.0000dp + 78.6667dp + 79.3333dp + 80.0000dp + 80.6667dp + 81.3333dp + 82.0000dp + 82.6667dp + 83.3333dp + 84.0000dp + 84.6667dp + 85.3333dp + 86.0000dp + 86.6667dp + 87.3333dp + 88.0000dp + 88.6667dp + 89.3333dp + 90.0000dp + 90.6667dp + 91.3333dp + 92.0000dp + 92.6667dp + 93.3333dp + 94.0000dp + 94.6667dp + 95.3333dp + 96.0000dp + 96.6667dp + 97.3333dp + 98.0000dp + 98.6667dp + 99.3333dp + 100.0000dp + 100.6667dp + 101.3333dp + 102.0000dp + 102.6667dp + 103.3333dp + 104.0000dp + 104.6667dp + 105.3333dp + 106.0000dp + 106.6667dp + 107.3333dp + 108.0000dp + 108.6667dp + 109.3333dp + 110.0000dp + 110.6667dp + 111.3333dp + 112.0000dp + 112.6667dp + 113.3333dp + 114.0000dp + 114.6667dp + 115.3333dp + 116.0000dp + 116.6667dp + 117.3333dp + 118.0000dp + 118.6667dp + 119.3333dp + 120.0000dp + 120.6667dp + 121.3333dp + 122.0000dp + 122.6667dp + 123.3333dp + 124.0000dp + 124.6667dp + 125.3333dp + 126.0000dp + 126.6667dp + 127.3333dp + 128.0000dp + 128.6667dp + 129.3333dp + 130.0000dp + 130.6667dp + 131.3333dp + 132.0000dp + 132.6667dp + 133.3333dp + 134.0000dp + 134.6667dp + 135.3333dp + 136.0000dp + 136.6667dp + 137.3333dp + 138.0000dp + 138.6667dp + 139.3333dp + 140.0000dp + 140.6667dp + 141.3333dp + 142.0000dp + 142.6667dp + 143.3333dp + 144.0000dp + 144.6667dp + 145.3333dp + 146.0000dp + 146.6667dp + 147.3333dp + 148.0000dp + 148.6667dp + 149.3333dp + 150.0000dp + 150.6667dp + 151.3333dp + 152.0000dp + 152.6667dp + 153.3333dp + 154.0000dp + 154.6667dp + 155.3333dp + 156.0000dp + 156.6667dp + 157.3333dp + 158.0000dp + 158.6667dp + 159.3333dp + 160.0000dp + 160.6667dp + 161.3333dp + 162.0000dp + 162.6667dp + 163.3333dp + 164.0000dp + 164.6667dp + 165.3333dp + 166.0000dp + 166.6667dp + 167.3333dp + 168.0000dp + 168.6667dp + 169.3333dp + 170.0000dp + 170.6667dp + 171.3333dp + 172.0000dp + 172.6667dp + 173.3333dp + 174.0000dp + 174.6667dp + 175.3333dp + 176.0000dp + 176.6667dp + 177.3333dp + 178.0000dp + 178.6667dp + 179.3333dp + 180.0000dp + 180.6667dp + 181.3333dp + 182.0000dp + 182.6667dp + 183.3333dp + 184.0000dp + 184.6667dp + 185.3333dp + 186.0000dp + 186.6667dp + 187.3333dp + 188.0000dp + 188.6667dp + 189.3333dp + 190.0000dp + 190.6667dp + 191.3333dp + 192.0000dp + 192.6667dp + 193.3333dp + 194.0000dp + 194.6667dp + 195.3333dp + 196.0000dp + 196.6667dp + 197.3333dp + 198.0000dp + 198.6667dp + 199.3333dp + 200.0000dp + 200.6667dp + 201.3333dp + 202.0000dp + 202.6667dp + 203.3333dp + 204.0000dp + 204.6667dp + 205.3333dp + 206.0000dp + 206.6667dp + 207.3333dp + 208.0000dp + 208.6667dp + 209.3333dp + 210.0000dp + 210.6667dp + 211.3333dp + 212.0000dp + 212.6667dp + 213.3333dp + 214.0000dp + 214.6667dp + 215.3333dp + 216.0000dp + 216.6667dp + 217.3333dp + 218.0000dp + 218.6667dp + 219.3333dp + 220.0000dp + 220.6667dp + 221.3333dp + 222.0000dp + 222.6667dp + 223.3333dp + 224.0000dp + 224.6667dp + 225.3333dp + 226.0000dp + 226.6667dp + 227.3333dp + 228.0000dp + 228.6667dp + 229.3333dp + 230.0000dp + 230.6667dp + 231.3333dp + 232.0000dp + 232.6667dp + 233.3333dp + 234.0000dp + 234.6667dp + 235.3333dp + 236.0000dp + 236.6667dp + 237.3333dp + 238.0000dp + 238.6667dp + 239.3333dp + 240.0000dp + 243.3333dp + 246.6667dp + 266.6667dp + 273.3333dp + 281.3333dp + 314.6667dp + 333.3333dp + 400.0000dp + 426.6667dp + 480.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_sp.xml new file mode 100644 index 0000000..d9e8ec6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw240dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 4.0000sp + 4.6667sp + 5.3333sp + 6.0000sp + 6.6667sp + 7.3333sp + 8.0000sp + 8.6667sp + 9.3333sp + 10.0000sp + 10.6667sp + 11.3333sp + 12.0000sp + 12.6667sp + 13.3333sp + 14.0000sp + 14.6667sp + 15.3333sp + 16.0000sp + 16.6667sp + 18.6667sp + 20.0000sp + 21.3333sp + 22.6667sp + 24.0000sp + 25.3333sp + 26.6667sp + 28.0000sp + 32.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_dp.xml new file mode 100644 index 0000000..aee242f --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -53.3333dp + -26.6667dp + -17.7778dp + -10.6667dp + -8.8889dp + -7.1111dp + -4.4444dp + -1.7778dp + -0.8889dp + + 0.0889dp + 0.4444dp + 0.8889dp + 1.3333dp + 1.7778dp + 2.2222dp + 2.6667dp + 3.1111dp + 3.5556dp + 4.0000dp + 4.4444dp + 5.3333dp + 6.2222dp + 7.1111dp + 8.0000dp + 8.8889dp + 9.7778dp + 10.6667dp + 11.5556dp + 12.4444dp + 13.3333dp + 14.2222dp + 15.1111dp + 16.0000dp + 16.8889dp + 17.7778dp + 18.6667dp + 19.5556dp + 20.4444dp + 21.3333dp + 22.2222dp + 23.1111dp + 24.0000dp + 24.8889dp + 25.7778dp + 26.6667dp + 27.5556dp + 28.4444dp + 29.3333dp + 30.2222dp + 31.1111dp + 32.0000dp + 32.8889dp + 33.7778dp + 34.6667dp + 35.5556dp + 36.4444dp + 37.3333dp + 38.2222dp + 39.1111dp + 40.0000dp + 40.8889dp + 41.7778dp + 42.6667dp + 43.5556dp + 44.4444dp + 45.3333dp + 46.2222dp + 47.1111dp + 48.0000dp + 48.8889dp + 49.7778dp + 50.6667dp + 51.5556dp + 52.4444dp + 53.3333dp + 54.2222dp + 55.1111dp + 56.0000dp + 56.8889dp + 57.7778dp + 58.6667dp + 59.5556dp + 60.4444dp + 61.3333dp + 62.2222dp + 63.1111dp + 64.0000dp + 64.8889dp + 65.7778dp + 66.6667dp + 67.5556dp + 68.4444dp + 69.3333dp + 70.2222dp + 71.1111dp + 72.0000dp + 72.8889dp + 73.7778dp + 74.6667dp + 75.5556dp + 76.4444dp + 77.3333dp + 78.2222dp + 79.1111dp + 80.0000dp + 80.8889dp + 81.7778dp + 82.6667dp + 83.5556dp + 84.4444dp + 85.3333dp + 86.2222dp + 87.1111dp + 88.0000dp + 88.8889dp + 89.7778dp + 90.6667dp + 91.5556dp + 92.4444dp + 93.3333dp + 94.2222dp + 95.1111dp + 96.0000dp + 96.8889dp + 97.7778dp + 98.6667dp + 99.5556dp + 100.4444dp + 101.3333dp + 102.2222dp + 103.1111dp + 104.0000dp + 104.8889dp + 105.7778dp + 106.6667dp + 107.5556dp + 108.4444dp + 109.3333dp + 110.2222dp + 111.1111dp + 112.0000dp + 112.8889dp + 113.7778dp + 114.6667dp + 115.5556dp + 116.4444dp + 117.3333dp + 118.2222dp + 119.1111dp + 120.0000dp + 120.8889dp + 121.7778dp + 122.6667dp + 123.5556dp + 124.4444dp + 125.3333dp + 126.2222dp + 127.1111dp + 128.0000dp + 128.8889dp + 129.7778dp + 130.6667dp + 131.5556dp + 132.4444dp + 133.3333dp + 134.2222dp + 135.1111dp + 136.0000dp + 136.8889dp + 137.7778dp + 138.6667dp + 139.5556dp + 140.4444dp + 141.3333dp + 142.2222dp + 143.1111dp + 144.0000dp + 144.8889dp + 145.7778dp + 146.6667dp + 147.5556dp + 148.4444dp + 149.3333dp + 150.2222dp + 151.1111dp + 152.0000dp + 152.8889dp + 153.7778dp + 154.6667dp + 155.5556dp + 156.4444dp + 157.3333dp + 158.2222dp + 159.1111dp + 160.0000dp + 160.8889dp + 161.7778dp + 162.6667dp + 163.5556dp + 164.4444dp + 165.3333dp + 166.2222dp + 167.1111dp + 168.0000dp + 168.8889dp + 169.7778dp + 170.6667dp + 171.5556dp + 172.4444dp + 173.3333dp + 174.2222dp + 175.1111dp + 176.0000dp + 176.8889dp + 177.7778dp + 178.6667dp + 179.5556dp + 180.4444dp + 181.3333dp + 182.2222dp + 183.1111dp + 184.0000dp + 184.8889dp + 185.7778dp + 186.6667dp + 187.5556dp + 188.4444dp + 189.3333dp + 190.2222dp + 191.1111dp + 192.0000dp + 192.8889dp + 193.7778dp + 194.6667dp + 195.5556dp + 196.4444dp + 197.3333dp + 198.2222dp + 199.1111dp + 200.0000dp + 200.8889dp + 201.7778dp + 202.6667dp + 203.5556dp + 204.4444dp + 205.3333dp + 206.2222dp + 207.1111dp + 208.0000dp + 208.8889dp + 209.7778dp + 210.6667dp + 211.5556dp + 212.4444dp + 213.3333dp + 214.2222dp + 215.1111dp + 216.0000dp + 216.8889dp + 217.7778dp + 218.6667dp + 219.5556dp + 220.4444dp + 221.3333dp + 222.2222dp + 223.1111dp + 224.0000dp + 224.8889dp + 225.7778dp + 226.6667dp + 227.5556dp + 228.4444dp + 229.3333dp + 230.2222dp + 231.1111dp + 232.0000dp + 232.8889dp + 233.7778dp + 234.6667dp + 235.5556dp + 236.4444dp + 237.3333dp + 238.2222dp + 239.1111dp + 240.0000dp + 240.8889dp + 241.7778dp + 242.6667dp + 243.5556dp + 244.4444dp + 245.3333dp + 246.2222dp + 247.1111dp + 248.0000dp + 248.8889dp + 249.7778dp + 250.6667dp + 251.5556dp + 252.4444dp + 253.3333dp + 254.2222dp + 255.1111dp + 256.0000dp + 256.8889dp + 257.7778dp + 258.6667dp + 259.5556dp + 260.4444dp + 261.3333dp + 262.2222dp + 263.1111dp + 264.0000dp + 264.8889dp + 265.7778dp + 266.6667dp + 267.5556dp + 268.4444dp + 269.3333dp + 270.2222dp + 271.1111dp + 272.0000dp + 272.8889dp + 273.7778dp + 274.6667dp + 275.5556dp + 276.4444dp + 277.3333dp + 278.2222dp + 279.1111dp + 280.0000dp + 280.8889dp + 281.7778dp + 282.6667dp + 283.5556dp + 284.4444dp + 285.3333dp + 286.2222dp + 287.1111dp + 288.0000dp + 288.8889dp + 289.7778dp + 290.6667dp + 291.5556dp + 292.4444dp + 293.3333dp + 294.2222dp + 295.1111dp + 296.0000dp + 296.8889dp + 297.7778dp + 298.6667dp + 299.5556dp + 300.4444dp + 301.3333dp + 302.2222dp + 303.1111dp + 304.0000dp + 304.8889dp + 305.7778dp + 306.6667dp + 307.5556dp + 308.4444dp + 309.3333dp + 310.2222dp + 311.1111dp + 312.0000dp + 312.8889dp + 313.7778dp + 314.6667dp + 315.5556dp + 316.4444dp + 317.3333dp + 318.2222dp + 319.1111dp + 320.0000dp + 324.4444dp + 328.8889dp + 355.5556dp + 364.4444dp + 375.1111dp + 419.5556dp + 444.4444dp + 533.3333dp + 568.8889dp + 640.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_sp.xml new file mode 100644 index 0000000..899c3ce --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw320dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 5.3333sp + 6.2222sp + 7.1111sp + 8.0000sp + 8.8889sp + 9.7778sp + 10.6667sp + 11.5556sp + 12.4444sp + 13.3333sp + 14.2222sp + 15.1111sp + 16.0000sp + 16.8889sp + 17.7778sp + 18.6667sp + 19.5556sp + 20.4444sp + 21.3333sp + 22.2222sp + 24.8889sp + 26.6667sp + 28.4444sp + 30.2222sp + 32.0000sp + 33.7778sp + 35.5556sp + 37.3333sp + 42.6667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_dp.xml new file mode 100644 index 0000000..6aee2b1 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -60.0000dp + -30.0000dp + -20.0000dp + -12.0000dp + -10.0000dp + -8.0000dp + -5.0000dp + -2.0000dp + -1.0000dp + + 0.1000dp + 0.5000dp + 1.0000dp + 1.5000dp + 2.0000dp + 2.5000dp + 3.0000dp + 3.5000dp + 4.0000dp + 4.5000dp + 5.0000dp + 6.0000dp + 7.0000dp + 8.0000dp + 9.0000dp + 10.0000dp + 11.0000dp + 12.0000dp + 13.0000dp + 14.0000dp + 15.0000dp + 16.0000dp + 17.0000dp + 18.0000dp + 19.0000dp + 20.0000dp + 21.0000dp + 22.0000dp + 23.0000dp + 24.0000dp + 25.0000dp + 26.0000dp + 27.0000dp + 28.0000dp + 29.0000dp + 30.0000dp + 31.0000dp + 32.0000dp + 33.0000dp + 34.0000dp + 35.0000dp + 36.0000dp + 37.0000dp + 38.0000dp + 39.0000dp + 40.0000dp + 41.0000dp + 42.0000dp + 43.0000dp + 44.0000dp + 45.0000dp + 46.0000dp + 47.0000dp + 48.0000dp + 49.0000dp + 50.0000dp + 51.0000dp + 52.0000dp + 53.0000dp + 54.0000dp + 55.0000dp + 56.0000dp + 57.0000dp + 58.0000dp + 59.0000dp + 60.0000dp + 61.0000dp + 62.0000dp + 63.0000dp + 64.0000dp + 65.0000dp + 66.0000dp + 67.0000dp + 68.0000dp + 69.0000dp + 70.0000dp + 71.0000dp + 72.0000dp + 73.0000dp + 74.0000dp + 75.0000dp + 76.0000dp + 77.0000dp + 78.0000dp + 79.0000dp + 80.0000dp + 81.0000dp + 82.0000dp + 83.0000dp + 84.0000dp + 85.0000dp + 86.0000dp + 87.0000dp + 88.0000dp + 89.0000dp + 90.0000dp + 91.0000dp + 92.0000dp + 93.0000dp + 94.0000dp + 95.0000dp + 96.0000dp + 97.0000dp + 98.0000dp + 99.0000dp + 100.0000dp + 101.0000dp + 102.0000dp + 103.0000dp + 104.0000dp + 105.0000dp + 106.0000dp + 107.0000dp + 108.0000dp + 109.0000dp + 110.0000dp + 111.0000dp + 112.0000dp + 113.0000dp + 114.0000dp + 115.0000dp + 116.0000dp + 117.0000dp + 118.0000dp + 119.0000dp + 120.0000dp + 121.0000dp + 122.0000dp + 123.0000dp + 124.0000dp + 125.0000dp + 126.0000dp + 127.0000dp + 128.0000dp + 129.0000dp + 130.0000dp + 131.0000dp + 132.0000dp + 133.0000dp + 134.0000dp + 135.0000dp + 136.0000dp + 137.0000dp + 138.0000dp + 139.0000dp + 140.0000dp + 141.0000dp + 142.0000dp + 143.0000dp + 144.0000dp + 145.0000dp + 146.0000dp + 147.0000dp + 148.0000dp + 149.0000dp + 150.0000dp + 151.0000dp + 152.0000dp + 153.0000dp + 154.0000dp + 155.0000dp + 156.0000dp + 157.0000dp + 158.0000dp + 159.0000dp + 160.0000dp + 161.0000dp + 162.0000dp + 163.0000dp + 164.0000dp + 165.0000dp + 166.0000dp + 167.0000dp + 168.0000dp + 169.0000dp + 170.0000dp + 171.0000dp + 172.0000dp + 173.0000dp + 174.0000dp + 175.0000dp + 176.0000dp + 177.0000dp + 178.0000dp + 179.0000dp + 180.0000dp + 181.0000dp + 182.0000dp + 183.0000dp + 184.0000dp + 185.0000dp + 186.0000dp + 187.0000dp + 188.0000dp + 189.0000dp + 190.0000dp + 191.0000dp + 192.0000dp + 193.0000dp + 194.0000dp + 195.0000dp + 196.0000dp + 197.0000dp + 198.0000dp + 199.0000dp + 200.0000dp + 201.0000dp + 202.0000dp + 203.0000dp + 204.0000dp + 205.0000dp + 206.0000dp + 207.0000dp + 208.0000dp + 209.0000dp + 210.0000dp + 211.0000dp + 212.0000dp + 213.0000dp + 214.0000dp + 215.0000dp + 216.0000dp + 217.0000dp + 218.0000dp + 219.0000dp + 220.0000dp + 221.0000dp + 222.0000dp + 223.0000dp + 224.0000dp + 225.0000dp + 226.0000dp + 227.0000dp + 228.0000dp + 229.0000dp + 230.0000dp + 231.0000dp + 232.0000dp + 233.0000dp + 234.0000dp + 235.0000dp + 236.0000dp + 237.0000dp + 238.0000dp + 239.0000dp + 240.0000dp + 241.0000dp + 242.0000dp + 243.0000dp + 244.0000dp + 245.0000dp + 246.0000dp + 247.0000dp + 248.0000dp + 249.0000dp + 250.0000dp + 251.0000dp + 252.0000dp + 253.0000dp + 254.0000dp + 255.0000dp + 256.0000dp + 257.0000dp + 258.0000dp + 259.0000dp + 260.0000dp + 261.0000dp + 262.0000dp + 263.0000dp + 264.0000dp + 265.0000dp + 266.0000dp + 267.0000dp + 268.0000dp + 269.0000dp + 270.0000dp + 271.0000dp + 272.0000dp + 273.0000dp + 274.0000dp + 275.0000dp + 276.0000dp + 277.0000dp + 278.0000dp + 279.0000dp + 280.0000dp + 281.0000dp + 282.0000dp + 283.0000dp + 284.0000dp + 285.0000dp + 286.0000dp + 287.0000dp + 288.0000dp + 289.0000dp + 290.0000dp + 291.0000dp + 292.0000dp + 293.0000dp + 294.0000dp + 295.0000dp + 296.0000dp + 297.0000dp + 298.0000dp + 299.0000dp + 300.0000dp + 301.0000dp + 302.0000dp + 303.0000dp + 304.0000dp + 305.0000dp + 306.0000dp + 307.0000dp + 308.0000dp + 309.0000dp + 310.0000dp + 311.0000dp + 312.0000dp + 313.0000dp + 314.0000dp + 315.0000dp + 316.0000dp + 317.0000dp + 318.0000dp + 319.0000dp + 320.0000dp + 321.0000dp + 322.0000dp + 323.0000dp + 324.0000dp + 325.0000dp + 326.0000dp + 327.0000dp + 328.0000dp + 329.0000dp + 330.0000dp + 331.0000dp + 332.0000dp + 333.0000dp + 334.0000dp + 335.0000dp + 336.0000dp + 337.0000dp + 338.0000dp + 339.0000dp + 340.0000dp + 341.0000dp + 342.0000dp + 343.0000dp + 344.0000dp + 345.0000dp + 346.0000dp + 347.0000dp + 348.0000dp + 349.0000dp + 350.0000dp + 351.0000dp + 352.0000dp + 353.0000dp + 354.0000dp + 355.0000dp + 356.0000dp + 357.0000dp + 358.0000dp + 359.0000dp + 360.0000dp + 365.0000dp + 370.0000dp + 400.0000dp + 410.0000dp + 422.0000dp + 472.0000dp + 500.0000dp + 600.0000dp + 640.0000dp + 720.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_sp.xml new file mode 100644 index 0000000..9af9171 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw360dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.0000sp + 7.0000sp + 8.0000sp + 9.0000sp + 10.0000sp + 11.0000sp + 12.0000sp + 13.0000sp + 14.0000sp + 15.0000sp + 16.0000sp + 17.0000sp + 18.0000sp + 19.0000sp + 20.0000sp + 21.0000sp + 22.0000sp + 23.0000sp + 24.0000sp + 25.0000sp + 28.0000sp + 30.0000sp + 32.0000sp + 34.0000sp + 36.0000sp + 38.0000sp + 40.0000sp + 42.0000sp + 48.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_dp.xml new file mode 100644 index 0000000..801948a --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -60.3773dp + -30.1887dp + -20.1258dp + -12.0755dp + -10.0629dp + -8.0503dp + -5.0314dp + -2.0126dp + -1.0063dp + + 0.1006dp + 0.5031dp + 1.0063dp + 1.5094dp + 2.0126dp + 2.5157dp + 3.0189dp + 3.5220dp + 4.0252dp + 4.5283dp + 5.0314dp + 6.0377dp + 7.0440dp + 8.0503dp + 9.0566dp + 10.0629dp + 11.0692dp + 12.0755dp + 13.0818dp + 14.0880dp + 15.0943dp + 16.1006dp + 17.1069dp + 18.1132dp + 19.1195dp + 20.1258dp + 21.1321dp + 22.1384dp + 23.1447dp + 24.1509dp + 25.1572dp + 26.1635dp + 27.1698dp + 28.1761dp + 29.1824dp + 30.1887dp + 31.1950dp + 32.2013dp + 33.2075dp + 34.2138dp + 35.2201dp + 36.2264dp + 37.2327dp + 38.2390dp + 39.2453dp + 40.2516dp + 41.2579dp + 42.2641dp + 43.2704dp + 44.2767dp + 45.2830dp + 46.2893dp + 47.2956dp + 48.3019dp + 49.3082dp + 50.3145dp + 51.3207dp + 52.3270dp + 53.3333dp + 54.3396dp + 55.3459dp + 56.3522dp + 57.3585dp + 58.3648dp + 59.3711dp + 60.3773dp + 61.3836dp + 62.3899dp + 63.3962dp + 64.4025dp + 65.4088dp + 66.4151dp + 67.4214dp + 68.4277dp + 69.4340dp + 70.4402dp + 71.4465dp + 72.4528dp + 73.4591dp + 74.4654dp + 75.4717dp + 76.4780dp + 77.4843dp + 78.4906dp + 79.4968dp + 80.5031dp + 81.5094dp + 82.5157dp + 83.5220dp + 84.5283dp + 85.5346dp + 86.5409dp + 87.5472dp + 88.5534dp + 89.5597dp + 90.5660dp + 91.5723dp + 92.5786dp + 93.5849dp + 94.5912dp + 95.5975dp + 96.6038dp + 97.6100dp + 98.6163dp + 99.6226dp + 100.6289dp + 101.6352dp + 102.6415dp + 103.6478dp + 104.6541dp + 105.6604dp + 106.6667dp + 107.6729dp + 108.6792dp + 109.6855dp + 110.6918dp + 111.6981dp + 112.7044dp + 113.7107dp + 114.7170dp + 115.7233dp + 116.7295dp + 117.7358dp + 118.7421dp + 119.7484dp + 120.7547dp + 121.7610dp + 122.7673dp + 123.7736dp + 124.7799dp + 125.7861dp + 126.7924dp + 127.7987dp + 128.8050dp + 129.8113dp + 130.8176dp + 131.8239dp + 132.8302dp + 133.8365dp + 134.8427dp + 135.8490dp + 136.8553dp + 137.8616dp + 138.8679dp + 139.8742dp + 140.8805dp + 141.8868dp + 142.8931dp + 143.8994dp + 144.9056dp + 145.9119dp + 146.9182dp + 147.9245dp + 148.9308dp + 149.9371dp + 150.9434dp + 151.9497dp + 152.9560dp + 153.9622dp + 154.9685dp + 155.9748dp + 156.9811dp + 157.9874dp + 158.9937dp + 160.0000dp + 161.0063dp + 162.0126dp + 163.0188dp + 164.0251dp + 165.0314dp + 166.0377dp + 167.0440dp + 168.0503dp + 169.0566dp + 170.0629dp + 171.0692dp + 172.0754dp + 173.0817dp + 174.0880dp + 175.0943dp + 176.1006dp + 177.1069dp + 178.1132dp + 179.1195dp + 180.1258dp + 181.1320dp + 182.1383dp + 183.1446dp + 184.1509dp + 185.1572dp + 186.1635dp + 187.1698dp + 188.1761dp + 189.1824dp + 190.1887dp + 191.1949dp + 192.2012dp + 193.2075dp + 194.2138dp + 195.2201dp + 196.2264dp + 197.2327dp + 198.2390dp + 199.2453dp + 200.2515dp + 201.2578dp + 202.2641dp + 203.2704dp + 204.2767dp + 205.2830dp + 206.2893dp + 207.2956dp + 208.3019dp + 209.3081dp + 210.3144dp + 211.3207dp + 212.3270dp + 213.3333dp + 214.3396dp + 215.3459dp + 216.3522dp + 217.3585dp + 218.3647dp + 219.3710dp + 220.3773dp + 221.3836dp + 222.3899dp + 223.3962dp + 224.4025dp + 225.4088dp + 226.4151dp + 227.4214dp + 228.4276dp + 229.4339dp + 230.4402dp + 231.4465dp + 232.4528dp + 233.4591dp + 234.4654dp + 235.4717dp + 236.4780dp + 237.4842dp + 238.4905dp + 239.4968dp + 240.5031dp + 241.5094dp + 242.5157dp + 243.5220dp + 244.5283dp + 245.5346dp + 246.5408dp + 247.5471dp + 248.5534dp + 249.5597dp + 250.5660dp + 251.5723dp + 252.5786dp + 253.5849dp + 254.5912dp + 255.5974dp + 256.6037dp + 257.6100dp + 258.6163dp + 259.6226dp + 260.6289dp + 261.6352dp + 262.6415dp + 263.6478dp + 264.6541dp + 265.6603dp + 266.6666dp + 267.6729dp + 268.6792dp + 269.6855dp + 270.6918dp + 271.6981dp + 272.7044dp + 273.7107dp + 274.7169dp + 275.7232dp + 276.7295dp + 277.7358dp + 278.7421dp + 279.7484dp + 280.7547dp + 281.7610dp + 282.7673dp + 283.7735dp + 284.7798dp + 285.7861dp + 286.7924dp + 287.7987dp + 288.8050dp + 289.8113dp + 290.8176dp + 291.8239dp + 292.8301dp + 293.8364dp + 294.8427dp + 295.8490dp + 296.8553dp + 297.8616dp + 298.8679dp + 299.8742dp + 300.8805dp + 301.8868dp + 302.8930dp + 303.8993dp + 304.9056dp + 305.9119dp + 306.9182dp + 307.9245dp + 308.9308dp + 309.9371dp + 310.9434dp + 311.9496dp + 312.9559dp + 313.9622dp + 314.9685dp + 315.9748dp + 316.9811dp + 317.9874dp + 318.9937dp + 320.0000dp + 321.0062dp + 322.0125dp + 323.0188dp + 324.0251dp + 325.0314dp + 326.0377dp + 327.0440dp + 328.0503dp + 329.0566dp + 330.0628dp + 331.0691dp + 332.0754dp + 333.0817dp + 334.0880dp + 335.0943dp + 336.1006dp + 337.1069dp + 338.1132dp + 339.1194dp + 340.1257dp + 341.1320dp + 342.1383dp + 343.1446dp + 344.1509dp + 345.1572dp + 346.1635dp + 347.1698dp + 348.1761dp + 349.1823dp + 350.1886dp + 351.1949dp + 352.2012dp + 353.2075dp + 354.2138dp + 355.2201dp + 356.2264dp + 357.2327dp + 358.2389dp + 359.2452dp + 360.2515dp + 361.2578dp + 362.2641dp + 367.2955dp + 372.3270dp + 402.5157dp + 412.5786dp + 424.6540dp + 474.9685dp + 503.1446dp + 603.7735dp + 644.0251dp + 724.5282dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_sp.xml new file mode 100644 index 0000000..61137a0 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw362dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.0377sp + 7.0440sp + 8.0503sp + 9.0566sp + 10.0629sp + 11.0692sp + 12.0755sp + 13.0818sp + 14.0880sp + 15.0943sp + 16.1006sp + 17.1069sp + 18.1132sp + 19.1195sp + 20.1258sp + 21.1321sp + 22.1384sp + 23.1447sp + 24.1509sp + 25.1572sp + 28.1761sp + 30.1887sp + 32.2013sp + 34.2138sp + 36.2264sp + 38.2390sp + 40.2516sp + 42.2641sp + 48.3019sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_dp.xml new file mode 100644 index 0000000..6d8b3a6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -64.0000dp + -32.0000dp + -21.3333dp + -12.8000dp + -10.6667dp + -8.5333dp + -5.3333dp + -2.1333dp + -1.0667dp + + 0.1067dp + 0.5333dp + 1.0667dp + 1.6000dp + 2.1333dp + 2.6667dp + 3.2000dp + 3.7333dp + 4.2667dp + 4.8000dp + 5.3333dp + 6.4000dp + 7.4667dp + 8.5333dp + 9.6000dp + 10.6667dp + 11.7333dp + 12.8000dp + 13.8667dp + 14.9333dp + 16.0000dp + 17.0667dp + 18.1333dp + 19.2000dp + 20.2667dp + 21.3333dp + 22.4000dp + 23.4667dp + 24.5333dp + 25.6000dp + 26.6667dp + 27.7333dp + 28.8000dp + 29.8667dp + 30.9333dp + 32.0000dp + 33.0667dp + 34.1333dp + 35.2000dp + 36.2667dp + 37.3333dp + 38.4000dp + 39.4667dp + 40.5333dp + 41.6000dp + 42.6667dp + 43.7333dp + 44.8000dp + 45.8667dp + 46.9333dp + 48.0000dp + 49.0667dp + 50.1333dp + 51.2000dp + 52.2667dp + 53.3333dp + 54.4000dp + 55.4667dp + 56.5333dp + 57.6000dp + 58.6667dp + 59.7333dp + 60.8000dp + 61.8667dp + 62.9333dp + 64.0000dp + 65.0667dp + 66.1333dp + 67.2000dp + 68.2667dp + 69.3333dp + 70.4000dp + 71.4667dp + 72.5333dp + 73.6000dp + 74.6667dp + 75.7333dp + 76.8000dp + 77.8667dp + 78.9333dp + 80.0000dp + 81.0667dp + 82.1333dp + 83.2000dp + 84.2667dp + 85.3333dp + 86.4000dp + 87.4667dp + 88.5333dp + 89.6000dp + 90.6667dp + 91.7333dp + 92.8000dp + 93.8667dp + 94.9333dp + 96.0000dp + 97.0667dp + 98.1333dp + 99.2000dp + 100.2667dp + 101.3333dp + 102.4000dp + 103.4667dp + 104.5333dp + 105.6000dp + 106.6667dp + 107.7333dp + 108.8000dp + 109.8667dp + 110.9333dp + 112.0000dp + 113.0667dp + 114.1333dp + 115.2000dp + 116.2667dp + 117.3333dp + 118.4000dp + 119.4667dp + 120.5333dp + 121.6000dp + 122.6667dp + 123.7333dp + 124.8000dp + 125.8667dp + 126.9333dp + 128.0000dp + 129.0667dp + 130.1333dp + 131.2000dp + 132.2667dp + 133.3333dp + 134.4000dp + 135.4667dp + 136.5333dp + 137.6000dp + 138.6667dp + 139.7333dp + 140.8000dp + 141.8667dp + 142.9333dp + 144.0000dp + 145.0667dp + 146.1333dp + 147.2000dp + 148.2667dp + 149.3333dp + 150.4000dp + 151.4667dp + 152.5333dp + 153.6000dp + 154.6667dp + 155.7333dp + 156.8000dp + 157.8667dp + 158.9333dp + 160.0000dp + 161.0667dp + 162.1333dp + 163.2000dp + 164.2667dp + 165.3333dp + 166.4000dp + 167.4667dp + 168.5333dp + 169.6000dp + 170.6667dp + 171.7333dp + 172.8000dp + 173.8667dp + 174.9333dp + 176.0000dp + 177.0667dp + 178.1333dp + 179.2000dp + 180.2667dp + 181.3333dp + 182.4000dp + 183.4667dp + 184.5333dp + 185.6000dp + 186.6667dp + 187.7333dp + 188.8000dp + 189.8667dp + 190.9333dp + 192.0000dp + 193.0667dp + 194.1333dp + 195.2000dp + 196.2667dp + 197.3333dp + 198.4000dp + 199.4667dp + 200.5333dp + 201.6000dp + 202.6667dp + 203.7333dp + 204.8000dp + 205.8667dp + 206.9333dp + 208.0000dp + 209.0667dp + 210.1333dp + 211.2000dp + 212.2667dp + 213.3333dp + 214.4000dp + 215.4667dp + 216.5333dp + 217.6000dp + 218.6667dp + 219.7333dp + 220.8000dp + 221.8667dp + 222.9333dp + 224.0000dp + 225.0667dp + 226.1333dp + 227.2000dp + 228.2667dp + 229.3333dp + 230.4000dp + 231.4667dp + 232.5333dp + 233.6000dp + 234.6667dp + 235.7333dp + 236.8000dp + 237.8667dp + 238.9333dp + 240.0000dp + 241.0667dp + 242.1333dp + 243.2000dp + 244.2667dp + 245.3333dp + 246.4000dp + 247.4667dp + 248.5333dp + 249.6000dp + 250.6667dp + 251.7333dp + 252.8000dp + 253.8667dp + 254.9333dp + 256.0000dp + 257.0667dp + 258.1333dp + 259.2000dp + 260.2667dp + 261.3333dp + 262.4000dp + 263.4667dp + 264.5333dp + 265.6000dp + 266.6667dp + 267.7333dp + 268.8000dp + 269.8667dp + 270.9333dp + 272.0000dp + 273.0667dp + 274.1333dp + 275.2000dp + 276.2667dp + 277.3333dp + 278.4000dp + 279.4667dp + 280.5333dp + 281.6000dp + 282.6667dp + 283.7333dp + 284.8000dp + 285.8667dp + 286.9333dp + 288.0000dp + 289.0667dp + 290.1333dp + 291.2000dp + 292.2667dp + 293.3333dp + 294.4000dp + 295.4667dp + 296.5333dp + 297.6000dp + 298.6667dp + 299.7333dp + 300.8000dp + 301.8667dp + 302.9333dp + 304.0000dp + 305.0667dp + 306.1333dp + 307.2000dp + 308.2667dp + 309.3333dp + 310.4000dp + 311.4667dp + 312.5333dp + 313.6000dp + 314.6667dp + 315.7333dp + 316.8000dp + 317.8667dp + 318.9333dp + 320.0000dp + 321.0667dp + 322.1333dp + 323.2000dp + 324.2667dp + 325.3333dp + 326.4000dp + 327.4667dp + 328.5333dp + 329.6000dp + 330.6667dp + 331.7333dp + 332.8000dp + 333.8667dp + 334.9333dp + 336.0000dp + 337.0667dp + 338.1333dp + 339.2000dp + 340.2667dp + 341.3333dp + 342.4000dp + 343.4667dp + 344.5333dp + 345.6000dp + 346.6667dp + 347.7333dp + 348.8000dp + 349.8667dp + 350.9333dp + 352.0000dp + 353.0667dp + 354.1333dp + 355.2000dp + 356.2667dp + 357.3333dp + 358.4000dp + 359.4667dp + 360.5333dp + 361.6000dp + 362.6667dp + 363.7333dp + 364.8000dp + 365.8667dp + 366.9333dp + 368.0000dp + 369.0667dp + 370.1333dp + 371.2000dp + 372.2667dp + 373.3333dp + 374.4000dp + 375.4667dp + 376.5333dp + 377.6000dp + 378.6667dp + 379.7333dp + 380.8000dp + 381.8667dp + 382.9333dp + 384.0000dp + 389.3333dp + 394.6667dp + 426.6667dp + 437.3333dp + 450.1333dp + 503.4667dp + 533.3333dp + 640.0000dp + 682.6667dp + 768.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_sp.xml new file mode 100644 index 0000000..47c5af6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw384dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.4000sp + 7.4667sp + 8.5333sp + 9.6000sp + 10.6667sp + 11.7333sp + 12.8000sp + 13.8667sp + 14.9333sp + 16.0000sp + 17.0667sp + 18.1333sp + 19.2000sp + 20.2667sp + 21.3333sp + 22.4000sp + 23.4667sp + 24.5333sp + 25.6000sp + 26.6667sp + 29.8667sp + 32.0000sp + 34.1333sp + 36.2667sp + 38.4000sp + 40.5333sp + 42.6667sp + 44.8000sp + 51.2000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_dp.xml new file mode 100644 index 0000000..45357c0 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -65.4545dp + -32.7273dp + -21.8182dp + -13.0909dp + -10.9091dp + -8.7273dp + -5.4545dp + -2.1818dp + -1.0909dp + + 0.1091dp + 0.5455dp + 1.0909dp + 1.6364dp + 2.1818dp + 2.7273dp + 3.2727dp + 3.8182dp + 4.3636dp + 4.9091dp + 5.4545dp + 6.5455dp + 7.6364dp + 8.7273dp + 9.8182dp + 10.9091dp + 12.0000dp + 13.0909dp + 14.1818dp + 15.2727dp + 16.3636dp + 17.4545dp + 18.5455dp + 19.6364dp + 20.7273dp + 21.8182dp + 22.9091dp + 24.0000dp + 25.0909dp + 26.1818dp + 27.2727dp + 28.3636dp + 29.4545dp + 30.5454dp + 31.6364dp + 32.7273dp + 33.8182dp + 34.9091dp + 36.0000dp + 37.0909dp + 38.1818dp + 39.2727dp + 40.3636dp + 41.4545dp + 42.5454dp + 43.6364dp + 44.7273dp + 45.8182dp + 46.9091dp + 48.0000dp + 49.0909dp + 50.1818dp + 51.2727dp + 52.3636dp + 53.4545dp + 54.5454dp + 55.6364dp + 56.7273dp + 57.8182dp + 58.9091dp + 60.0000dp + 61.0909dp + 62.1818dp + 63.2727dp + 64.3636dp + 65.4545dp + 66.5454dp + 67.6364dp + 68.7273dp + 69.8182dp + 70.9091dp + 72.0000dp + 73.0909dp + 74.1818dp + 75.2727dp + 76.3636dp + 77.4545dp + 78.5454dp + 79.6363dp + 80.7273dp + 81.8182dp + 82.9091dp + 84.0000dp + 85.0909dp + 86.1818dp + 87.2727dp + 88.3636dp + 89.4545dp + 90.5454dp + 91.6363dp + 92.7273dp + 93.8182dp + 94.9091dp + 96.0000dp + 97.0909dp + 98.1818dp + 99.2727dp + 100.3636dp + 101.4545dp + 102.5454dp + 103.6363dp + 104.7273dp + 105.8182dp + 106.9091dp + 108.0000dp + 109.0909dp + 110.1818dp + 111.2727dp + 112.3636dp + 113.4545dp + 114.5454dp + 115.6363dp + 116.7273dp + 117.8182dp + 118.9091dp + 120.0000dp + 121.0909dp + 122.1818dp + 123.2727dp + 124.3636dp + 125.4545dp + 126.5454dp + 127.6363dp + 128.7272dp + 129.8182dp + 130.9091dp + 132.0000dp + 133.0909dp + 134.1818dp + 135.2727dp + 136.3636dp + 137.4545dp + 138.5454dp + 139.6363dp + 140.7272dp + 141.8182dp + 142.9091dp + 144.0000dp + 145.0909dp + 146.1818dp + 147.2727dp + 148.3636dp + 149.4545dp + 150.5454dp + 151.6363dp + 152.7272dp + 153.8182dp + 154.9091dp + 156.0000dp + 157.0909dp + 158.1818dp + 159.2727dp + 160.3636dp + 161.4545dp + 162.5454dp + 163.6363dp + 164.7272dp + 165.8182dp + 166.9091dp + 168.0000dp + 169.0909dp + 170.1818dp + 171.2727dp + 172.3636dp + 173.4545dp + 174.5454dp + 175.6363dp + 176.7272dp + 177.8181dp + 178.9091dp + 180.0000dp + 181.0909dp + 182.1818dp + 183.2727dp + 184.3636dp + 185.4545dp + 186.5454dp + 187.6363dp + 188.7272dp + 189.8181dp + 190.9091dp + 192.0000dp + 193.0909dp + 194.1818dp + 195.2727dp + 196.3636dp + 197.4545dp + 198.5454dp + 199.6363dp + 200.7272dp + 201.8181dp + 202.9091dp + 204.0000dp + 205.0909dp + 206.1818dp + 207.2727dp + 208.3636dp + 209.4545dp + 210.5454dp + 211.6363dp + 212.7272dp + 213.8181dp + 214.9091dp + 216.0000dp + 217.0909dp + 218.1818dp + 219.2727dp + 220.3636dp + 221.4545dp + 222.5454dp + 223.6363dp + 224.7272dp + 225.8181dp + 226.9090dp + 228.0000dp + 229.0909dp + 230.1818dp + 231.2727dp + 232.3636dp + 233.4545dp + 234.5454dp + 235.6363dp + 236.7272dp + 237.8181dp + 238.9090dp + 240.0000dp + 241.0909dp + 242.1818dp + 243.2727dp + 244.3636dp + 245.4545dp + 246.5454dp + 247.6363dp + 248.7272dp + 249.8181dp + 250.9090dp + 252.0000dp + 253.0909dp + 254.1818dp + 255.2727dp + 256.3636dp + 257.4545dp + 258.5454dp + 259.6363dp + 260.7272dp + 261.8181dp + 262.9090dp + 264.0000dp + 265.0909dp + 266.1818dp + 267.2727dp + 268.3636dp + 269.4545dp + 270.5454dp + 271.6363dp + 272.7272dp + 273.8181dp + 274.9090dp + 275.9999dp + 277.0909dp + 278.1818dp + 279.2727dp + 280.3636dp + 281.4545dp + 282.5454dp + 283.6363dp + 284.7272dp + 285.8181dp + 286.9090dp + 287.9999dp + 289.0909dp + 290.1818dp + 291.2727dp + 292.3636dp + 293.4545dp + 294.5454dp + 295.6363dp + 296.7272dp + 297.8181dp + 298.9090dp + 299.9999dp + 301.0909dp + 302.1818dp + 303.2727dp + 304.3636dp + 305.4545dp + 306.5454dp + 307.6363dp + 308.7272dp + 309.8181dp + 310.9090dp + 311.9999dp + 313.0909dp + 314.1818dp + 315.2727dp + 316.3636dp + 317.4545dp + 318.5454dp + 319.6363dp + 320.7272dp + 321.8181dp + 322.9090dp + 323.9999dp + 325.0908dp + 326.1818dp + 327.2727dp + 328.3636dp + 329.4545dp + 330.5454dp + 331.6363dp + 332.7272dp + 333.8181dp + 334.9090dp + 335.9999dp + 337.0908dp + 338.1818dp + 339.2727dp + 340.3636dp + 341.4545dp + 342.5454dp + 343.6363dp + 344.7272dp + 345.8181dp + 346.9090dp + 347.9999dp + 349.0908dp + 350.1818dp + 351.2727dp + 352.3636dp + 353.4545dp + 354.5454dp + 355.6363dp + 356.7272dp + 357.8181dp + 358.9090dp + 359.9999dp + 361.0908dp + 362.1818dp + 363.2727dp + 364.3636dp + 365.4545dp + 366.5454dp + 367.6363dp + 368.7272dp + 369.8181dp + 370.9090dp + 371.9999dp + 373.0908dp + 374.1817dp + 375.2727dp + 376.3636dp + 377.4545dp + 378.5454dp + 379.6363dp + 380.7272dp + 381.8181dp + 382.9090dp + 383.9999dp + 385.0908dp + 386.1817dp + 387.2727dp + 388.3636dp + 389.4545dp + 390.5454dp + 391.6363dp + 392.7272dp + 398.1817dp + 403.6363dp + 436.3636dp + 447.2726dp + 460.3636dp + 514.9090dp + 545.4544dp + 654.5453dp + 698.1817dp + 785.4544dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_sp.xml new file mode 100644 index 0000000..f9156eb --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw392dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.5455sp + 7.6364sp + 8.7273sp + 9.8182sp + 10.9091sp + 12.0000sp + 13.0909sp + 14.1818sp + 15.2727sp + 16.3636sp + 17.4545sp + 18.5455sp + 19.6364sp + 20.7273sp + 21.8182sp + 22.9091sp + 24.0000sp + 25.0909sp + 26.1818sp + 27.2727sp + 30.5454sp + 32.7273sp + 34.9091sp + 37.0909sp + 39.2727sp + 41.4545sp + 43.6364sp + 45.8182sp + 52.3636sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_dp.xml new file mode 100644 index 0000000..8428cbc --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -66.6667dp + -33.3333dp + -22.2222dp + -13.3333dp + -11.1111dp + -8.8889dp + -5.5556dp + -2.2222dp + -1.1111dp + + 0.1111dp + 0.5556dp + 1.1111dp + 1.6667dp + 2.2222dp + 2.7778dp + 3.3333dp + 3.8889dp + 4.4444dp + 5.0000dp + 5.5556dp + 6.6667dp + 7.7778dp + 8.8889dp + 10.0000dp + 11.1111dp + 12.2222dp + 13.3333dp + 14.4444dp + 15.5556dp + 16.6667dp + 17.7778dp + 18.8889dp + 20.0000dp + 21.1111dp + 22.2222dp + 23.3333dp + 24.4444dp + 25.5556dp + 26.6667dp + 27.7778dp + 28.8889dp + 30.0000dp + 31.1111dp + 32.2222dp + 33.3333dp + 34.4444dp + 35.5556dp + 36.6667dp + 37.7778dp + 38.8889dp + 40.0000dp + 41.1111dp + 42.2222dp + 43.3333dp + 44.4444dp + 45.5556dp + 46.6667dp + 47.7778dp + 48.8889dp + 50.0000dp + 51.1111dp + 52.2222dp + 53.3333dp + 54.4444dp + 55.5556dp + 56.6667dp + 57.7778dp + 58.8889dp + 60.0000dp + 61.1111dp + 62.2222dp + 63.3333dp + 64.4444dp + 65.5556dp + 66.6667dp + 67.7778dp + 68.8889dp + 70.0000dp + 71.1111dp + 72.2222dp + 73.3333dp + 74.4444dp + 75.5556dp + 76.6667dp + 77.7778dp + 78.8889dp + 80.0000dp + 81.1111dp + 82.2222dp + 83.3333dp + 84.4444dp + 85.5556dp + 86.6667dp + 87.7778dp + 88.8889dp + 90.0000dp + 91.1111dp + 92.2222dp + 93.3333dp + 94.4444dp + 95.5556dp + 96.6667dp + 97.7778dp + 98.8889dp + 100.0000dp + 101.1111dp + 102.2222dp + 103.3333dp + 104.4444dp + 105.5556dp + 106.6667dp + 107.7778dp + 108.8889dp + 110.0000dp + 111.1111dp + 112.2222dp + 113.3333dp + 114.4444dp + 115.5556dp + 116.6667dp + 117.7778dp + 118.8889dp + 120.0000dp + 121.1111dp + 122.2222dp + 123.3333dp + 124.4444dp + 125.5556dp + 126.6667dp + 127.7778dp + 128.8889dp + 130.0000dp + 131.1111dp + 132.2222dp + 133.3333dp + 134.4444dp + 135.5556dp + 136.6667dp + 137.7778dp + 138.8889dp + 140.0000dp + 141.1111dp + 142.2222dp + 143.3333dp + 144.4444dp + 145.5556dp + 146.6667dp + 147.7778dp + 148.8889dp + 150.0000dp + 151.1111dp + 152.2222dp + 153.3333dp + 154.4444dp + 155.5556dp + 156.6667dp + 157.7778dp + 158.8889dp + 160.0000dp + 161.1111dp + 162.2222dp + 163.3333dp + 164.4444dp + 165.5556dp + 166.6667dp + 167.7778dp + 168.8889dp + 170.0000dp + 171.1111dp + 172.2222dp + 173.3333dp + 174.4444dp + 175.5556dp + 176.6667dp + 177.7778dp + 178.8889dp + 180.0000dp + 181.1111dp + 182.2222dp + 183.3333dp + 184.4444dp + 185.5556dp + 186.6667dp + 187.7778dp + 188.8889dp + 190.0000dp + 191.1111dp + 192.2222dp + 193.3333dp + 194.4444dp + 195.5556dp + 196.6667dp + 197.7778dp + 198.8889dp + 200.0000dp + 201.1111dp + 202.2222dp + 203.3333dp + 204.4444dp + 205.5556dp + 206.6667dp + 207.7778dp + 208.8889dp + 210.0000dp + 211.1111dp + 212.2222dp + 213.3333dp + 214.4444dp + 215.5556dp + 216.6667dp + 217.7778dp + 218.8889dp + 220.0000dp + 221.1111dp + 222.2222dp + 223.3333dp + 224.4444dp + 225.5556dp + 226.6667dp + 227.7778dp + 228.8889dp + 230.0000dp + 231.1111dp + 232.2222dp + 233.3333dp + 234.4444dp + 235.5556dp + 236.6667dp + 237.7778dp + 238.8889dp + 240.0000dp + 241.1111dp + 242.2222dp + 243.3333dp + 244.4444dp + 245.5556dp + 246.6667dp + 247.7778dp + 248.8889dp + 250.0000dp + 251.1111dp + 252.2222dp + 253.3333dp + 254.4444dp + 255.5556dp + 256.6667dp + 257.7778dp + 258.8889dp + 260.0000dp + 261.1111dp + 262.2222dp + 263.3333dp + 264.4444dp + 265.5556dp + 266.6667dp + 267.7778dp + 268.8889dp + 270.0000dp + 271.1111dp + 272.2222dp + 273.3333dp + 274.4444dp + 275.5556dp + 276.6667dp + 277.7778dp + 278.8889dp + 280.0000dp + 281.1111dp + 282.2222dp + 283.3333dp + 284.4444dp + 285.5556dp + 286.6667dp + 287.7778dp + 288.8889dp + 290.0000dp + 291.1111dp + 292.2222dp + 293.3333dp + 294.4444dp + 295.5556dp + 296.6667dp + 297.7778dp + 298.8889dp + 300.0000dp + 301.1111dp + 302.2222dp + 303.3333dp + 304.4444dp + 305.5556dp + 306.6667dp + 307.7778dp + 308.8889dp + 310.0000dp + 311.1111dp + 312.2222dp + 313.3333dp + 314.4444dp + 315.5556dp + 316.6667dp + 317.7778dp + 318.8889dp + 320.0000dp + 321.1111dp + 322.2222dp + 323.3333dp + 324.4444dp + 325.5556dp + 326.6667dp + 327.7778dp + 328.8889dp + 330.0000dp + 331.1111dp + 332.2222dp + 333.3333dp + 334.4444dp + 335.5556dp + 336.6667dp + 337.7778dp + 338.8889dp + 340.0000dp + 341.1111dp + 342.2222dp + 343.3333dp + 344.4444dp + 345.5556dp + 346.6667dp + 347.7778dp + 348.8889dp + 350.0000dp + 351.1111dp + 352.2222dp + 353.3333dp + 354.4444dp + 355.5556dp + 356.6667dp + 357.7778dp + 358.8889dp + 360.0000dp + 361.1111dp + 362.2222dp + 363.3333dp + 364.4444dp + 365.5556dp + 366.6667dp + 367.7778dp + 368.8889dp + 370.0000dp + 371.1111dp + 372.2222dp + 373.3333dp + 374.4444dp + 375.5556dp + 376.6667dp + 377.7778dp + 378.8889dp + 380.0000dp + 381.1111dp + 382.2222dp + 383.3333dp + 384.4444dp + 385.5556dp + 386.6667dp + 387.7778dp + 388.8889dp + 390.0000dp + 391.1111dp + 392.2222dp + 393.3333dp + 394.4444dp + 395.5556dp + 396.6667dp + 397.7778dp + 398.8889dp + 400.0000dp + 405.5556dp + 411.1111dp + 444.4444dp + 455.5556dp + 468.8889dp + 524.4444dp + 555.5556dp + 666.6667dp + 711.1111dp + 800.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_sp.xml new file mode 100644 index 0000000..f4f031b --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw400dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.6667sp + 7.7778sp + 8.8889sp + 10.0000sp + 11.1111sp + 12.2222sp + 13.3333sp + 14.4444sp + 15.5556sp + 16.6667sp + 17.7778sp + 18.8889sp + 20.0000sp + 21.1111sp + 22.2222sp + 23.3333sp + 24.4444sp + 25.5556sp + 26.6667sp + 27.7778sp + 31.1111sp + 33.3333sp + 35.5556sp + 37.7778sp + 40.0000sp + 42.2222sp + 44.4444sp + 46.6667sp + 53.3333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_dp.xml new file mode 100644 index 0000000..152eef9 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -68.3333dp + -34.1667dp + -22.7778dp + -13.6667dp + -11.3889dp + -9.1111dp + -5.6944dp + -2.2778dp + -1.1389dp + + 0.1139dp + 0.5694dp + 1.1389dp + 1.7083dp + 2.2778dp + 2.8472dp + 3.4167dp + 3.9861dp + 4.5556dp + 5.1250dp + 5.6944dp + 6.8333dp + 7.9722dp + 9.1111dp + 10.2500dp + 11.3889dp + 12.5278dp + 13.6667dp + 14.8056dp + 15.9444dp + 17.0833dp + 18.2222dp + 19.3611dp + 20.5000dp + 21.6389dp + 22.7778dp + 23.9167dp + 25.0556dp + 26.1944dp + 27.3333dp + 28.4722dp + 29.6111dp + 30.7500dp + 31.8889dp + 33.0278dp + 34.1667dp + 35.3056dp + 36.4444dp + 37.5833dp + 38.7222dp + 39.8611dp + 41.0000dp + 42.1389dp + 43.2778dp + 44.4167dp + 45.5556dp + 46.6944dp + 47.8333dp + 48.9722dp + 50.1111dp + 51.2500dp + 52.3889dp + 53.5278dp + 54.6667dp + 55.8056dp + 56.9444dp + 58.0833dp + 59.2222dp + 60.3611dp + 61.5000dp + 62.6389dp + 63.7778dp + 64.9167dp + 66.0556dp + 67.1944dp + 68.3333dp + 69.4722dp + 70.6111dp + 71.7500dp + 72.8889dp + 74.0278dp + 75.1667dp + 76.3056dp + 77.4444dp + 78.5833dp + 79.7222dp + 80.8611dp + 82.0000dp + 83.1389dp + 84.2778dp + 85.4167dp + 86.5556dp + 87.6944dp + 88.8333dp + 89.9722dp + 91.1111dp + 92.2500dp + 93.3889dp + 94.5278dp + 95.6667dp + 96.8056dp + 97.9444dp + 99.0833dp + 100.2222dp + 101.3611dp + 102.5000dp + 103.6389dp + 104.7778dp + 105.9167dp + 107.0556dp + 108.1944dp + 109.3333dp + 110.4722dp + 111.6111dp + 112.7500dp + 113.8889dp + 115.0278dp + 116.1667dp + 117.3056dp + 118.4444dp + 119.5833dp + 120.7222dp + 121.8611dp + 123.0000dp + 124.1389dp + 125.2778dp + 126.4167dp + 127.5556dp + 128.6944dp + 129.8333dp + 130.9722dp + 132.1111dp + 133.2500dp + 134.3889dp + 135.5278dp + 136.6667dp + 137.8056dp + 138.9444dp + 140.0833dp + 141.2222dp + 142.3611dp + 143.5000dp + 144.6389dp + 145.7778dp + 146.9167dp + 148.0556dp + 149.1944dp + 150.3333dp + 151.4722dp + 152.6111dp + 153.7500dp + 154.8889dp + 156.0278dp + 157.1667dp + 158.3056dp + 159.4444dp + 160.5833dp + 161.7222dp + 162.8611dp + 164.0000dp + 165.1389dp + 166.2778dp + 167.4167dp + 168.5556dp + 169.6944dp + 170.8333dp + 171.9722dp + 173.1111dp + 174.2500dp + 175.3889dp + 176.5278dp + 177.6667dp + 178.8056dp + 179.9444dp + 181.0833dp + 182.2222dp + 183.3611dp + 184.5000dp + 185.6389dp + 186.7778dp + 187.9167dp + 189.0556dp + 190.1944dp + 191.3333dp + 192.4722dp + 193.6111dp + 194.7500dp + 195.8889dp + 197.0278dp + 198.1667dp + 199.3056dp + 200.4444dp + 201.5833dp + 202.7222dp + 203.8611dp + 205.0000dp + 206.1389dp + 207.2778dp + 208.4167dp + 209.5556dp + 210.6944dp + 211.8333dp + 212.9722dp + 214.1111dp + 215.2500dp + 216.3889dp + 217.5278dp + 218.6667dp + 219.8056dp + 220.9444dp + 222.0833dp + 223.2222dp + 224.3611dp + 225.5000dp + 226.6389dp + 227.7778dp + 228.9167dp + 230.0556dp + 231.1944dp + 232.3333dp + 233.4722dp + 234.6111dp + 235.7500dp + 236.8889dp + 238.0278dp + 239.1667dp + 240.3056dp + 241.4444dp + 242.5833dp + 243.7222dp + 244.8611dp + 246.0000dp + 247.1389dp + 248.2778dp + 249.4167dp + 250.5556dp + 251.6944dp + 252.8333dp + 253.9722dp + 255.1111dp + 256.2500dp + 257.3889dp + 258.5278dp + 259.6667dp + 260.8056dp + 261.9444dp + 263.0833dp + 264.2222dp + 265.3611dp + 266.5000dp + 267.6389dp + 268.7778dp + 269.9167dp + 271.0556dp + 272.1944dp + 273.3333dp + 274.4722dp + 275.6111dp + 276.7500dp + 277.8889dp + 279.0278dp + 280.1667dp + 281.3056dp + 282.4444dp + 283.5833dp + 284.7222dp + 285.8611dp + 287.0000dp + 288.1389dp + 289.2778dp + 290.4167dp + 291.5556dp + 292.6944dp + 293.8333dp + 294.9722dp + 296.1111dp + 297.2500dp + 298.3889dp + 299.5278dp + 300.6667dp + 301.8056dp + 302.9444dp + 304.0833dp + 305.2222dp + 306.3611dp + 307.5000dp + 308.6389dp + 309.7778dp + 310.9167dp + 312.0556dp + 313.1944dp + 314.3333dp + 315.4722dp + 316.6111dp + 317.7500dp + 318.8889dp + 320.0278dp + 321.1667dp + 322.3056dp + 323.4444dp + 324.5833dp + 325.7222dp + 326.8611dp + 328.0000dp + 329.1389dp + 330.2778dp + 331.4167dp + 332.5556dp + 333.6944dp + 334.8333dp + 335.9722dp + 337.1111dp + 338.2500dp + 339.3889dp + 340.5278dp + 341.6667dp + 342.8056dp + 343.9444dp + 345.0833dp + 346.2222dp + 347.3611dp + 348.5000dp + 349.6389dp + 350.7778dp + 351.9167dp + 353.0556dp + 354.1944dp + 355.3333dp + 356.4722dp + 357.6111dp + 358.7500dp + 359.8889dp + 361.0278dp + 362.1667dp + 363.3056dp + 364.4444dp + 365.5833dp + 366.7222dp + 367.8611dp + 369.0000dp + 370.1389dp + 371.2778dp + 372.4167dp + 373.5556dp + 374.6944dp + 375.8333dp + 376.9722dp + 378.1111dp + 379.2500dp + 380.3889dp + 381.5278dp + 382.6667dp + 383.8056dp + 384.9444dp + 386.0833dp + 387.2222dp + 388.3611dp + 389.5000dp + 390.6389dp + 391.7778dp + 392.9167dp + 394.0556dp + 395.1944dp + 396.3333dp + 397.4722dp + 398.6111dp + 399.7500dp + 400.8889dp + 402.0278dp + 403.1667dp + 404.3056dp + 405.4444dp + 406.5833dp + 407.7222dp + 408.8611dp + 410.0000dp + 415.6944dp + 421.3889dp + 455.5556dp + 466.9444dp + 480.6111dp + 537.5556dp + 569.4444dp + 683.3333dp + 728.8889dp + 820.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_sp.xml new file mode 100644 index 0000000..1f93ba0 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw410dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.8333sp + 7.9722sp + 9.1111sp + 10.2500sp + 11.3889sp + 12.5278sp + 13.6667sp + 14.8056sp + 15.9444sp + 17.0833sp + 18.2222sp + 19.3611sp + 20.5000sp + 21.6389sp + 22.7778sp + 23.9167sp + 25.0556sp + 26.1944sp + 27.3333sp + 28.4722sp + 31.8889sp + 34.1667sp + 36.4444sp + 38.7222sp + 41.0000sp + 43.2778sp + 45.5556sp + 47.8333sp + 54.6667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_dp.xml new file mode 100644 index 0000000..e628dce --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -68.5714dp + -34.2857dp + -22.8571dp + -13.7143dp + -11.4286dp + -9.1429dp + -5.7143dp + -2.2857dp + -1.1429dp + + 0.1143dp + 0.5714dp + 1.1429dp + 1.7143dp + 2.2857dp + 2.8571dp + 3.4286dp + 4.0000dp + 4.5714dp + 5.1429dp + 5.7143dp + 6.8571dp + 8.0000dp + 9.1429dp + 10.2857dp + 11.4286dp + 12.5714dp + 13.7143dp + 14.8571dp + 16.0000dp + 17.1429dp + 18.2857dp + 19.4286dp + 20.5714dp + 21.7143dp + 22.8571dp + 24.0000dp + 25.1429dp + 26.2857dp + 27.4286dp + 28.5714dp + 29.7143dp + 30.8571dp + 32.0000dp + 33.1429dp + 34.2857dp + 35.4286dp + 36.5714dp + 37.7143dp + 38.8571dp + 40.0000dp + 41.1428dp + 42.2857dp + 43.4286dp + 44.5714dp + 45.7143dp + 46.8571dp + 48.0000dp + 49.1428dp + 50.2857dp + 51.4286dp + 52.5714dp + 53.7143dp + 54.8571dp + 56.0000dp + 57.1428dp + 58.2857dp + 59.4286dp + 60.5714dp + 61.7143dp + 62.8571dp + 64.0000dp + 65.1428dp + 66.2857dp + 67.4286dp + 68.5714dp + 69.7143dp + 70.8571dp + 72.0000dp + 73.1428dp + 74.2857dp + 75.4286dp + 76.5714dp + 77.7143dp + 78.8571dp + 80.0000dp + 81.1428dp + 82.2857dp + 83.4286dp + 84.5714dp + 85.7143dp + 86.8571dp + 88.0000dp + 89.1428dp + 90.2857dp + 91.4286dp + 92.5714dp + 93.7143dp + 94.8571dp + 96.0000dp + 97.1428dp + 98.2857dp + 99.4286dp + 100.5714dp + 101.7143dp + 102.8571dp + 104.0000dp + 105.1428dp + 106.2857dp + 107.4286dp + 108.5714dp + 109.7143dp + 110.8571dp + 112.0000dp + 113.1428dp + 114.2857dp + 115.4286dp + 116.5714dp + 117.7143dp + 118.8571dp + 120.0000dp + 121.1428dp + 122.2857dp + 123.4285dp + 124.5714dp + 125.7143dp + 126.8571dp + 128.0000dp + 129.1428dp + 130.2857dp + 131.4285dp + 132.5714dp + 133.7143dp + 134.8571dp + 136.0000dp + 137.1428dp + 138.2857dp + 139.4285dp + 140.5714dp + 141.7143dp + 142.8571dp + 144.0000dp + 145.1428dp + 146.2857dp + 147.4285dp + 148.5714dp + 149.7143dp + 150.8571dp + 152.0000dp + 153.1428dp + 154.2857dp + 155.4285dp + 156.5714dp + 157.7143dp + 158.8571dp + 160.0000dp + 161.1428dp + 162.2857dp + 163.4285dp + 164.5714dp + 165.7143dp + 166.8571dp + 168.0000dp + 169.1428dp + 170.2857dp + 171.4285dp + 172.5714dp + 173.7143dp + 174.8571dp + 176.0000dp + 177.1428dp + 178.2857dp + 179.4285dp + 180.5714dp + 181.7143dp + 182.8571dp + 184.0000dp + 185.1428dp + 186.2857dp + 187.4285dp + 188.5714dp + 189.7143dp + 190.8571dp + 192.0000dp + 193.1428dp + 194.2857dp + 195.4285dp + 196.5714dp + 197.7143dp + 198.8571dp + 200.0000dp + 201.1428dp + 202.2857dp + 203.4285dp + 204.5714dp + 205.7142dp + 206.8571dp + 208.0000dp + 209.1428dp + 210.2857dp + 211.4285dp + 212.5714dp + 213.7142dp + 214.8571dp + 216.0000dp + 217.1428dp + 218.2857dp + 219.4285dp + 220.5714dp + 221.7142dp + 222.8571dp + 224.0000dp + 225.1428dp + 226.2857dp + 227.4285dp + 228.5714dp + 229.7142dp + 230.8571dp + 232.0000dp + 233.1428dp + 234.2857dp + 235.4285dp + 236.5714dp + 237.7142dp + 238.8571dp + 240.0000dp + 241.1428dp + 242.2857dp + 243.4285dp + 244.5714dp + 245.7142dp + 246.8571dp + 248.0000dp + 249.1428dp + 250.2857dp + 251.4285dp + 252.5714dp + 253.7142dp + 254.8571dp + 256.0000dp + 257.1428dp + 258.2857dp + 259.4285dp + 260.5714dp + 261.7142dp + 262.8571dp + 264.0000dp + 265.1428dp + 266.2857dp + 267.4285dp + 268.5714dp + 269.7142dp + 270.8571dp + 272.0000dp + 273.1428dp + 274.2857dp + 275.4285dp + 276.5714dp + 277.7142dp + 278.8571dp + 280.0000dp + 281.1428dp + 282.2857dp + 283.4285dp + 284.5714dp + 285.7142dp + 286.8571dp + 287.9999dp + 289.1428dp + 290.2857dp + 291.4285dp + 292.5714dp + 293.7142dp + 294.8571dp + 295.9999dp + 297.1428dp + 298.2857dp + 299.4285dp + 300.5714dp + 301.7142dp + 302.8571dp + 303.9999dp + 305.1428dp + 306.2857dp + 307.4285dp + 308.5714dp + 309.7142dp + 310.8571dp + 311.9999dp + 313.1428dp + 314.2857dp + 315.4285dp + 316.5714dp + 317.7142dp + 318.8571dp + 319.9999dp + 321.1428dp + 322.2857dp + 323.4285dp + 324.5714dp + 325.7142dp + 326.8571dp + 327.9999dp + 329.1428dp + 330.2857dp + 331.4285dp + 332.5714dp + 333.7142dp + 334.8571dp + 335.9999dp + 337.1428dp + 338.2857dp + 339.4285dp + 340.5714dp + 341.7142dp + 342.8571dp + 343.9999dp + 345.1428dp + 346.2857dp + 347.4285dp + 348.5714dp + 349.7142dp + 350.8571dp + 351.9999dp + 353.1428dp + 354.2857dp + 355.4285dp + 356.5714dp + 357.7142dp + 358.8571dp + 359.9999dp + 361.1428dp + 362.2857dp + 363.4285dp + 364.5714dp + 365.7142dp + 366.8571dp + 367.9999dp + 369.1428dp + 370.2856dp + 371.4285dp + 372.5714dp + 373.7142dp + 374.8571dp + 375.9999dp + 377.1428dp + 378.2856dp + 379.4285dp + 380.5714dp + 381.7142dp + 382.8571dp + 383.9999dp + 385.1428dp + 386.2856dp + 387.4285dp + 388.5714dp + 389.7142dp + 390.8571dp + 391.9999dp + 393.1428dp + 394.2856dp + 395.4285dp + 396.5714dp + 397.7142dp + 398.8571dp + 399.9999dp + 401.1428dp + 402.2856dp + 403.4285dp + 404.5714dp + 405.7142dp + 406.8571dp + 407.9999dp + 409.1428dp + 410.2856dp + 411.4285dp + 417.1428dp + 422.8571dp + 457.1428dp + 468.5713dp + 482.2856dp + 539.4285dp + 571.4285dp + 685.7142dp + 731.4284dp + 822.8570dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_sp.xml new file mode 100644 index 0000000..27f5ee2 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw411dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6.8571sp + 8.0000sp + 9.1429sp + 10.2857sp + 11.4286sp + 12.5714sp + 13.7143sp + 14.8571sp + 16.0000sp + 17.1429sp + 18.2857sp + 19.4286sp + 20.5714sp + 21.7143sp + 22.8571sp + 24.0000sp + 25.1429sp + 26.2857sp + 27.4286sp + 28.5714sp + 32.0000sp + 34.2857sp + 36.5714sp + 38.8571sp + 41.1428sp + 43.4286sp + 45.7143sp + 48.0000sp + 54.8571sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_dp.xml new file mode 100644 index 0000000..bdc986e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -72.0000dp + -36.0000dp + -24.0000dp + -14.4000dp + -12.0000dp + -9.6000dp + -6.0000dp + -2.4000dp + -1.2000dp + + 0.1200dp + 0.6000dp + 1.2000dp + 1.8000dp + 2.4000dp + 3.0000dp + 3.6000dp + 4.2000dp + 4.8000dp + 5.4000dp + 6.0000dp + 7.2000dp + 8.4000dp + 9.6000dp + 10.8000dp + 12.0000dp + 13.2000dp + 14.4000dp + 15.6000dp + 16.8000dp + 18.0000dp + 19.2000dp + 20.4000dp + 21.6000dp + 22.8000dp + 24.0000dp + 25.2000dp + 26.4000dp + 27.6000dp + 28.8000dp + 30.0000dp + 31.2000dp + 32.4000dp + 33.6000dp + 34.8000dp + 36.0000dp + 37.2000dp + 38.4000dp + 39.6000dp + 40.8000dp + 42.0000dp + 43.2000dp + 44.4000dp + 45.6000dp + 46.8000dp + 48.0000dp + 49.2000dp + 50.4000dp + 51.6000dp + 52.8000dp + 54.0000dp + 55.2000dp + 56.4000dp + 57.6000dp + 58.8000dp + 60.0000dp + 61.2000dp + 62.4000dp + 63.6000dp + 64.8000dp + 66.0000dp + 67.2000dp + 68.4000dp + 69.6000dp + 70.8000dp + 72.0000dp + 73.2000dp + 74.4000dp + 75.6000dp + 76.8000dp + 78.0000dp + 79.2000dp + 80.4000dp + 81.6000dp + 82.8000dp + 84.0000dp + 85.2000dp + 86.4000dp + 87.6000dp + 88.8000dp + 90.0000dp + 91.2000dp + 92.4000dp + 93.6000dp + 94.8000dp + 96.0000dp + 97.2000dp + 98.4000dp + 99.6000dp + 100.8000dp + 102.0000dp + 103.2000dp + 104.4000dp + 105.6000dp + 106.8000dp + 108.0000dp + 109.2000dp + 110.4000dp + 111.6000dp + 112.8000dp + 114.0000dp + 115.2000dp + 116.4000dp + 117.6000dp + 118.8000dp + 120.0000dp + 121.2000dp + 122.4000dp + 123.6000dp + 124.8000dp + 126.0000dp + 127.2000dp + 128.4000dp + 129.6000dp + 130.8000dp + 132.0000dp + 133.2000dp + 134.4000dp + 135.6000dp + 136.8000dp + 138.0000dp + 139.2000dp + 140.4000dp + 141.6000dp + 142.8000dp + 144.0000dp + 145.2000dp + 146.4000dp + 147.6000dp + 148.8000dp + 150.0000dp + 151.2000dp + 152.4000dp + 153.6000dp + 154.8000dp + 156.0000dp + 157.2000dp + 158.4000dp + 159.6000dp + 160.8000dp + 162.0000dp + 163.2000dp + 164.4000dp + 165.6000dp + 166.8000dp + 168.0000dp + 169.2000dp + 170.4000dp + 171.6000dp + 172.8000dp + 174.0000dp + 175.2000dp + 176.4000dp + 177.6000dp + 178.8000dp + 180.0000dp + 181.2000dp + 182.4000dp + 183.6000dp + 184.8000dp + 186.0000dp + 187.2000dp + 188.4000dp + 189.6000dp + 190.8000dp + 192.0000dp + 193.2000dp + 194.4000dp + 195.6000dp + 196.8000dp + 198.0000dp + 199.2000dp + 200.4000dp + 201.6000dp + 202.8000dp + 204.0000dp + 205.2000dp + 206.4000dp + 207.6000dp + 208.8000dp + 210.0000dp + 211.2000dp + 212.4000dp + 213.6000dp + 214.8000dp + 216.0000dp + 217.2000dp + 218.4000dp + 219.6000dp + 220.8000dp + 222.0000dp + 223.2000dp + 224.4000dp + 225.6000dp + 226.8000dp + 228.0000dp + 229.2000dp + 230.4000dp + 231.6000dp + 232.8000dp + 234.0000dp + 235.2000dp + 236.4000dp + 237.6000dp + 238.8000dp + 240.0000dp + 241.2000dp + 242.4000dp + 243.6000dp + 244.8000dp + 246.0000dp + 247.2000dp + 248.4000dp + 249.6000dp + 250.8000dp + 252.0000dp + 253.2000dp + 254.4000dp + 255.6000dp + 256.8000dp + 258.0000dp + 259.2000dp + 260.4000dp + 261.6000dp + 262.8000dp + 264.0000dp + 265.2000dp + 266.4000dp + 267.6000dp + 268.8000dp + 270.0000dp + 271.2000dp + 272.4000dp + 273.6000dp + 274.8000dp + 276.0000dp + 277.2000dp + 278.4000dp + 279.6000dp + 280.8000dp + 282.0000dp + 283.2000dp + 284.4000dp + 285.6000dp + 286.8000dp + 288.0000dp + 289.2000dp + 290.4000dp + 291.6000dp + 292.8000dp + 294.0000dp + 295.2000dp + 296.4000dp + 297.6000dp + 298.8000dp + 300.0000dp + 301.2000dp + 302.4000dp + 303.6000dp + 304.8000dp + 306.0000dp + 307.2000dp + 308.4000dp + 309.6000dp + 310.8000dp + 312.0000dp + 313.2000dp + 314.4000dp + 315.6000dp + 316.8000dp + 318.0000dp + 319.2000dp + 320.4000dp + 321.6000dp + 322.8000dp + 324.0000dp + 325.2000dp + 326.4000dp + 327.6000dp + 328.8000dp + 330.0000dp + 331.2000dp + 332.4000dp + 333.6000dp + 334.8000dp + 336.0000dp + 337.2000dp + 338.4000dp + 339.6000dp + 340.8000dp + 342.0000dp + 343.2000dp + 344.4000dp + 345.6000dp + 346.8000dp + 348.0000dp + 349.2000dp + 350.4000dp + 351.6000dp + 352.8000dp + 354.0000dp + 355.2000dp + 356.4000dp + 357.6000dp + 358.8000dp + 360.0000dp + 361.2000dp + 362.4000dp + 363.6000dp + 364.8000dp + 366.0000dp + 367.2000dp + 368.4000dp + 369.6000dp + 370.8000dp + 372.0000dp + 373.2000dp + 374.4000dp + 375.6000dp + 376.8000dp + 378.0000dp + 379.2000dp + 380.4000dp + 381.6000dp + 382.8000dp + 384.0000dp + 385.2000dp + 386.4000dp + 387.6000dp + 388.8000dp + 390.0000dp + 391.2000dp + 392.4000dp + 393.6000dp + 394.8000dp + 396.0000dp + 397.2000dp + 398.4000dp + 399.6000dp + 400.8000dp + 402.0000dp + 403.2000dp + 404.4000dp + 405.6000dp + 406.8000dp + 408.0000dp + 409.2000dp + 410.4000dp + 411.6000dp + 412.8000dp + 414.0000dp + 415.2000dp + 416.4000dp + 417.6000dp + 418.8000dp + 420.0000dp + 421.2000dp + 422.4000dp + 423.6000dp + 424.8000dp + 426.0000dp + 427.2000dp + 428.4000dp + 429.6000dp + 430.8000dp + 432.0000dp + 438.0000dp + 444.0000dp + 480.0000dp + 492.0000dp + 506.4000dp + 566.4000dp + 600.0000dp + 720.0000dp + 768.0000dp + 864.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_sp.xml new file mode 100644 index 0000000..eacacf1 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw432dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 7.2000sp + 8.4000sp + 9.6000sp + 10.8000sp + 12.0000sp + 13.2000sp + 14.4000sp + 15.6000sp + 16.8000sp + 18.0000sp + 19.2000sp + 20.4000sp + 21.6000sp + 22.8000sp + 24.0000sp + 25.2000sp + 26.4000sp + 27.6000sp + 28.8000sp + 30.0000sp + 33.6000sp + 36.0000sp + 38.4000sp + 40.8000sp + 43.2000sp + 45.6000sp + 48.0000sp + 50.4000sp + 57.6000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_dp.xml new file mode 100644 index 0000000..b5114c6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -80.0000dp + -40.0000dp + -26.6667dp + -16.0000dp + -13.3333dp + -10.6667dp + -6.6667dp + -2.6667dp + -1.3333dp + + 0.1333dp + 0.6667dp + 1.3333dp + 2.0000dp + 2.6667dp + 3.3333dp + 4.0000dp + 4.6667dp + 5.3333dp + 6.0000dp + 6.6667dp + 8.0000dp + 9.3333dp + 10.6667dp + 12.0000dp + 13.3333dp + 14.6667dp + 16.0000dp + 17.3333dp + 18.6667dp + 20.0000dp + 21.3333dp + 22.6667dp + 24.0000dp + 25.3333dp + 26.6667dp + 28.0000dp + 29.3333dp + 30.6667dp + 32.0000dp + 33.3333dp + 34.6667dp + 36.0000dp + 37.3333dp + 38.6667dp + 40.0000dp + 41.3333dp + 42.6667dp + 44.0000dp + 45.3333dp + 46.6667dp + 48.0000dp + 49.3333dp + 50.6667dp + 52.0000dp + 53.3333dp + 54.6667dp + 56.0000dp + 57.3333dp + 58.6667dp + 60.0000dp + 61.3333dp + 62.6667dp + 64.0000dp + 65.3333dp + 66.6667dp + 68.0000dp + 69.3333dp + 70.6667dp + 72.0000dp + 73.3333dp + 74.6667dp + 76.0000dp + 77.3333dp + 78.6667dp + 80.0000dp + 81.3333dp + 82.6667dp + 84.0000dp + 85.3333dp + 86.6667dp + 88.0000dp + 89.3333dp + 90.6667dp + 92.0000dp + 93.3333dp + 94.6667dp + 96.0000dp + 97.3333dp + 98.6667dp + 100.0000dp + 101.3333dp + 102.6667dp + 104.0000dp + 105.3333dp + 106.6667dp + 108.0000dp + 109.3333dp + 110.6667dp + 112.0000dp + 113.3333dp + 114.6667dp + 116.0000dp + 117.3333dp + 118.6667dp + 120.0000dp + 121.3333dp + 122.6667dp + 124.0000dp + 125.3333dp + 126.6667dp + 128.0000dp + 129.3333dp + 130.6667dp + 132.0000dp + 133.3333dp + 134.6667dp + 136.0000dp + 137.3333dp + 138.6667dp + 140.0000dp + 141.3333dp + 142.6667dp + 144.0000dp + 145.3333dp + 146.6667dp + 148.0000dp + 149.3333dp + 150.6667dp + 152.0000dp + 153.3333dp + 154.6667dp + 156.0000dp + 157.3333dp + 158.6667dp + 160.0000dp + 161.3333dp + 162.6667dp + 164.0000dp + 165.3333dp + 166.6667dp + 168.0000dp + 169.3333dp + 170.6667dp + 172.0000dp + 173.3333dp + 174.6667dp + 176.0000dp + 177.3333dp + 178.6667dp + 180.0000dp + 181.3333dp + 182.6667dp + 184.0000dp + 185.3333dp + 186.6667dp + 188.0000dp + 189.3333dp + 190.6667dp + 192.0000dp + 193.3333dp + 194.6667dp + 196.0000dp + 197.3333dp + 198.6667dp + 200.0000dp + 201.3333dp + 202.6667dp + 204.0000dp + 205.3333dp + 206.6667dp + 208.0000dp + 209.3333dp + 210.6667dp + 212.0000dp + 213.3333dp + 214.6667dp + 216.0000dp + 217.3333dp + 218.6667dp + 220.0000dp + 221.3333dp + 222.6667dp + 224.0000dp + 225.3333dp + 226.6667dp + 228.0000dp + 229.3333dp + 230.6667dp + 232.0000dp + 233.3333dp + 234.6667dp + 236.0000dp + 237.3333dp + 238.6667dp + 240.0000dp + 241.3333dp + 242.6667dp + 244.0000dp + 245.3333dp + 246.6667dp + 248.0000dp + 249.3333dp + 250.6667dp + 252.0000dp + 253.3333dp + 254.6667dp + 256.0000dp + 257.3333dp + 258.6667dp + 260.0000dp + 261.3333dp + 262.6667dp + 264.0000dp + 265.3333dp + 266.6667dp + 268.0000dp + 269.3333dp + 270.6667dp + 272.0000dp + 273.3333dp + 274.6667dp + 276.0000dp + 277.3333dp + 278.6667dp + 280.0000dp + 281.3333dp + 282.6667dp + 284.0000dp + 285.3333dp + 286.6667dp + 288.0000dp + 289.3333dp + 290.6667dp + 292.0000dp + 293.3333dp + 294.6667dp + 296.0000dp + 297.3333dp + 298.6667dp + 300.0000dp + 301.3333dp + 302.6667dp + 304.0000dp + 305.3333dp + 306.6667dp + 308.0000dp + 309.3333dp + 310.6667dp + 312.0000dp + 313.3333dp + 314.6667dp + 316.0000dp + 317.3333dp + 318.6667dp + 320.0000dp + 321.3333dp + 322.6667dp + 324.0000dp + 325.3333dp + 326.6667dp + 328.0000dp + 329.3333dp + 330.6667dp + 332.0000dp + 333.3333dp + 334.6667dp + 336.0000dp + 337.3333dp + 338.6667dp + 340.0000dp + 341.3333dp + 342.6667dp + 344.0000dp + 345.3333dp + 346.6667dp + 348.0000dp + 349.3333dp + 350.6667dp + 352.0000dp + 353.3333dp + 354.6667dp + 356.0000dp + 357.3333dp + 358.6667dp + 360.0000dp + 361.3333dp + 362.6667dp + 364.0000dp + 365.3333dp + 366.6667dp + 368.0000dp + 369.3333dp + 370.6667dp + 372.0000dp + 373.3333dp + 374.6667dp + 376.0000dp + 377.3333dp + 378.6667dp + 380.0000dp + 381.3333dp + 382.6667dp + 384.0000dp + 385.3333dp + 386.6667dp + 388.0000dp + 389.3333dp + 390.6667dp + 392.0000dp + 393.3333dp + 394.6667dp + 396.0000dp + 397.3333dp + 398.6667dp + 400.0000dp + 401.3333dp + 402.6667dp + 404.0000dp + 405.3333dp + 406.6667dp + 408.0000dp + 409.3333dp + 410.6667dp + 412.0000dp + 413.3333dp + 414.6667dp + 416.0000dp + 417.3333dp + 418.6667dp + 420.0000dp + 421.3333dp + 422.6667dp + 424.0000dp + 425.3333dp + 426.6667dp + 428.0000dp + 429.3333dp + 430.6667dp + 432.0000dp + 433.3333dp + 434.6667dp + 436.0000dp + 437.3333dp + 438.6667dp + 440.0000dp + 441.3333dp + 442.6667dp + 444.0000dp + 445.3333dp + 446.6667dp + 448.0000dp + 449.3333dp + 450.6667dp + 452.0000dp + 453.3333dp + 454.6667dp + 456.0000dp + 457.3333dp + 458.6667dp + 460.0000dp + 461.3333dp + 462.6667dp + 464.0000dp + 465.3333dp + 466.6667dp + 468.0000dp + 469.3333dp + 470.6667dp + 472.0000dp + 473.3333dp + 474.6667dp + 476.0000dp + 477.3333dp + 478.6667dp + 480.0000dp + 486.6667dp + 493.3333dp + 533.3333dp + 546.6667dp + 562.6667dp + 629.3333dp + 666.6667dp + 800.0000dp + 853.3333dp + 960.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_sp.xml new file mode 100644 index 0000000..46c2116 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw480dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 8.0000sp + 9.3333sp + 10.6667sp + 12.0000sp + 13.3333sp + 14.6667sp + 16.0000sp + 17.3333sp + 18.6667sp + 20.0000sp + 21.3333sp + 22.6667sp + 24.0000sp + 25.3333sp + 26.6667sp + 28.0000sp + 29.3333sp + 30.6667sp + 32.0000sp + 33.3333sp + 37.3333sp + 40.0000sp + 42.6667sp + 45.3333sp + 48.0000sp + 50.6667sp + 53.3333sp + 56.0000sp + 64.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_dp.xml new file mode 100644 index 0000000..f40b47e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -88.8333dp + -44.4167dp + -29.6111dp + -17.7667dp + -14.8056dp + -11.8444dp + -7.4028dp + -2.9611dp + -1.4806dp + + 0.1481dp + 0.7403dp + 1.4806dp + 2.2208dp + 2.9611dp + 3.7014dp + 4.4417dp + 5.1819dp + 5.9222dp + 6.6625dp + 7.4028dp + 8.8833dp + 10.3639dp + 11.8444dp + 13.3250dp + 14.8056dp + 16.2861dp + 17.7667dp + 19.2472dp + 20.7278dp + 22.2083dp + 23.6889dp + 25.1694dp + 26.6500dp + 28.1306dp + 29.6111dp + 31.0917dp + 32.5722dp + 34.0528dp + 35.5333dp + 37.0139dp + 38.4944dp + 39.9750dp + 41.4556dp + 42.9361dp + 44.4167dp + 45.8972dp + 47.3778dp + 48.8583dp + 50.3389dp + 51.8194dp + 53.3000dp + 54.7806dp + 56.2611dp + 57.7417dp + 59.2222dp + 60.7028dp + 62.1833dp + 63.6639dp + 65.1444dp + 66.6250dp + 68.1056dp + 69.5861dp + 71.0667dp + 72.5472dp + 74.0278dp + 75.5083dp + 76.9889dp + 78.4694dp + 79.9500dp + 81.4306dp + 82.9111dp + 84.3917dp + 85.8722dp + 87.3528dp + 88.8333dp + 90.3139dp + 91.7944dp + 93.2750dp + 94.7556dp + 96.2361dp + 97.7167dp + 99.1972dp + 100.6778dp + 102.1583dp + 103.6389dp + 105.1194dp + 106.6000dp + 108.0806dp + 109.5611dp + 111.0417dp + 112.5222dp + 114.0028dp + 115.4833dp + 116.9639dp + 118.4444dp + 119.9250dp + 121.4056dp + 122.8861dp + 124.3667dp + 125.8472dp + 127.3278dp + 128.8083dp + 130.2889dp + 131.7694dp + 133.2500dp + 134.7306dp + 136.2111dp + 137.6917dp + 139.1722dp + 140.6528dp + 142.1333dp + 143.6139dp + 145.0944dp + 146.5750dp + 148.0556dp + 149.5361dp + 151.0167dp + 152.4972dp + 153.9778dp + 155.4583dp + 156.9389dp + 158.4194dp + 159.9000dp + 161.3806dp + 162.8611dp + 164.3417dp + 165.8222dp + 167.3028dp + 168.7833dp + 170.2639dp + 171.7444dp + 173.2250dp + 174.7056dp + 176.1861dp + 177.6667dp + 179.1472dp + 180.6278dp + 182.1083dp + 183.5889dp + 185.0694dp + 186.5500dp + 188.0306dp + 189.5111dp + 190.9917dp + 192.4722dp + 193.9528dp + 195.4333dp + 196.9139dp + 198.3944dp + 199.8750dp + 201.3556dp + 202.8361dp + 204.3167dp + 205.7972dp + 207.2778dp + 208.7583dp + 210.2389dp + 211.7194dp + 213.2000dp + 214.6806dp + 216.1611dp + 217.6417dp + 219.1222dp + 220.6028dp + 222.0833dp + 223.5639dp + 225.0444dp + 226.5250dp + 228.0056dp + 229.4861dp + 230.9667dp + 232.4472dp + 233.9278dp + 235.4083dp + 236.8889dp + 238.3694dp + 239.8500dp + 241.3306dp + 242.8111dp + 244.2917dp + 245.7722dp + 247.2528dp + 248.7333dp + 250.2139dp + 251.6944dp + 253.1750dp + 254.6556dp + 256.1361dp + 257.6167dp + 259.0972dp + 260.5778dp + 262.0583dp + 263.5389dp + 265.0194dp + 266.5000dp + 267.9806dp + 269.4611dp + 270.9417dp + 272.4222dp + 273.9028dp + 275.3833dp + 276.8639dp + 278.3444dp + 279.8250dp + 281.3056dp + 282.7861dp + 284.2667dp + 285.7472dp + 287.2278dp + 288.7083dp + 290.1889dp + 291.6694dp + 293.1500dp + 294.6306dp + 296.1111dp + 297.5917dp + 299.0722dp + 300.5528dp + 302.0333dp + 303.5139dp + 304.9944dp + 306.4750dp + 307.9556dp + 309.4361dp + 310.9167dp + 312.3972dp + 313.8778dp + 315.3583dp + 316.8389dp + 318.3194dp + 319.8000dp + 321.2806dp + 322.7611dp + 324.2417dp + 325.7222dp + 327.2028dp + 328.6833dp + 330.1639dp + 331.6444dp + 333.1250dp + 334.6056dp + 336.0861dp + 337.5667dp + 339.0472dp + 340.5278dp + 342.0083dp + 343.4889dp + 344.9694dp + 346.4500dp + 347.9306dp + 349.4111dp + 350.8917dp + 352.3722dp + 353.8528dp + 355.3333dp + 356.8139dp + 358.2944dp + 359.7750dp + 361.2556dp + 362.7361dp + 364.2167dp + 365.6972dp + 367.1778dp + 368.6583dp + 370.1389dp + 371.6194dp + 373.1000dp + 374.5806dp + 376.0611dp + 377.5417dp + 379.0222dp + 380.5028dp + 381.9833dp + 383.4639dp + 384.9444dp + 386.4250dp + 387.9056dp + 389.3861dp + 390.8667dp + 392.3472dp + 393.8278dp + 395.3083dp + 396.7889dp + 398.2694dp + 399.7500dp + 401.2306dp + 402.7111dp + 404.1917dp + 405.6722dp + 407.1528dp + 408.6333dp + 410.1139dp + 411.5944dp + 413.0750dp + 414.5556dp + 416.0361dp + 417.5167dp + 418.9972dp + 420.4778dp + 421.9583dp + 423.4389dp + 424.9194dp + 426.4000dp + 427.8806dp + 429.3611dp + 430.8417dp + 432.3222dp + 433.8028dp + 435.2833dp + 436.7639dp + 438.2444dp + 439.7250dp + 441.2056dp + 442.6861dp + 444.1667dp + 445.6472dp + 447.1278dp + 448.6083dp + 450.0889dp + 451.5694dp + 453.0500dp + 454.5306dp + 456.0111dp + 457.4917dp + 458.9722dp + 460.4528dp + 461.9333dp + 463.4139dp + 464.8944dp + 466.3750dp + 467.8556dp + 469.3361dp + 470.8167dp + 472.2972dp + 473.7778dp + 475.2583dp + 476.7389dp + 478.2194dp + 479.7000dp + 481.1806dp + 482.6611dp + 484.1417dp + 485.6222dp + 487.1028dp + 488.5833dp + 490.0639dp + 491.5444dp + 493.0250dp + 494.5056dp + 495.9861dp + 497.4667dp + 498.9472dp + 500.4278dp + 501.9083dp + 503.3889dp + 504.8694dp + 506.3500dp + 507.8306dp + 509.3111dp + 510.7917dp + 512.2722dp + 513.7528dp + 515.2333dp + 516.7139dp + 518.1944dp + 519.6750dp + 521.1556dp + 522.6361dp + 524.1167dp + 525.5972dp + 527.0778dp + 528.5583dp + 530.0389dp + 531.5194dp + 533.0000dp + 540.4028dp + 547.8056dp + 592.2222dp + 607.0278dp + 624.7944dp + 698.8222dp + 740.2778dp + 888.3333dp + 947.5556dp + 1066.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_sp.xml new file mode 100644 index 0000000..e917664 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw533dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 8.8833sp + 10.3639sp + 11.8444sp + 13.3250sp + 14.8056sp + 16.2861sp + 17.7667sp + 19.2472sp + 20.7278sp + 22.2083sp + 23.6889sp + 25.1694sp + 26.6500sp + 28.1306sp + 29.6111sp + 31.0917sp + 32.5722sp + 34.0528sp + 35.5333sp + 37.0139sp + 41.4556sp + 44.4167sp + 47.3778sp + 50.3389sp + 53.3000sp + 56.2611sp + 59.2222sp + 62.1833sp + 71.0667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_dp.xml new file mode 100644 index 0000000..959c6e6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -90.0000dp + -45.0000dp + -30.0000dp + -18.0000dp + -15.0000dp + -12.0000dp + -7.5000dp + -3.0000dp + -1.5000dp + + 0.1500dp + 0.7500dp + 1.5000dp + 2.2500dp + 3.0000dp + 3.7500dp + 4.5000dp + 5.2500dp + 6.0000dp + 6.7500dp + 7.5000dp + 9.0000dp + 10.5000dp + 12.0000dp + 13.5000dp + 15.0000dp + 16.5000dp + 18.0000dp + 19.5000dp + 21.0000dp + 22.5000dp + 24.0000dp + 25.5000dp + 27.0000dp + 28.5000dp + 30.0000dp + 31.5000dp + 33.0000dp + 34.5000dp + 36.0000dp + 37.5000dp + 39.0000dp + 40.5000dp + 42.0000dp + 43.5000dp + 45.0000dp + 46.5000dp + 48.0000dp + 49.5000dp + 51.0000dp + 52.5000dp + 54.0000dp + 55.5000dp + 57.0000dp + 58.5000dp + 60.0000dp + 61.5000dp + 63.0000dp + 64.5000dp + 66.0000dp + 67.5000dp + 69.0000dp + 70.5000dp + 72.0000dp + 73.5000dp + 75.0000dp + 76.5000dp + 78.0000dp + 79.5000dp + 81.0000dp + 82.5000dp + 84.0000dp + 85.5000dp + 87.0000dp + 88.5000dp + 90.0000dp + 91.5000dp + 93.0000dp + 94.5000dp + 96.0000dp + 97.5000dp + 99.0000dp + 100.5000dp + 102.0000dp + 103.5000dp + 105.0000dp + 106.5000dp + 108.0000dp + 109.5000dp + 111.0000dp + 112.5000dp + 114.0000dp + 115.5000dp + 117.0000dp + 118.5000dp + 120.0000dp + 121.5000dp + 123.0000dp + 124.5000dp + 126.0000dp + 127.5000dp + 129.0000dp + 130.5000dp + 132.0000dp + 133.5000dp + 135.0000dp + 136.5000dp + 138.0000dp + 139.5000dp + 141.0000dp + 142.5000dp + 144.0000dp + 145.5000dp + 147.0000dp + 148.5000dp + 150.0000dp + 151.5000dp + 153.0000dp + 154.5000dp + 156.0000dp + 157.5000dp + 159.0000dp + 160.5000dp + 162.0000dp + 163.5000dp + 165.0000dp + 166.5000dp + 168.0000dp + 169.5000dp + 171.0000dp + 172.5000dp + 174.0000dp + 175.5000dp + 177.0000dp + 178.5000dp + 180.0000dp + 181.5000dp + 183.0000dp + 184.5000dp + 186.0000dp + 187.5000dp + 189.0000dp + 190.5000dp + 192.0000dp + 193.5000dp + 195.0000dp + 196.5000dp + 198.0000dp + 199.5000dp + 201.0000dp + 202.5000dp + 204.0000dp + 205.5000dp + 207.0000dp + 208.5000dp + 210.0000dp + 211.5000dp + 213.0000dp + 214.5000dp + 216.0000dp + 217.5000dp + 219.0000dp + 220.5000dp + 222.0000dp + 223.5000dp + 225.0000dp + 226.5000dp + 228.0000dp + 229.5000dp + 231.0000dp + 232.5000dp + 234.0000dp + 235.5000dp + 237.0000dp + 238.5000dp + 240.0000dp + 241.5000dp + 243.0000dp + 244.5000dp + 246.0000dp + 247.5000dp + 249.0000dp + 250.5000dp + 252.0000dp + 253.5000dp + 255.0000dp + 256.5000dp + 258.0000dp + 259.5000dp + 261.0000dp + 262.5000dp + 264.0000dp + 265.5000dp + 267.0000dp + 268.5000dp + 270.0000dp + 271.5000dp + 273.0000dp + 274.5000dp + 276.0000dp + 277.5000dp + 279.0000dp + 280.5000dp + 282.0000dp + 283.5000dp + 285.0000dp + 286.5000dp + 288.0000dp + 289.5000dp + 291.0000dp + 292.5000dp + 294.0000dp + 295.5000dp + 297.0000dp + 298.5000dp + 300.0000dp + 301.5000dp + 303.0000dp + 304.5000dp + 306.0000dp + 307.5000dp + 309.0000dp + 310.5000dp + 312.0000dp + 313.5000dp + 315.0000dp + 316.5000dp + 318.0000dp + 319.5000dp + 321.0000dp + 322.5000dp + 324.0000dp + 325.5000dp + 327.0000dp + 328.5000dp + 330.0000dp + 331.5000dp + 333.0000dp + 334.5000dp + 336.0000dp + 337.5000dp + 339.0000dp + 340.5000dp + 342.0000dp + 343.5000dp + 345.0000dp + 346.5000dp + 348.0000dp + 349.5000dp + 351.0000dp + 352.5000dp + 354.0000dp + 355.5000dp + 357.0000dp + 358.5000dp + 360.0000dp + 361.5000dp + 363.0000dp + 364.5000dp + 366.0000dp + 367.5000dp + 369.0000dp + 370.5000dp + 372.0000dp + 373.5000dp + 375.0000dp + 376.5000dp + 378.0000dp + 379.5000dp + 381.0000dp + 382.5000dp + 384.0000dp + 385.5000dp + 387.0000dp + 388.5000dp + 390.0000dp + 391.5000dp + 393.0000dp + 394.5000dp + 396.0000dp + 397.5000dp + 399.0000dp + 400.5000dp + 402.0000dp + 403.5000dp + 405.0000dp + 406.5000dp + 408.0000dp + 409.5000dp + 411.0000dp + 412.5000dp + 414.0000dp + 415.5000dp + 417.0000dp + 418.5000dp + 420.0000dp + 421.5000dp + 423.0000dp + 424.5000dp + 426.0000dp + 427.5000dp + 429.0000dp + 430.5000dp + 432.0000dp + 433.5000dp + 435.0000dp + 436.5000dp + 438.0000dp + 439.5000dp + 441.0000dp + 442.5000dp + 444.0000dp + 445.5000dp + 447.0000dp + 448.5000dp + 450.0000dp + 451.5000dp + 453.0000dp + 454.5000dp + 456.0000dp + 457.5000dp + 459.0000dp + 460.5000dp + 462.0000dp + 463.5000dp + 465.0000dp + 466.5000dp + 468.0000dp + 469.5000dp + 471.0000dp + 472.5000dp + 474.0000dp + 475.5000dp + 477.0000dp + 478.5000dp + 480.0000dp + 481.5000dp + 483.0000dp + 484.5000dp + 486.0000dp + 487.5000dp + 489.0000dp + 490.5000dp + 492.0000dp + 493.5000dp + 495.0000dp + 496.5000dp + 498.0000dp + 499.5000dp + 501.0000dp + 502.5000dp + 504.0000dp + 505.5000dp + 507.0000dp + 508.5000dp + 510.0000dp + 511.5000dp + 513.0000dp + 514.5000dp + 516.0000dp + 517.5000dp + 519.0000dp + 520.5000dp + 522.0000dp + 523.5000dp + 525.0000dp + 526.5000dp + 528.0000dp + 529.5000dp + 531.0000dp + 532.5000dp + 534.0000dp + 535.5000dp + 537.0000dp + 538.5000dp + 540.0000dp + 547.5000dp + 555.0000dp + 600.0000dp + 615.0000dp + 633.0000dp + 708.0000dp + 750.0000dp + 900.0000dp + 960.0000dp + 1080.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_sp.xml new file mode 100644 index 0000000..197d2a7 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw540dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 9.0000sp + 10.5000sp + 12.0000sp + 13.5000sp + 15.0000sp + 16.5000sp + 18.0000sp + 19.5000sp + 21.0000sp + 22.5000sp + 24.0000sp + 25.5000sp + 27.0000sp + 28.5000sp + 30.0000sp + 31.5000sp + 33.0000sp + 34.5000sp + 36.0000sp + 37.5000sp + 42.0000sp + 45.0000sp + 48.0000sp + 51.0000sp + 54.0000sp + 57.0000sp + 60.0000sp + 63.0000sp + 72.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_dp.xml new file mode 100644 index 0000000..81e2bab --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -98.6667dp + -49.3333dp + -32.8889dp + -19.7333dp + -16.4444dp + -13.1556dp + -8.2222dp + -3.2889dp + -1.6444dp + + 0.1644dp + 0.8222dp + 1.6444dp + 2.4667dp + 3.2889dp + 4.1111dp + 4.9333dp + 5.7556dp + 6.5778dp + 7.4000dp + 8.2222dp + 9.8667dp + 11.5111dp + 13.1556dp + 14.8000dp + 16.4444dp + 18.0889dp + 19.7333dp + 21.3778dp + 23.0222dp + 24.6667dp + 26.3111dp + 27.9556dp + 29.6000dp + 31.2444dp + 32.8889dp + 34.5333dp + 36.1778dp + 37.8222dp + 39.4667dp + 41.1111dp + 42.7556dp + 44.4000dp + 46.0444dp + 47.6889dp + 49.3333dp + 50.9778dp + 52.6222dp + 54.2667dp + 55.9111dp + 57.5556dp + 59.2000dp + 60.8444dp + 62.4889dp + 64.1333dp + 65.7778dp + 67.4222dp + 69.0667dp + 70.7111dp + 72.3556dp + 74.0000dp + 75.6444dp + 77.2889dp + 78.9333dp + 80.5778dp + 82.2222dp + 83.8667dp + 85.5111dp + 87.1556dp + 88.8000dp + 90.4444dp + 92.0889dp + 93.7333dp + 95.3778dp + 97.0222dp + 98.6667dp + 100.3111dp + 101.9556dp + 103.6000dp + 105.2444dp + 106.8889dp + 108.5333dp + 110.1778dp + 111.8222dp + 113.4667dp + 115.1111dp + 116.7556dp + 118.4000dp + 120.0444dp + 121.6889dp + 123.3333dp + 124.9778dp + 126.6222dp + 128.2667dp + 129.9111dp + 131.5556dp + 133.2000dp + 134.8444dp + 136.4889dp + 138.1333dp + 139.7778dp + 141.4222dp + 143.0667dp + 144.7111dp + 146.3556dp + 148.0000dp + 149.6444dp + 151.2889dp + 152.9333dp + 154.5778dp + 156.2222dp + 157.8667dp + 159.5111dp + 161.1556dp + 162.8000dp + 164.4444dp + 166.0889dp + 167.7333dp + 169.3778dp + 171.0222dp + 172.6667dp + 174.3111dp + 175.9556dp + 177.6000dp + 179.2444dp + 180.8889dp + 182.5333dp + 184.1778dp + 185.8222dp + 187.4667dp + 189.1111dp + 190.7556dp + 192.4000dp + 194.0444dp + 195.6889dp + 197.3333dp + 198.9778dp + 200.6222dp + 202.2667dp + 203.9111dp + 205.5556dp + 207.2000dp + 208.8444dp + 210.4889dp + 212.1333dp + 213.7778dp + 215.4222dp + 217.0667dp + 218.7111dp + 220.3556dp + 222.0000dp + 223.6444dp + 225.2889dp + 226.9333dp + 228.5778dp + 230.2222dp + 231.8667dp + 233.5111dp + 235.1556dp + 236.8000dp + 238.4444dp + 240.0889dp + 241.7333dp + 243.3778dp + 245.0222dp + 246.6667dp + 248.3111dp + 249.9556dp + 251.6000dp + 253.2444dp + 254.8889dp + 256.5333dp + 258.1778dp + 259.8222dp + 261.4667dp + 263.1111dp + 264.7556dp + 266.4000dp + 268.0444dp + 269.6889dp + 271.3333dp + 272.9778dp + 274.6222dp + 276.2667dp + 277.9111dp + 279.5556dp + 281.2000dp + 282.8444dp + 284.4889dp + 286.1333dp + 287.7778dp + 289.4222dp + 291.0667dp + 292.7111dp + 294.3556dp + 296.0000dp + 297.6444dp + 299.2889dp + 300.9333dp + 302.5778dp + 304.2222dp + 305.8667dp + 307.5111dp + 309.1556dp + 310.8000dp + 312.4444dp + 314.0889dp + 315.7333dp + 317.3778dp + 319.0222dp + 320.6667dp + 322.3111dp + 323.9556dp + 325.6000dp + 327.2444dp + 328.8889dp + 330.5333dp + 332.1778dp + 333.8222dp + 335.4667dp + 337.1111dp + 338.7556dp + 340.4000dp + 342.0444dp + 343.6889dp + 345.3333dp + 346.9778dp + 348.6222dp + 350.2667dp + 351.9111dp + 353.5556dp + 355.2000dp + 356.8444dp + 358.4889dp + 360.1333dp + 361.7778dp + 363.4222dp + 365.0667dp + 366.7111dp + 368.3556dp + 370.0000dp + 371.6444dp + 373.2889dp + 374.9333dp + 376.5778dp + 378.2222dp + 379.8667dp + 381.5111dp + 383.1556dp + 384.8000dp + 386.4444dp + 388.0889dp + 389.7333dp + 391.3778dp + 393.0222dp + 394.6667dp + 396.3111dp + 397.9556dp + 399.6000dp + 401.2444dp + 402.8889dp + 404.5333dp + 406.1778dp + 407.8222dp + 409.4667dp + 411.1111dp + 412.7556dp + 414.4000dp + 416.0444dp + 417.6889dp + 419.3333dp + 420.9778dp + 422.6222dp + 424.2667dp + 425.9111dp + 427.5556dp + 429.2000dp + 430.8444dp + 432.4889dp + 434.1333dp + 435.7778dp + 437.4222dp + 439.0667dp + 440.7111dp + 442.3556dp + 444.0000dp + 445.6444dp + 447.2889dp + 448.9333dp + 450.5778dp + 452.2222dp + 453.8667dp + 455.5111dp + 457.1556dp + 458.8000dp + 460.4444dp + 462.0889dp + 463.7333dp + 465.3778dp + 467.0222dp + 468.6667dp + 470.3111dp + 471.9556dp + 473.6000dp + 475.2444dp + 476.8889dp + 478.5333dp + 480.1778dp + 481.8222dp + 483.4667dp + 485.1111dp + 486.7556dp + 488.4000dp + 490.0444dp + 491.6889dp + 493.3333dp + 494.9778dp + 496.6222dp + 498.2667dp + 499.9111dp + 501.5556dp + 503.2000dp + 504.8444dp + 506.4889dp + 508.1333dp + 509.7778dp + 511.4222dp + 513.0667dp + 514.7111dp + 516.3556dp + 518.0000dp + 519.6444dp + 521.2889dp + 522.9333dp + 524.5778dp + 526.2222dp + 527.8667dp + 529.5111dp + 531.1556dp + 532.8000dp + 534.4444dp + 536.0889dp + 537.7333dp + 539.3778dp + 541.0222dp + 542.6667dp + 544.3111dp + 545.9556dp + 547.6000dp + 549.2444dp + 550.8889dp + 552.5333dp + 554.1778dp + 555.8222dp + 557.4667dp + 559.1111dp + 560.7556dp + 562.4000dp + 564.0444dp + 565.6889dp + 567.3333dp + 568.9778dp + 570.6222dp + 572.2667dp + 573.9111dp + 575.5556dp + 577.2000dp + 578.8444dp + 580.4889dp + 582.1333dp + 583.7778dp + 585.4222dp + 587.0667dp + 588.7111dp + 590.3556dp + 592.0000dp + 600.2222dp + 608.4444dp + 657.7778dp + 674.2222dp + 693.9556dp + 776.1778dp + 822.2222dp + 986.6667dp + 1052.4444dp + 1184.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_sp.xml new file mode 100644 index 0000000..77463cc --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw592dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 9.8667sp + 11.5111sp + 13.1556sp + 14.8000sp + 16.4444sp + 18.0889sp + 19.7333sp + 21.3778sp + 23.0222sp + 24.6667sp + 26.3111sp + 27.9556sp + 29.6000sp + 31.2444sp + 32.8889sp + 34.5333sp + 36.1778sp + 37.8222sp + 39.4667sp + 41.1111sp + 46.0444sp + 49.3333sp + 52.6222sp + 55.9111sp + 59.2000sp + 62.4889sp + 65.7778sp + 69.0667sp + 78.9333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_dp.xml new file mode 100644 index 0000000..761d4af --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -100.0000dp + -50.0000dp + -33.3333dp + -20.0000dp + -16.6667dp + -13.3333dp + -8.3333dp + -3.3333dp + -1.6667dp + + 0.1667dp + 0.8333dp + 1.6667dp + 2.5000dp + 3.3333dp + 4.1667dp + 5.0000dp + 5.8333dp + 6.6667dp + 7.5000dp + 8.3333dp + 10.0000dp + 11.6667dp + 13.3333dp + 15.0000dp + 16.6667dp + 18.3333dp + 20.0000dp + 21.6667dp + 23.3333dp + 25.0000dp + 26.6667dp + 28.3333dp + 30.0000dp + 31.6667dp + 33.3333dp + 35.0000dp + 36.6667dp + 38.3333dp + 40.0000dp + 41.6667dp + 43.3333dp + 45.0000dp + 46.6667dp + 48.3333dp + 50.0000dp + 51.6667dp + 53.3333dp + 55.0000dp + 56.6667dp + 58.3333dp + 60.0000dp + 61.6667dp + 63.3333dp + 65.0000dp + 66.6667dp + 68.3333dp + 70.0000dp + 71.6667dp + 73.3333dp + 75.0000dp + 76.6667dp + 78.3333dp + 80.0000dp + 81.6667dp + 83.3333dp + 85.0000dp + 86.6667dp + 88.3333dp + 90.0000dp + 91.6667dp + 93.3333dp + 95.0000dp + 96.6667dp + 98.3333dp + 100.0000dp + 101.6667dp + 103.3333dp + 105.0000dp + 106.6667dp + 108.3333dp + 110.0000dp + 111.6667dp + 113.3333dp + 115.0000dp + 116.6667dp + 118.3333dp + 120.0000dp + 121.6667dp + 123.3333dp + 125.0000dp + 126.6667dp + 128.3333dp + 130.0000dp + 131.6667dp + 133.3333dp + 135.0000dp + 136.6667dp + 138.3333dp + 140.0000dp + 141.6667dp + 143.3333dp + 145.0000dp + 146.6667dp + 148.3333dp + 150.0000dp + 151.6667dp + 153.3333dp + 155.0000dp + 156.6667dp + 158.3333dp + 160.0000dp + 161.6667dp + 163.3333dp + 165.0000dp + 166.6667dp + 168.3333dp + 170.0000dp + 171.6667dp + 173.3333dp + 175.0000dp + 176.6667dp + 178.3333dp + 180.0000dp + 181.6667dp + 183.3333dp + 185.0000dp + 186.6667dp + 188.3333dp + 190.0000dp + 191.6667dp + 193.3333dp + 195.0000dp + 196.6667dp + 198.3333dp + 200.0000dp + 201.6667dp + 203.3333dp + 205.0000dp + 206.6667dp + 208.3333dp + 210.0000dp + 211.6667dp + 213.3333dp + 215.0000dp + 216.6667dp + 218.3333dp + 220.0000dp + 221.6667dp + 223.3333dp + 225.0000dp + 226.6667dp + 228.3333dp + 230.0000dp + 231.6667dp + 233.3333dp + 235.0000dp + 236.6667dp + 238.3333dp + 240.0000dp + 241.6667dp + 243.3333dp + 245.0000dp + 246.6667dp + 248.3333dp + 250.0000dp + 251.6667dp + 253.3333dp + 255.0000dp + 256.6667dp + 258.3333dp + 260.0000dp + 261.6667dp + 263.3333dp + 265.0000dp + 266.6667dp + 268.3333dp + 270.0000dp + 271.6667dp + 273.3333dp + 275.0000dp + 276.6667dp + 278.3333dp + 280.0000dp + 281.6667dp + 283.3333dp + 285.0000dp + 286.6667dp + 288.3333dp + 290.0000dp + 291.6667dp + 293.3333dp + 295.0000dp + 296.6667dp + 298.3333dp + 300.0000dp + 301.6667dp + 303.3333dp + 305.0000dp + 306.6667dp + 308.3333dp + 310.0000dp + 311.6667dp + 313.3333dp + 315.0000dp + 316.6667dp + 318.3333dp + 320.0000dp + 321.6667dp + 323.3333dp + 325.0000dp + 326.6667dp + 328.3333dp + 330.0000dp + 331.6667dp + 333.3333dp + 335.0000dp + 336.6667dp + 338.3333dp + 340.0000dp + 341.6667dp + 343.3333dp + 345.0000dp + 346.6667dp + 348.3333dp + 350.0000dp + 351.6667dp + 353.3333dp + 355.0000dp + 356.6667dp + 358.3333dp + 360.0000dp + 361.6667dp + 363.3333dp + 365.0000dp + 366.6667dp + 368.3333dp + 370.0000dp + 371.6667dp + 373.3333dp + 375.0000dp + 376.6667dp + 378.3333dp + 380.0000dp + 381.6667dp + 383.3333dp + 385.0000dp + 386.6667dp + 388.3333dp + 390.0000dp + 391.6667dp + 393.3333dp + 395.0000dp + 396.6667dp + 398.3333dp + 400.0000dp + 401.6667dp + 403.3333dp + 405.0000dp + 406.6667dp + 408.3333dp + 410.0000dp + 411.6667dp + 413.3333dp + 415.0000dp + 416.6667dp + 418.3333dp + 420.0000dp + 421.6667dp + 423.3333dp + 425.0000dp + 426.6667dp + 428.3333dp + 430.0000dp + 431.6667dp + 433.3333dp + 435.0000dp + 436.6667dp + 438.3333dp + 440.0000dp + 441.6667dp + 443.3333dp + 445.0000dp + 446.6667dp + 448.3333dp + 450.0000dp + 451.6667dp + 453.3333dp + 455.0000dp + 456.6667dp + 458.3333dp + 460.0000dp + 461.6667dp + 463.3333dp + 465.0000dp + 466.6667dp + 468.3333dp + 470.0000dp + 471.6667dp + 473.3333dp + 475.0000dp + 476.6667dp + 478.3333dp + 480.0000dp + 481.6667dp + 483.3333dp + 485.0000dp + 486.6667dp + 488.3333dp + 490.0000dp + 491.6667dp + 493.3333dp + 495.0000dp + 496.6667dp + 498.3333dp + 500.0000dp + 501.6667dp + 503.3333dp + 505.0000dp + 506.6667dp + 508.3333dp + 510.0000dp + 511.6667dp + 513.3333dp + 515.0000dp + 516.6667dp + 518.3333dp + 520.0000dp + 521.6667dp + 523.3333dp + 525.0000dp + 526.6667dp + 528.3333dp + 530.0000dp + 531.6667dp + 533.3333dp + 535.0000dp + 536.6667dp + 538.3333dp + 540.0000dp + 541.6667dp + 543.3333dp + 545.0000dp + 546.6667dp + 548.3333dp + 550.0000dp + 551.6667dp + 553.3333dp + 555.0000dp + 556.6667dp + 558.3333dp + 560.0000dp + 561.6667dp + 563.3333dp + 565.0000dp + 566.6667dp + 568.3333dp + 570.0000dp + 571.6667dp + 573.3333dp + 575.0000dp + 576.6667dp + 578.3333dp + 580.0000dp + 581.6667dp + 583.3333dp + 585.0000dp + 586.6667dp + 588.3333dp + 590.0000dp + 591.6667dp + 593.3333dp + 595.0000dp + 596.6667dp + 598.3333dp + 600.0000dp + 608.3333dp + 616.6667dp + 666.6667dp + 683.3333dp + 703.3333dp + 786.6667dp + 833.3333dp + 1000.0000dp + 1066.6667dp + 1200.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_sp.xml new file mode 100644 index 0000000..998b966 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw600dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 10.0000sp + 11.6667sp + 13.3333sp + 15.0000sp + 16.6667sp + 18.3333sp + 20.0000sp + 21.6667sp + 23.3333sp + 25.0000sp + 26.6667sp + 28.3333sp + 30.0000sp + 31.6667sp + 33.3333sp + 35.0000sp + 36.6667sp + 38.3333sp + 40.0000sp + 41.6667sp + 46.6667sp + 50.0000sp + 53.3333sp + 56.6667sp + 60.0000sp + 63.3333sp + 66.6667sp + 70.0000sp + 80.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_dp.xml new file mode 100644 index 0000000..dd2324c --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -106.6667dp + -53.3333dp + -35.5556dp + -21.3333dp + -17.7778dp + -14.2222dp + -8.8889dp + -3.5556dp + -1.7778dp + + 0.1778dp + 0.8889dp + 1.7778dp + 2.6667dp + 3.5556dp + 4.4444dp + 5.3333dp + 6.2222dp + 7.1111dp + 8.0000dp + 8.8889dp + 10.6667dp + 12.4444dp + 14.2222dp + 16.0000dp + 17.7778dp + 19.5556dp + 21.3333dp + 23.1111dp + 24.8889dp + 26.6667dp + 28.4444dp + 30.2222dp + 32.0000dp + 33.7778dp + 35.5556dp + 37.3333dp + 39.1111dp + 40.8889dp + 42.6667dp + 44.4444dp + 46.2222dp + 48.0000dp + 49.7778dp + 51.5556dp + 53.3333dp + 55.1111dp + 56.8889dp + 58.6667dp + 60.4444dp + 62.2222dp + 64.0000dp + 65.7778dp + 67.5556dp + 69.3333dp + 71.1111dp + 72.8889dp + 74.6667dp + 76.4444dp + 78.2222dp + 80.0000dp + 81.7778dp + 83.5556dp + 85.3333dp + 87.1111dp + 88.8889dp + 90.6667dp + 92.4444dp + 94.2222dp + 96.0000dp + 97.7778dp + 99.5556dp + 101.3333dp + 103.1111dp + 104.8889dp + 106.6667dp + 108.4444dp + 110.2222dp + 112.0000dp + 113.7778dp + 115.5556dp + 117.3333dp + 119.1111dp + 120.8889dp + 122.6667dp + 124.4444dp + 126.2222dp + 128.0000dp + 129.7778dp + 131.5556dp + 133.3333dp + 135.1111dp + 136.8889dp + 138.6667dp + 140.4444dp + 142.2222dp + 144.0000dp + 145.7778dp + 147.5556dp + 149.3333dp + 151.1111dp + 152.8889dp + 154.6667dp + 156.4444dp + 158.2222dp + 160.0000dp + 161.7778dp + 163.5556dp + 165.3333dp + 167.1111dp + 168.8889dp + 170.6667dp + 172.4444dp + 174.2222dp + 176.0000dp + 177.7778dp + 179.5556dp + 181.3333dp + 183.1111dp + 184.8889dp + 186.6667dp + 188.4444dp + 190.2222dp + 192.0000dp + 193.7778dp + 195.5556dp + 197.3333dp + 199.1111dp + 200.8889dp + 202.6667dp + 204.4444dp + 206.2222dp + 208.0000dp + 209.7778dp + 211.5556dp + 213.3333dp + 215.1111dp + 216.8889dp + 218.6667dp + 220.4444dp + 222.2222dp + 224.0000dp + 225.7778dp + 227.5556dp + 229.3333dp + 231.1111dp + 232.8889dp + 234.6667dp + 236.4444dp + 238.2222dp + 240.0000dp + 241.7778dp + 243.5556dp + 245.3333dp + 247.1111dp + 248.8889dp + 250.6667dp + 252.4444dp + 254.2222dp + 256.0000dp + 257.7778dp + 259.5556dp + 261.3333dp + 263.1111dp + 264.8889dp + 266.6667dp + 268.4444dp + 270.2222dp + 272.0000dp + 273.7778dp + 275.5556dp + 277.3333dp + 279.1111dp + 280.8889dp + 282.6667dp + 284.4444dp + 286.2222dp + 288.0000dp + 289.7778dp + 291.5556dp + 293.3333dp + 295.1111dp + 296.8889dp + 298.6667dp + 300.4444dp + 302.2222dp + 304.0000dp + 305.7778dp + 307.5556dp + 309.3333dp + 311.1111dp + 312.8889dp + 314.6667dp + 316.4444dp + 318.2222dp + 320.0000dp + 321.7778dp + 323.5556dp + 325.3333dp + 327.1111dp + 328.8889dp + 330.6667dp + 332.4444dp + 334.2222dp + 336.0000dp + 337.7778dp + 339.5556dp + 341.3333dp + 343.1111dp + 344.8889dp + 346.6667dp + 348.4444dp + 350.2222dp + 352.0000dp + 353.7778dp + 355.5556dp + 357.3333dp + 359.1111dp + 360.8889dp + 362.6667dp + 364.4444dp + 366.2222dp + 368.0000dp + 369.7778dp + 371.5556dp + 373.3333dp + 375.1111dp + 376.8889dp + 378.6667dp + 380.4444dp + 382.2222dp + 384.0000dp + 385.7778dp + 387.5556dp + 389.3333dp + 391.1111dp + 392.8889dp + 394.6667dp + 396.4444dp + 398.2222dp + 400.0000dp + 401.7778dp + 403.5556dp + 405.3333dp + 407.1111dp + 408.8889dp + 410.6667dp + 412.4444dp + 414.2222dp + 416.0000dp + 417.7778dp + 419.5556dp + 421.3333dp + 423.1111dp + 424.8889dp + 426.6667dp + 428.4444dp + 430.2222dp + 432.0000dp + 433.7778dp + 435.5556dp + 437.3333dp + 439.1111dp + 440.8889dp + 442.6667dp + 444.4444dp + 446.2222dp + 448.0000dp + 449.7778dp + 451.5556dp + 453.3333dp + 455.1111dp + 456.8889dp + 458.6667dp + 460.4444dp + 462.2222dp + 464.0000dp + 465.7778dp + 467.5556dp + 469.3333dp + 471.1111dp + 472.8889dp + 474.6667dp + 476.4444dp + 478.2222dp + 480.0000dp + 481.7778dp + 483.5556dp + 485.3333dp + 487.1111dp + 488.8889dp + 490.6667dp + 492.4444dp + 494.2222dp + 496.0000dp + 497.7778dp + 499.5556dp + 501.3333dp + 503.1111dp + 504.8889dp + 506.6667dp + 508.4444dp + 510.2222dp + 512.0000dp + 513.7778dp + 515.5556dp + 517.3333dp + 519.1111dp + 520.8889dp + 522.6667dp + 524.4444dp + 526.2222dp + 528.0000dp + 529.7778dp + 531.5556dp + 533.3333dp + 535.1111dp + 536.8889dp + 538.6667dp + 540.4444dp + 542.2222dp + 544.0000dp + 545.7778dp + 547.5556dp + 549.3333dp + 551.1111dp + 552.8889dp + 554.6667dp + 556.4444dp + 558.2222dp + 560.0000dp + 561.7778dp + 563.5556dp + 565.3333dp + 567.1111dp + 568.8889dp + 570.6667dp + 572.4444dp + 574.2222dp + 576.0000dp + 577.7778dp + 579.5556dp + 581.3333dp + 583.1111dp + 584.8889dp + 586.6667dp + 588.4444dp + 590.2222dp + 592.0000dp + 593.7778dp + 595.5556dp + 597.3333dp + 599.1111dp + 600.8889dp + 602.6667dp + 604.4444dp + 606.2222dp + 608.0000dp + 609.7778dp + 611.5556dp + 613.3333dp + 615.1111dp + 616.8889dp + 618.6667dp + 620.4444dp + 622.2222dp + 624.0000dp + 625.7778dp + 627.5556dp + 629.3333dp + 631.1111dp + 632.8889dp + 634.6667dp + 636.4444dp + 638.2222dp + 640.0000dp + 648.8889dp + 657.7778dp + 711.1111dp + 728.8889dp + 750.2222dp + 839.1111dp + 888.8889dp + 1066.6667dp + 1137.7778dp + 1280.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_sp.xml new file mode 100644 index 0000000..ac00db6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw640dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 10.6667sp + 12.4444sp + 14.2222sp + 16.0000sp + 17.7778sp + 19.5556sp + 21.3333sp + 23.1111sp + 24.8889sp + 26.6667sp + 28.4444sp + 30.2222sp + 32.0000sp + 33.7778sp + 35.5556sp + 37.3333sp + 39.1111sp + 40.8889sp + 42.6667sp + 44.4444sp + 49.7778sp + 53.3333sp + 56.8889sp + 60.4444sp + 64.0000sp + 67.5556sp + 71.1111sp + 74.6667sp + 85.3333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_dp.xml new file mode 100644 index 0000000..66adb83 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -110.3333dp + -55.1667dp + -36.7778dp + -22.0667dp + -18.3889dp + -14.7111dp + -9.1944dp + -3.6778dp + -1.8389dp + + 0.1839dp + 0.9194dp + 1.8389dp + 2.7583dp + 3.6778dp + 4.5972dp + 5.5167dp + 6.4361dp + 7.3556dp + 8.2750dp + 9.1944dp + 11.0333dp + 12.8722dp + 14.7111dp + 16.5500dp + 18.3889dp + 20.2278dp + 22.0667dp + 23.9056dp + 25.7444dp + 27.5833dp + 29.4222dp + 31.2611dp + 33.1000dp + 34.9389dp + 36.7778dp + 38.6167dp + 40.4556dp + 42.2944dp + 44.1333dp + 45.9722dp + 47.8111dp + 49.6500dp + 51.4889dp + 53.3278dp + 55.1667dp + 57.0056dp + 58.8444dp + 60.6833dp + 62.5222dp + 64.3611dp + 66.2000dp + 68.0389dp + 69.8778dp + 71.7167dp + 73.5556dp + 75.3944dp + 77.2333dp + 79.0722dp + 80.9111dp + 82.7500dp + 84.5889dp + 86.4278dp + 88.2667dp + 90.1056dp + 91.9444dp + 93.7833dp + 95.6222dp + 97.4611dp + 99.3000dp + 101.1389dp + 102.9778dp + 104.8167dp + 106.6556dp + 108.4944dp + 110.3333dp + 112.1722dp + 114.0111dp + 115.8500dp + 117.6889dp + 119.5278dp + 121.3667dp + 123.2056dp + 125.0444dp + 126.8833dp + 128.7222dp + 130.5611dp + 132.4000dp + 134.2389dp + 136.0778dp + 137.9167dp + 139.7556dp + 141.5944dp + 143.4333dp + 145.2722dp + 147.1111dp + 148.9500dp + 150.7889dp + 152.6278dp + 154.4667dp + 156.3056dp + 158.1444dp + 159.9833dp + 161.8222dp + 163.6611dp + 165.5000dp + 167.3389dp + 169.1778dp + 171.0167dp + 172.8556dp + 174.6944dp + 176.5333dp + 178.3722dp + 180.2111dp + 182.0500dp + 183.8889dp + 185.7278dp + 187.5667dp + 189.4056dp + 191.2444dp + 193.0833dp + 194.9222dp + 196.7611dp + 198.6000dp + 200.4389dp + 202.2778dp + 204.1167dp + 205.9556dp + 207.7944dp + 209.6333dp + 211.4722dp + 213.3111dp + 215.1500dp + 216.9889dp + 218.8278dp + 220.6667dp + 222.5056dp + 224.3444dp + 226.1833dp + 228.0222dp + 229.8611dp + 231.7000dp + 233.5389dp + 235.3778dp + 237.2167dp + 239.0556dp + 240.8944dp + 242.7333dp + 244.5722dp + 246.4111dp + 248.2500dp + 250.0889dp + 251.9278dp + 253.7667dp + 255.6056dp + 257.4444dp + 259.2833dp + 261.1222dp + 262.9611dp + 264.8000dp + 266.6389dp + 268.4778dp + 270.3167dp + 272.1556dp + 273.9944dp + 275.8333dp + 277.6722dp + 279.5111dp + 281.3500dp + 283.1889dp + 285.0278dp + 286.8667dp + 288.7056dp + 290.5444dp + 292.3833dp + 294.2222dp + 296.0611dp + 297.9000dp + 299.7389dp + 301.5778dp + 303.4167dp + 305.2556dp + 307.0944dp + 308.9333dp + 310.7722dp + 312.6111dp + 314.4500dp + 316.2889dp + 318.1278dp + 319.9667dp + 321.8056dp + 323.6444dp + 325.4833dp + 327.3222dp + 329.1611dp + 331.0000dp + 332.8389dp + 334.6778dp + 336.5167dp + 338.3556dp + 340.1944dp + 342.0333dp + 343.8722dp + 345.7111dp + 347.5500dp + 349.3889dp + 351.2278dp + 353.0667dp + 354.9056dp + 356.7444dp + 358.5833dp + 360.4222dp + 362.2611dp + 364.1000dp + 365.9389dp + 367.7778dp + 369.6167dp + 371.4556dp + 373.2944dp + 375.1333dp + 376.9722dp + 378.8111dp + 380.6500dp + 382.4889dp + 384.3278dp + 386.1667dp + 388.0056dp + 389.8444dp + 391.6833dp + 393.5222dp + 395.3611dp + 397.2000dp + 399.0389dp + 400.8778dp + 402.7167dp + 404.5556dp + 406.3944dp + 408.2333dp + 410.0722dp + 411.9111dp + 413.7500dp + 415.5889dp + 417.4278dp + 419.2667dp + 421.1056dp + 422.9444dp + 424.7833dp + 426.6222dp + 428.4611dp + 430.3000dp + 432.1389dp + 433.9778dp + 435.8167dp + 437.6556dp + 439.4944dp + 441.3333dp + 443.1722dp + 445.0111dp + 446.8500dp + 448.6889dp + 450.5278dp + 452.3667dp + 454.2056dp + 456.0444dp + 457.8833dp + 459.7222dp + 461.5611dp + 463.4000dp + 465.2389dp + 467.0778dp + 468.9167dp + 470.7556dp + 472.5944dp + 474.4333dp + 476.2722dp + 478.1111dp + 479.9500dp + 481.7889dp + 483.6278dp + 485.4667dp + 487.3056dp + 489.1444dp + 490.9833dp + 492.8222dp + 494.6611dp + 496.5000dp + 498.3389dp + 500.1778dp + 502.0167dp + 503.8556dp + 505.6944dp + 507.5333dp + 509.3722dp + 511.2111dp + 513.0500dp + 514.8889dp + 516.7278dp + 518.5667dp + 520.4056dp + 522.2444dp + 524.0833dp + 525.9222dp + 527.7611dp + 529.6000dp + 531.4389dp + 533.2778dp + 535.1167dp + 536.9556dp + 538.7944dp + 540.6333dp + 542.4722dp + 544.3111dp + 546.1500dp + 547.9889dp + 549.8278dp + 551.6667dp + 553.5056dp + 555.3444dp + 557.1833dp + 559.0222dp + 560.8611dp + 562.7000dp + 564.5389dp + 566.3778dp + 568.2167dp + 570.0556dp + 571.8944dp + 573.7333dp + 575.5722dp + 577.4111dp + 579.2500dp + 581.0889dp + 582.9278dp + 584.7667dp + 586.6056dp + 588.4444dp + 590.2833dp + 592.1222dp + 593.9611dp + 595.8000dp + 597.6389dp + 599.4778dp + 601.3167dp + 603.1556dp + 604.9944dp + 606.8333dp + 608.6722dp + 610.5111dp + 612.3500dp + 614.1889dp + 616.0278dp + 617.8667dp + 619.7056dp + 621.5444dp + 623.3833dp + 625.2222dp + 627.0611dp + 628.9000dp + 630.7389dp + 632.5778dp + 634.4167dp + 636.2556dp + 638.0944dp + 639.9333dp + 641.7722dp + 643.6111dp + 645.4500dp + 647.2889dp + 649.1278dp + 650.9667dp + 652.8056dp + 654.6444dp + 656.4833dp + 658.3222dp + 660.1611dp + 662.0000dp + 671.1944dp + 680.3889dp + 735.5556dp + 753.9444dp + 776.0111dp + 867.9556dp + 919.4444dp + 1103.3333dp + 1176.8889dp + 1324.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_sp.xml new file mode 100644 index 0000000..d9e0e82 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw662dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 11.0333sp + 12.8722sp + 14.7111sp + 16.5500sp + 18.3889sp + 20.2278sp + 22.0667sp + 23.9056sp + 25.7444sp + 27.5833sp + 29.4222sp + 31.2611sp + 33.1000sp + 34.9389sp + 36.7778sp + 38.6167sp + 40.4556sp + 42.2944sp + 44.1333sp + 45.9722sp + 51.4889sp + 55.1667sp + 58.8444sp + 62.5222sp + 66.2000sp + 69.8778sp + 73.5556sp + 77.2333sp + 88.2667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_dp.xml new file mode 100644 index 0000000..032414a --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -120.0000dp + -60.0000dp + -40.0000dp + -24.0000dp + -20.0000dp + -16.0000dp + -10.0000dp + -4.0000dp + -2.0000dp + + 0.2000dp + 1.0000dp + 2.0000dp + 3.0000dp + 4.0000dp + 5.0000dp + 6.0000dp + 7.0000dp + 8.0000dp + 9.0000dp + 10.0000dp + 12.0000dp + 14.0000dp + 16.0000dp + 18.0000dp + 20.0000dp + 22.0000dp + 24.0000dp + 26.0000dp + 28.0000dp + 30.0000dp + 32.0000dp + 34.0000dp + 36.0000dp + 38.0000dp + 40.0000dp + 42.0000dp + 44.0000dp + 46.0000dp + 48.0000dp + 50.0000dp + 52.0000dp + 54.0000dp + 56.0000dp + 58.0000dp + 60.0000dp + 62.0000dp + 64.0000dp + 66.0000dp + 68.0000dp + 70.0000dp + 72.0000dp + 74.0000dp + 76.0000dp + 78.0000dp + 80.0000dp + 82.0000dp + 84.0000dp + 86.0000dp + 88.0000dp + 90.0000dp + 92.0000dp + 94.0000dp + 96.0000dp + 98.0000dp + 100.0000dp + 102.0000dp + 104.0000dp + 106.0000dp + 108.0000dp + 110.0000dp + 112.0000dp + 114.0000dp + 116.0000dp + 118.0000dp + 120.0000dp + 122.0000dp + 124.0000dp + 126.0000dp + 128.0000dp + 130.0000dp + 132.0000dp + 134.0000dp + 136.0000dp + 138.0000dp + 140.0000dp + 142.0000dp + 144.0000dp + 146.0000dp + 148.0000dp + 150.0000dp + 152.0000dp + 154.0000dp + 156.0000dp + 158.0000dp + 160.0000dp + 162.0000dp + 164.0000dp + 166.0000dp + 168.0000dp + 170.0000dp + 172.0000dp + 174.0000dp + 176.0000dp + 178.0000dp + 180.0000dp + 182.0000dp + 184.0000dp + 186.0000dp + 188.0000dp + 190.0000dp + 192.0000dp + 194.0000dp + 196.0000dp + 198.0000dp + 200.0000dp + 202.0000dp + 204.0000dp + 206.0000dp + 208.0000dp + 210.0000dp + 212.0000dp + 214.0000dp + 216.0000dp + 218.0000dp + 220.0000dp + 222.0000dp + 224.0000dp + 226.0000dp + 228.0000dp + 230.0000dp + 232.0000dp + 234.0000dp + 236.0000dp + 238.0000dp + 240.0000dp + 242.0000dp + 244.0000dp + 246.0000dp + 248.0000dp + 250.0000dp + 252.0000dp + 254.0000dp + 256.0000dp + 258.0000dp + 260.0000dp + 262.0000dp + 264.0000dp + 266.0000dp + 268.0000dp + 270.0000dp + 272.0000dp + 274.0000dp + 276.0000dp + 278.0000dp + 280.0000dp + 282.0000dp + 284.0000dp + 286.0000dp + 288.0000dp + 290.0000dp + 292.0000dp + 294.0000dp + 296.0000dp + 298.0000dp + 300.0000dp + 302.0000dp + 304.0000dp + 306.0000dp + 308.0000dp + 310.0000dp + 312.0000dp + 314.0000dp + 316.0000dp + 318.0000dp + 320.0000dp + 322.0000dp + 324.0000dp + 326.0000dp + 328.0000dp + 330.0000dp + 332.0000dp + 334.0000dp + 336.0000dp + 338.0000dp + 340.0000dp + 342.0000dp + 344.0000dp + 346.0000dp + 348.0000dp + 350.0000dp + 352.0000dp + 354.0000dp + 356.0000dp + 358.0000dp + 360.0000dp + 362.0000dp + 364.0000dp + 366.0000dp + 368.0000dp + 370.0000dp + 372.0000dp + 374.0000dp + 376.0000dp + 378.0000dp + 380.0000dp + 382.0000dp + 384.0000dp + 386.0000dp + 388.0000dp + 390.0000dp + 392.0000dp + 394.0000dp + 396.0000dp + 398.0000dp + 400.0000dp + 402.0000dp + 404.0000dp + 406.0000dp + 408.0000dp + 410.0000dp + 412.0000dp + 414.0000dp + 416.0000dp + 418.0000dp + 420.0000dp + 422.0000dp + 424.0000dp + 426.0000dp + 428.0000dp + 430.0000dp + 432.0000dp + 434.0000dp + 436.0000dp + 438.0000dp + 440.0000dp + 442.0000dp + 444.0000dp + 446.0000dp + 448.0000dp + 450.0000dp + 452.0000dp + 454.0000dp + 456.0000dp + 458.0000dp + 460.0000dp + 462.0000dp + 464.0000dp + 466.0000dp + 468.0000dp + 470.0000dp + 472.0000dp + 474.0000dp + 476.0000dp + 478.0000dp + 480.0000dp + 482.0000dp + 484.0000dp + 486.0000dp + 488.0000dp + 490.0000dp + 492.0000dp + 494.0000dp + 496.0000dp + 498.0000dp + 500.0000dp + 502.0000dp + 504.0000dp + 506.0000dp + 508.0000dp + 510.0000dp + 512.0000dp + 514.0000dp + 516.0000dp + 518.0000dp + 520.0000dp + 522.0000dp + 524.0000dp + 526.0000dp + 528.0000dp + 530.0000dp + 532.0000dp + 534.0000dp + 536.0000dp + 538.0000dp + 540.0000dp + 542.0000dp + 544.0000dp + 546.0000dp + 548.0000dp + 550.0000dp + 552.0000dp + 554.0000dp + 556.0000dp + 558.0000dp + 560.0000dp + 562.0000dp + 564.0000dp + 566.0000dp + 568.0000dp + 570.0000dp + 572.0000dp + 574.0000dp + 576.0000dp + 578.0000dp + 580.0000dp + 582.0000dp + 584.0000dp + 586.0000dp + 588.0000dp + 590.0000dp + 592.0000dp + 594.0000dp + 596.0000dp + 598.0000dp + 600.0000dp + 602.0000dp + 604.0000dp + 606.0000dp + 608.0000dp + 610.0000dp + 612.0000dp + 614.0000dp + 616.0000dp + 618.0000dp + 620.0000dp + 622.0000dp + 624.0000dp + 626.0000dp + 628.0000dp + 630.0000dp + 632.0000dp + 634.0000dp + 636.0000dp + 638.0000dp + 640.0000dp + 642.0000dp + 644.0000dp + 646.0000dp + 648.0000dp + 650.0000dp + 652.0000dp + 654.0000dp + 656.0000dp + 658.0000dp + 660.0000dp + 662.0000dp + 664.0000dp + 666.0000dp + 668.0000dp + 670.0000dp + 672.0000dp + 674.0000dp + 676.0000dp + 678.0000dp + 680.0000dp + 682.0000dp + 684.0000dp + 686.0000dp + 688.0000dp + 690.0000dp + 692.0000dp + 694.0000dp + 696.0000dp + 698.0000dp + 700.0000dp + 702.0000dp + 704.0000dp + 706.0000dp + 708.0000dp + 710.0000dp + 712.0000dp + 714.0000dp + 716.0000dp + 718.0000dp + 720.0000dp + 730.0000dp + 740.0000dp + 800.0000dp + 820.0000dp + 844.0000dp + 944.0000dp + 1000.0000dp + 1200.0000dp + 1280.0000dp + 1440.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_sp.xml new file mode 100644 index 0000000..345bfa4 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw720dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 12.0000sp + 14.0000sp + 16.0000sp + 18.0000sp + 20.0000sp + 22.0000sp + 24.0000sp + 26.0000sp + 28.0000sp + 30.0000sp + 32.0000sp + 34.0000sp + 36.0000sp + 38.0000sp + 40.0000sp + 42.0000sp + 44.0000sp + 46.0000sp + 48.0000sp + 50.0000sp + 56.0000sp + 60.0000sp + 64.0000sp + 68.0000sp + 72.0000sp + 76.0000sp + 80.0000sp + 84.0000sp + 96.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_dp.xml new file mode 100644 index 0000000..ca4d7c7 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -128.0000dp + -64.0000dp + -42.6667dp + -25.6000dp + -21.3333dp + -17.0667dp + -10.6667dp + -4.2667dp + -2.1333dp + + 0.2133dp + 1.0667dp + 2.1333dp + 3.2000dp + 4.2667dp + 5.3333dp + 6.4000dp + 7.4667dp + 8.5333dp + 9.6000dp + 10.6667dp + 12.8000dp + 14.9333dp + 17.0667dp + 19.2000dp + 21.3333dp + 23.4667dp + 25.6000dp + 27.7333dp + 29.8667dp + 32.0000dp + 34.1333dp + 36.2667dp + 38.4000dp + 40.5333dp + 42.6667dp + 44.8000dp + 46.9333dp + 49.0667dp + 51.2000dp + 53.3333dp + 55.4667dp + 57.6000dp + 59.7333dp + 61.8667dp + 64.0000dp + 66.1333dp + 68.2667dp + 70.4000dp + 72.5333dp + 74.6667dp + 76.8000dp + 78.9333dp + 81.0667dp + 83.2000dp + 85.3333dp + 87.4667dp + 89.6000dp + 91.7333dp + 93.8667dp + 96.0000dp + 98.1333dp + 100.2667dp + 102.4000dp + 104.5333dp + 106.6667dp + 108.8000dp + 110.9333dp + 113.0667dp + 115.2000dp + 117.3333dp + 119.4667dp + 121.6000dp + 123.7333dp + 125.8667dp + 128.0000dp + 130.1333dp + 132.2667dp + 134.4000dp + 136.5333dp + 138.6667dp + 140.8000dp + 142.9333dp + 145.0667dp + 147.2000dp + 149.3333dp + 151.4667dp + 153.6000dp + 155.7333dp + 157.8667dp + 160.0000dp + 162.1333dp + 164.2667dp + 166.4000dp + 168.5333dp + 170.6667dp + 172.8000dp + 174.9333dp + 177.0667dp + 179.2000dp + 181.3333dp + 183.4667dp + 185.6000dp + 187.7333dp + 189.8667dp + 192.0000dp + 194.1333dp + 196.2667dp + 198.4000dp + 200.5333dp + 202.6667dp + 204.8000dp + 206.9333dp + 209.0667dp + 211.2000dp + 213.3333dp + 215.4667dp + 217.6000dp + 219.7333dp + 221.8667dp + 224.0000dp + 226.1333dp + 228.2667dp + 230.4000dp + 232.5333dp + 234.6667dp + 236.8000dp + 238.9333dp + 241.0667dp + 243.2000dp + 245.3333dp + 247.4667dp + 249.6000dp + 251.7333dp + 253.8667dp + 256.0000dp + 258.1333dp + 260.2667dp + 262.4000dp + 264.5333dp + 266.6667dp + 268.8000dp + 270.9333dp + 273.0667dp + 275.2000dp + 277.3333dp + 279.4667dp + 281.6000dp + 283.7333dp + 285.8667dp + 288.0000dp + 290.1333dp + 292.2667dp + 294.4000dp + 296.5333dp + 298.6667dp + 300.8000dp + 302.9333dp + 305.0667dp + 307.2000dp + 309.3333dp + 311.4667dp + 313.6000dp + 315.7333dp + 317.8667dp + 320.0000dp + 322.1333dp + 324.2667dp + 326.4000dp + 328.5333dp + 330.6667dp + 332.8000dp + 334.9333dp + 337.0667dp + 339.2000dp + 341.3333dp + 343.4667dp + 345.6000dp + 347.7333dp + 349.8667dp + 352.0000dp + 354.1333dp + 356.2667dp + 358.4000dp + 360.5333dp + 362.6667dp + 364.8000dp + 366.9333dp + 369.0667dp + 371.2000dp + 373.3333dp + 375.4667dp + 377.6000dp + 379.7333dp + 381.8667dp + 384.0000dp + 386.1333dp + 388.2667dp + 390.4000dp + 392.5333dp + 394.6667dp + 396.8000dp + 398.9333dp + 401.0667dp + 403.2000dp + 405.3333dp + 407.4667dp + 409.6000dp + 411.7333dp + 413.8667dp + 416.0000dp + 418.1333dp + 420.2667dp + 422.4000dp + 424.5333dp + 426.6667dp + 428.8000dp + 430.9333dp + 433.0667dp + 435.2000dp + 437.3333dp + 439.4667dp + 441.6000dp + 443.7333dp + 445.8667dp + 448.0000dp + 450.1333dp + 452.2667dp + 454.4000dp + 456.5333dp + 458.6667dp + 460.8000dp + 462.9333dp + 465.0667dp + 467.2000dp + 469.3333dp + 471.4667dp + 473.6000dp + 475.7333dp + 477.8667dp + 480.0000dp + 482.1333dp + 484.2667dp + 486.4000dp + 488.5333dp + 490.6667dp + 492.8000dp + 494.9333dp + 497.0667dp + 499.2000dp + 501.3333dp + 503.4667dp + 505.6000dp + 507.7333dp + 509.8667dp + 512.0000dp + 514.1333dp + 516.2667dp + 518.4000dp + 520.5333dp + 522.6667dp + 524.8000dp + 526.9333dp + 529.0667dp + 531.2000dp + 533.3333dp + 535.4667dp + 537.6000dp + 539.7333dp + 541.8667dp + 544.0000dp + 546.1333dp + 548.2667dp + 550.4000dp + 552.5333dp + 554.6667dp + 556.8000dp + 558.9333dp + 561.0667dp + 563.2000dp + 565.3333dp + 567.4667dp + 569.6000dp + 571.7333dp + 573.8667dp + 576.0000dp + 578.1333dp + 580.2667dp + 582.4000dp + 584.5333dp + 586.6667dp + 588.8000dp + 590.9333dp + 593.0667dp + 595.2000dp + 597.3333dp + 599.4667dp + 601.6000dp + 603.7333dp + 605.8667dp + 608.0000dp + 610.1333dp + 612.2667dp + 614.4000dp + 616.5333dp + 618.6667dp + 620.8000dp + 622.9333dp + 625.0667dp + 627.2000dp + 629.3333dp + 631.4667dp + 633.6000dp + 635.7333dp + 637.8667dp + 640.0000dp + 642.1333dp + 644.2667dp + 646.4000dp + 648.5333dp + 650.6667dp + 652.8000dp + 654.9333dp + 657.0667dp + 659.2000dp + 661.3333dp + 663.4667dp + 665.6000dp + 667.7333dp + 669.8667dp + 672.0000dp + 674.1333dp + 676.2667dp + 678.4000dp + 680.5333dp + 682.6667dp + 684.8000dp + 686.9333dp + 689.0667dp + 691.2000dp + 693.3333dp + 695.4667dp + 697.6000dp + 699.7333dp + 701.8667dp + 704.0000dp + 706.1333dp + 708.2667dp + 710.4000dp + 712.5333dp + 714.6667dp + 716.8000dp + 718.9333dp + 721.0667dp + 723.2000dp + 725.3333dp + 727.4667dp + 729.6000dp + 731.7333dp + 733.8667dp + 736.0000dp + 738.1333dp + 740.2667dp + 742.4000dp + 744.5333dp + 746.6667dp + 748.8000dp + 750.9333dp + 753.0667dp + 755.2000dp + 757.3333dp + 759.4667dp + 761.6000dp + 763.7333dp + 765.8667dp + 768.0000dp + 778.6667dp + 789.3333dp + 853.3333dp + 874.6667dp + 900.2667dp + 1006.9333dp + 1066.6667dp + 1280.0000dp + 1365.3333dp + 1536.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_sp.xml new file mode 100644 index 0000000..212928e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw768dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 12.8000sp + 14.9333sp + 17.0667sp + 19.2000sp + 21.3333sp + 23.4667sp + 25.6000sp + 27.7333sp + 29.8667sp + 32.0000sp + 34.1333sp + 36.2667sp + 38.4000sp + 40.5333sp + 42.6667sp + 44.8000sp + 46.9333sp + 49.0667sp + 51.2000sp + 53.3333sp + 59.7333sp + 64.0000sp + 68.2667sp + 72.5333sp + 76.8000sp + 81.0667sp + 85.3333sp + 89.6000sp + 102.4000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_dp.xml new file mode 100644 index 0000000..b486684 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -133.3333dp + -66.6667dp + -44.4444dp + -26.6667dp + -22.2222dp + -17.7778dp + -11.1111dp + -4.4444dp + -2.2222dp + + 0.2222dp + 1.1111dp + 2.2222dp + 3.3333dp + 4.4444dp + 5.5556dp + 6.6667dp + 7.7778dp + 8.8889dp + 10.0000dp + 11.1111dp + 13.3333dp + 15.5556dp + 17.7778dp + 20.0000dp + 22.2222dp + 24.4444dp + 26.6667dp + 28.8889dp + 31.1111dp + 33.3333dp + 35.5556dp + 37.7778dp + 40.0000dp + 42.2222dp + 44.4444dp + 46.6667dp + 48.8889dp + 51.1111dp + 53.3333dp + 55.5556dp + 57.7778dp + 60.0000dp + 62.2222dp + 64.4444dp + 66.6667dp + 68.8889dp + 71.1111dp + 73.3333dp + 75.5556dp + 77.7778dp + 80.0000dp + 82.2222dp + 84.4444dp + 86.6667dp + 88.8889dp + 91.1111dp + 93.3333dp + 95.5556dp + 97.7778dp + 100.0000dp + 102.2222dp + 104.4444dp + 106.6667dp + 108.8889dp + 111.1111dp + 113.3333dp + 115.5556dp + 117.7778dp + 120.0000dp + 122.2222dp + 124.4444dp + 126.6667dp + 128.8889dp + 131.1111dp + 133.3333dp + 135.5556dp + 137.7778dp + 140.0000dp + 142.2222dp + 144.4444dp + 146.6667dp + 148.8889dp + 151.1111dp + 153.3333dp + 155.5556dp + 157.7778dp + 160.0000dp + 162.2222dp + 164.4444dp + 166.6667dp + 168.8889dp + 171.1111dp + 173.3333dp + 175.5556dp + 177.7778dp + 180.0000dp + 182.2222dp + 184.4444dp + 186.6667dp + 188.8889dp + 191.1111dp + 193.3333dp + 195.5556dp + 197.7778dp + 200.0000dp + 202.2222dp + 204.4444dp + 206.6667dp + 208.8889dp + 211.1111dp + 213.3333dp + 215.5556dp + 217.7778dp + 220.0000dp + 222.2222dp + 224.4444dp + 226.6667dp + 228.8889dp + 231.1111dp + 233.3333dp + 235.5556dp + 237.7778dp + 240.0000dp + 242.2222dp + 244.4444dp + 246.6667dp + 248.8889dp + 251.1111dp + 253.3333dp + 255.5556dp + 257.7778dp + 260.0000dp + 262.2222dp + 264.4444dp + 266.6667dp + 268.8889dp + 271.1111dp + 273.3333dp + 275.5556dp + 277.7778dp + 280.0000dp + 282.2222dp + 284.4444dp + 286.6667dp + 288.8889dp + 291.1111dp + 293.3333dp + 295.5556dp + 297.7778dp + 300.0000dp + 302.2222dp + 304.4444dp + 306.6667dp + 308.8889dp + 311.1111dp + 313.3333dp + 315.5556dp + 317.7778dp + 320.0000dp + 322.2222dp + 324.4444dp + 326.6667dp + 328.8889dp + 331.1111dp + 333.3333dp + 335.5556dp + 337.7778dp + 340.0000dp + 342.2222dp + 344.4444dp + 346.6667dp + 348.8889dp + 351.1111dp + 353.3333dp + 355.5556dp + 357.7778dp + 360.0000dp + 362.2222dp + 364.4444dp + 366.6667dp + 368.8889dp + 371.1111dp + 373.3333dp + 375.5556dp + 377.7778dp + 380.0000dp + 382.2222dp + 384.4444dp + 386.6667dp + 388.8889dp + 391.1111dp + 393.3333dp + 395.5556dp + 397.7778dp + 400.0000dp + 402.2222dp + 404.4444dp + 406.6667dp + 408.8889dp + 411.1111dp + 413.3333dp + 415.5556dp + 417.7778dp + 420.0000dp + 422.2222dp + 424.4444dp + 426.6667dp + 428.8889dp + 431.1111dp + 433.3333dp + 435.5556dp + 437.7778dp + 440.0000dp + 442.2222dp + 444.4444dp + 446.6667dp + 448.8889dp + 451.1111dp + 453.3333dp + 455.5556dp + 457.7778dp + 460.0000dp + 462.2222dp + 464.4444dp + 466.6667dp + 468.8889dp + 471.1111dp + 473.3333dp + 475.5556dp + 477.7778dp + 480.0000dp + 482.2222dp + 484.4444dp + 486.6667dp + 488.8889dp + 491.1111dp + 493.3333dp + 495.5556dp + 497.7778dp + 500.0000dp + 502.2222dp + 504.4444dp + 506.6667dp + 508.8889dp + 511.1111dp + 513.3333dp + 515.5556dp + 517.7778dp + 520.0000dp + 522.2222dp + 524.4444dp + 526.6667dp + 528.8889dp + 531.1111dp + 533.3333dp + 535.5556dp + 537.7778dp + 540.0000dp + 542.2222dp + 544.4444dp + 546.6667dp + 548.8889dp + 551.1111dp + 553.3333dp + 555.5556dp + 557.7778dp + 560.0000dp + 562.2222dp + 564.4444dp + 566.6667dp + 568.8889dp + 571.1111dp + 573.3333dp + 575.5556dp + 577.7778dp + 580.0000dp + 582.2222dp + 584.4444dp + 586.6667dp + 588.8889dp + 591.1111dp + 593.3333dp + 595.5556dp + 597.7778dp + 600.0000dp + 602.2222dp + 604.4444dp + 606.6667dp + 608.8889dp + 611.1111dp + 613.3333dp + 615.5556dp + 617.7778dp + 620.0000dp + 622.2222dp + 624.4444dp + 626.6667dp + 628.8889dp + 631.1111dp + 633.3333dp + 635.5556dp + 637.7778dp + 640.0000dp + 642.2222dp + 644.4444dp + 646.6667dp + 648.8889dp + 651.1111dp + 653.3333dp + 655.5556dp + 657.7778dp + 660.0000dp + 662.2222dp + 664.4444dp + 666.6667dp + 668.8889dp + 671.1111dp + 673.3333dp + 675.5556dp + 677.7778dp + 680.0000dp + 682.2222dp + 684.4444dp + 686.6667dp + 688.8889dp + 691.1111dp + 693.3333dp + 695.5556dp + 697.7778dp + 700.0000dp + 702.2222dp + 704.4444dp + 706.6667dp + 708.8889dp + 711.1111dp + 713.3333dp + 715.5556dp + 717.7778dp + 720.0000dp + 722.2222dp + 724.4444dp + 726.6667dp + 728.8889dp + 731.1111dp + 733.3333dp + 735.5556dp + 737.7778dp + 740.0000dp + 742.2222dp + 744.4444dp + 746.6667dp + 748.8889dp + 751.1111dp + 753.3333dp + 755.5556dp + 757.7778dp + 760.0000dp + 762.2222dp + 764.4444dp + 766.6667dp + 768.8889dp + 771.1111dp + 773.3333dp + 775.5556dp + 777.7778dp + 780.0000dp + 782.2222dp + 784.4444dp + 786.6667dp + 788.8889dp + 791.1111dp + 793.3333dp + 795.5556dp + 797.7778dp + 800.0000dp + 811.1111dp + 822.2222dp + 888.8889dp + 911.1111dp + 937.7778dp + 1048.8889dp + 1111.1111dp + 1333.3333dp + 1422.2222dp + 1600.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_sp.xml new file mode 100644 index 0000000..5aff008 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw800dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 13.3333sp + 15.5556sp + 17.7778sp + 20.0000sp + 22.2222sp + 24.4444sp + 26.6667sp + 28.8889sp + 31.1111sp + 33.3333sp + 35.5556sp + 37.7778sp + 40.0000sp + 42.2222sp + 44.4444sp + 46.6667sp + 48.8889sp + 51.1111sp + 53.3333sp + 55.5556sp + 62.2222sp + 66.6667sp + 71.1111sp + 75.5556sp + 80.0000sp + 84.4444sp + 88.8889sp + 93.3333sp + 106.6667sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_dp.xml new file mode 100644 index 0000000..cd7f4c8 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -135.1667dp + -67.5833dp + -45.0556dp + -27.0333dp + -22.5278dp + -18.0222dp + -11.2639dp + -4.5056dp + -2.2528dp + + 0.2253dp + 1.1264dp + 2.2528dp + 3.3792dp + 4.5056dp + 5.6319dp + 6.7583dp + 7.8847dp + 9.0111dp + 10.1375dp + 11.2639dp + 13.5167dp + 15.7694dp + 18.0222dp + 20.2750dp + 22.5278dp + 24.7806dp + 27.0333dp + 29.2861dp + 31.5389dp + 33.7917dp + 36.0444dp + 38.2972dp + 40.5500dp + 42.8028dp + 45.0556dp + 47.3083dp + 49.5611dp + 51.8139dp + 54.0667dp + 56.3194dp + 58.5722dp + 60.8250dp + 63.0778dp + 65.3306dp + 67.5833dp + 69.8361dp + 72.0889dp + 74.3417dp + 76.5944dp + 78.8472dp + 81.1000dp + 83.3528dp + 85.6056dp + 87.8583dp + 90.1111dp + 92.3639dp + 94.6167dp + 96.8694dp + 99.1222dp + 101.3750dp + 103.6278dp + 105.8806dp + 108.1333dp + 110.3861dp + 112.6389dp + 114.8917dp + 117.1444dp + 119.3972dp + 121.6500dp + 123.9028dp + 126.1556dp + 128.4083dp + 130.6611dp + 132.9139dp + 135.1667dp + 137.4194dp + 139.6722dp + 141.9250dp + 144.1778dp + 146.4306dp + 148.6833dp + 150.9361dp + 153.1889dp + 155.4417dp + 157.6944dp + 159.9472dp + 162.2000dp + 164.4528dp + 166.7056dp + 168.9583dp + 171.2111dp + 173.4639dp + 175.7167dp + 177.9694dp + 180.2222dp + 182.4750dp + 184.7278dp + 186.9806dp + 189.2333dp + 191.4861dp + 193.7389dp + 195.9917dp + 198.2444dp + 200.4972dp + 202.7500dp + 205.0028dp + 207.2556dp + 209.5083dp + 211.7611dp + 214.0139dp + 216.2667dp + 218.5194dp + 220.7722dp + 223.0250dp + 225.2778dp + 227.5306dp + 229.7833dp + 232.0361dp + 234.2889dp + 236.5417dp + 238.7944dp + 241.0472dp + 243.3000dp + 245.5528dp + 247.8056dp + 250.0583dp + 252.3111dp + 254.5639dp + 256.8167dp + 259.0694dp + 261.3222dp + 263.5750dp + 265.8278dp + 268.0806dp + 270.3333dp + 272.5861dp + 274.8389dp + 277.0917dp + 279.3444dp + 281.5972dp + 283.8500dp + 286.1028dp + 288.3556dp + 290.6083dp + 292.8611dp + 295.1139dp + 297.3667dp + 299.6194dp + 301.8722dp + 304.1250dp + 306.3778dp + 308.6306dp + 310.8833dp + 313.1361dp + 315.3889dp + 317.6417dp + 319.8944dp + 322.1472dp + 324.4000dp + 326.6528dp + 328.9056dp + 331.1583dp + 333.4111dp + 335.6639dp + 337.9167dp + 340.1694dp + 342.4222dp + 344.6750dp + 346.9278dp + 349.1806dp + 351.4333dp + 353.6861dp + 355.9389dp + 358.1917dp + 360.4444dp + 362.6972dp + 364.9500dp + 367.2028dp + 369.4556dp + 371.7083dp + 373.9611dp + 376.2139dp + 378.4667dp + 380.7194dp + 382.9722dp + 385.2250dp + 387.4778dp + 389.7306dp + 391.9833dp + 394.2361dp + 396.4889dp + 398.7417dp + 400.9944dp + 403.2472dp + 405.5000dp + 407.7528dp + 410.0056dp + 412.2583dp + 414.5111dp + 416.7639dp + 419.0167dp + 421.2694dp + 423.5222dp + 425.7750dp + 428.0278dp + 430.2806dp + 432.5333dp + 434.7861dp + 437.0389dp + 439.2917dp + 441.5444dp + 443.7972dp + 446.0500dp + 448.3028dp + 450.5556dp + 452.8083dp + 455.0611dp + 457.3139dp + 459.5667dp + 461.8194dp + 464.0722dp + 466.3250dp + 468.5778dp + 470.8306dp + 473.0833dp + 475.3361dp + 477.5889dp + 479.8417dp + 482.0944dp + 484.3472dp + 486.6000dp + 488.8528dp + 491.1056dp + 493.3583dp + 495.6111dp + 497.8639dp + 500.1167dp + 502.3694dp + 504.6222dp + 506.8750dp + 509.1278dp + 511.3806dp + 513.6333dp + 515.8861dp + 518.1389dp + 520.3917dp + 522.6444dp + 524.8972dp + 527.1500dp + 529.4028dp + 531.6556dp + 533.9083dp + 536.1611dp + 538.4139dp + 540.6667dp + 542.9194dp + 545.1722dp + 547.4250dp + 549.6778dp + 551.9306dp + 554.1833dp + 556.4361dp + 558.6889dp + 560.9417dp + 563.1944dp + 565.4472dp + 567.7000dp + 569.9528dp + 572.2056dp + 574.4583dp + 576.7111dp + 578.9639dp + 581.2167dp + 583.4694dp + 585.7222dp + 587.9750dp + 590.2278dp + 592.4806dp + 594.7333dp + 596.9861dp + 599.2389dp + 601.4917dp + 603.7444dp + 605.9972dp + 608.2500dp + 610.5028dp + 612.7556dp + 615.0083dp + 617.2611dp + 619.5139dp + 621.7667dp + 624.0194dp + 626.2722dp + 628.5250dp + 630.7778dp + 633.0306dp + 635.2833dp + 637.5361dp + 639.7889dp + 642.0417dp + 644.2944dp + 646.5472dp + 648.8000dp + 651.0528dp + 653.3056dp + 655.5583dp + 657.8111dp + 660.0639dp + 662.3167dp + 664.5694dp + 666.8222dp + 669.0750dp + 671.3278dp + 673.5806dp + 675.8333dp + 678.0861dp + 680.3389dp + 682.5917dp + 684.8444dp + 687.0972dp + 689.3500dp + 691.6028dp + 693.8556dp + 696.1083dp + 698.3611dp + 700.6139dp + 702.8667dp + 705.1194dp + 707.3722dp + 709.6250dp + 711.8778dp + 714.1306dp + 716.3833dp + 718.6361dp + 720.8889dp + 723.1417dp + 725.3944dp + 727.6472dp + 729.9000dp + 732.1528dp + 734.4056dp + 736.6583dp + 738.9111dp + 741.1639dp + 743.4167dp + 745.6694dp + 747.9222dp + 750.1750dp + 752.4278dp + 754.6806dp + 756.9333dp + 759.1861dp + 761.4389dp + 763.6917dp + 765.9444dp + 768.1972dp + 770.4500dp + 772.7028dp + 774.9556dp + 777.2083dp + 779.4611dp + 781.7139dp + 783.9667dp + 786.2194dp + 788.4722dp + 790.7250dp + 792.9778dp + 795.2306dp + 797.4833dp + 799.7361dp + 801.9889dp + 804.2417dp + 806.4944dp + 808.7472dp + 811.0000dp + 822.2639dp + 833.5278dp + 901.1111dp + 923.6389dp + 950.6722dp + 1063.3111dp + 1126.3889dp + 1351.6667dp + 1441.7778dp + 1622.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_sp.xml new file mode 100644 index 0000000..1ad5de9 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw811dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 13.5167sp + 15.7694sp + 18.0222sp + 20.2750sp + 22.5278sp + 24.7806sp + 27.0333sp + 29.2861sp + 31.5389sp + 33.7917sp + 36.0444sp + 38.2972sp + 40.5500sp + 42.8028sp + 45.0556sp + 47.3083sp + 49.5611sp + 51.8139sp + 54.0667sp + 56.3194sp + 63.0778sp + 67.5833sp + 72.0889sp + 76.5944sp + 81.1000sp + 85.6056sp + 90.1111sp + 94.6167sp + 108.1333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_dp.xml new file mode 100644 index 0000000..1925707 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -136.6667dp + -68.3333dp + -45.5556dp + -27.3333dp + -22.7778dp + -18.2222dp + -11.3889dp + -4.5556dp + -2.2778dp + + 0.2278dp + 1.1389dp + 2.2778dp + 3.4167dp + 4.5556dp + 5.6944dp + 6.8333dp + 7.9722dp + 9.1111dp + 10.2500dp + 11.3889dp + 13.6667dp + 15.9444dp + 18.2222dp + 20.5000dp + 22.7778dp + 25.0556dp + 27.3333dp + 29.6111dp + 31.8889dp + 34.1667dp + 36.4444dp + 38.7222dp + 41.0000dp + 43.2778dp + 45.5556dp + 47.8333dp + 50.1111dp + 52.3889dp + 54.6667dp + 56.9444dp + 59.2222dp + 61.5000dp + 63.7778dp + 66.0556dp + 68.3333dp + 70.6111dp + 72.8889dp + 75.1667dp + 77.4444dp + 79.7222dp + 82.0000dp + 84.2778dp + 86.5556dp + 88.8333dp + 91.1111dp + 93.3889dp + 95.6667dp + 97.9444dp + 100.2222dp + 102.5000dp + 104.7778dp + 107.0556dp + 109.3333dp + 111.6111dp + 113.8889dp + 116.1667dp + 118.4444dp + 120.7222dp + 123.0000dp + 125.2778dp + 127.5556dp + 129.8333dp + 132.1111dp + 134.3889dp + 136.6667dp + 138.9444dp + 141.2222dp + 143.5000dp + 145.7778dp + 148.0556dp + 150.3333dp + 152.6111dp + 154.8889dp + 157.1667dp + 159.4444dp + 161.7222dp + 164.0000dp + 166.2778dp + 168.5556dp + 170.8333dp + 173.1111dp + 175.3889dp + 177.6667dp + 179.9444dp + 182.2222dp + 184.5000dp + 186.7778dp + 189.0556dp + 191.3333dp + 193.6111dp + 195.8889dp + 198.1667dp + 200.4444dp + 202.7222dp + 205.0000dp + 207.2778dp + 209.5556dp + 211.8333dp + 214.1111dp + 216.3889dp + 218.6667dp + 220.9444dp + 223.2222dp + 225.5000dp + 227.7778dp + 230.0556dp + 232.3333dp + 234.6111dp + 236.8889dp + 239.1667dp + 241.4444dp + 243.7222dp + 246.0000dp + 248.2778dp + 250.5556dp + 252.8333dp + 255.1111dp + 257.3889dp + 259.6667dp + 261.9444dp + 264.2222dp + 266.5000dp + 268.7778dp + 271.0556dp + 273.3333dp + 275.6111dp + 277.8889dp + 280.1667dp + 282.4444dp + 284.7222dp + 287.0000dp + 289.2778dp + 291.5556dp + 293.8333dp + 296.1111dp + 298.3889dp + 300.6667dp + 302.9444dp + 305.2222dp + 307.5000dp + 309.7778dp + 312.0556dp + 314.3333dp + 316.6111dp + 318.8889dp + 321.1667dp + 323.4444dp + 325.7222dp + 328.0000dp + 330.2778dp + 332.5556dp + 334.8333dp + 337.1111dp + 339.3889dp + 341.6667dp + 343.9444dp + 346.2222dp + 348.5000dp + 350.7778dp + 353.0556dp + 355.3333dp + 357.6111dp + 359.8889dp + 362.1667dp + 364.4444dp + 366.7222dp + 369.0000dp + 371.2778dp + 373.5556dp + 375.8333dp + 378.1111dp + 380.3889dp + 382.6667dp + 384.9444dp + 387.2222dp + 389.5000dp + 391.7778dp + 394.0556dp + 396.3333dp + 398.6111dp + 400.8889dp + 403.1667dp + 405.4444dp + 407.7222dp + 410.0000dp + 412.2778dp + 414.5556dp + 416.8333dp + 419.1111dp + 421.3889dp + 423.6667dp + 425.9444dp + 428.2222dp + 430.5000dp + 432.7778dp + 435.0556dp + 437.3333dp + 439.6111dp + 441.8889dp + 444.1667dp + 446.4444dp + 448.7222dp + 451.0000dp + 453.2778dp + 455.5556dp + 457.8333dp + 460.1111dp + 462.3889dp + 464.6667dp + 466.9444dp + 469.2222dp + 471.5000dp + 473.7778dp + 476.0556dp + 478.3333dp + 480.6111dp + 482.8889dp + 485.1667dp + 487.4444dp + 489.7222dp + 492.0000dp + 494.2778dp + 496.5556dp + 498.8333dp + 501.1111dp + 503.3889dp + 505.6667dp + 507.9444dp + 510.2222dp + 512.5000dp + 514.7778dp + 517.0556dp + 519.3333dp + 521.6111dp + 523.8889dp + 526.1667dp + 528.4444dp + 530.7222dp + 533.0000dp + 535.2778dp + 537.5556dp + 539.8333dp + 542.1111dp + 544.3889dp + 546.6667dp + 548.9444dp + 551.2222dp + 553.5000dp + 555.7778dp + 558.0556dp + 560.3333dp + 562.6111dp + 564.8889dp + 567.1667dp + 569.4444dp + 571.7222dp + 574.0000dp + 576.2778dp + 578.5556dp + 580.8333dp + 583.1111dp + 585.3889dp + 587.6667dp + 589.9444dp + 592.2222dp + 594.5000dp + 596.7778dp + 599.0556dp + 601.3333dp + 603.6111dp + 605.8889dp + 608.1667dp + 610.4444dp + 612.7222dp + 615.0000dp + 617.2778dp + 619.5556dp + 621.8333dp + 624.1111dp + 626.3889dp + 628.6667dp + 630.9444dp + 633.2222dp + 635.5000dp + 637.7778dp + 640.0556dp + 642.3333dp + 644.6111dp + 646.8889dp + 649.1667dp + 651.4444dp + 653.7222dp + 656.0000dp + 658.2778dp + 660.5556dp + 662.8333dp + 665.1111dp + 667.3889dp + 669.6667dp + 671.9444dp + 674.2222dp + 676.5000dp + 678.7778dp + 681.0556dp + 683.3333dp + 685.6111dp + 687.8889dp + 690.1667dp + 692.4444dp + 694.7222dp + 697.0000dp + 699.2778dp + 701.5556dp + 703.8333dp + 706.1111dp + 708.3889dp + 710.6667dp + 712.9444dp + 715.2222dp + 717.5000dp + 719.7778dp + 722.0556dp + 724.3333dp + 726.6111dp + 728.8889dp + 731.1667dp + 733.4444dp + 735.7222dp + 738.0000dp + 740.2778dp + 742.5556dp + 744.8333dp + 747.1111dp + 749.3889dp + 751.6667dp + 753.9444dp + 756.2222dp + 758.5000dp + 760.7778dp + 763.0556dp + 765.3333dp + 767.6111dp + 769.8889dp + 772.1667dp + 774.4444dp + 776.7222dp + 779.0000dp + 781.2778dp + 783.5556dp + 785.8333dp + 788.1111dp + 790.3889dp + 792.6667dp + 794.9444dp + 797.2222dp + 799.5000dp + 801.7778dp + 804.0556dp + 806.3333dp + 808.6111dp + 810.8889dp + 813.1667dp + 815.4444dp + 817.7222dp + 820.0000dp + 831.3889dp + 842.7778dp + 911.1111dp + 933.8889dp + 961.2222dp + 1075.1111dp + 1138.8889dp + 1366.6667dp + 1457.7778dp + 1640.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_sp.xml new file mode 100644 index 0000000..fcf6cc6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw820dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 13.6667sp + 15.9444sp + 18.2222sp + 20.5000sp + 22.7778sp + 25.0556sp + 27.3333sp + 29.6111sp + 31.8889sp + 34.1667sp + 36.4444sp + 38.7222sp + 41.0000sp + 43.2778sp + 45.5556sp + 47.8333sp + 50.1111sp + 52.3889sp + 54.6667sp + 56.9444sp + 63.7778sp + 68.3333sp + 72.8889sp + 77.4444sp + 82.0000sp + 86.5556sp + 91.1111sp + 95.6667sp + 109.3333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_dp.xml new file mode 100644 index 0000000..6cbf700 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -160.0000dp + -80.0000dp + -53.3333dp + -32.0000dp + -26.6667dp + -21.3333dp + -13.3333dp + -5.3333dp + -2.6667dp + + 0.2667dp + 1.3333dp + 2.6667dp + 4.0000dp + 5.3333dp + 6.6667dp + 8.0000dp + 9.3333dp + 10.6667dp + 12.0000dp + 13.3333dp + 16.0000dp + 18.6667dp + 21.3333dp + 24.0000dp + 26.6667dp + 29.3333dp + 32.0000dp + 34.6667dp + 37.3333dp + 40.0000dp + 42.6667dp + 45.3333dp + 48.0000dp + 50.6667dp + 53.3333dp + 56.0000dp + 58.6667dp + 61.3333dp + 64.0000dp + 66.6667dp + 69.3333dp + 72.0000dp + 74.6667dp + 77.3333dp + 80.0000dp + 82.6667dp + 85.3333dp + 88.0000dp + 90.6667dp + 93.3333dp + 96.0000dp + 98.6667dp + 101.3333dp + 104.0000dp + 106.6667dp + 109.3333dp + 112.0000dp + 114.6667dp + 117.3333dp + 120.0000dp + 122.6667dp + 125.3333dp + 128.0000dp + 130.6667dp + 133.3333dp + 136.0000dp + 138.6667dp + 141.3333dp + 144.0000dp + 146.6667dp + 149.3333dp + 152.0000dp + 154.6667dp + 157.3333dp + 160.0000dp + 162.6667dp + 165.3333dp + 168.0000dp + 170.6667dp + 173.3333dp + 176.0000dp + 178.6667dp + 181.3333dp + 184.0000dp + 186.6667dp + 189.3333dp + 192.0000dp + 194.6667dp + 197.3333dp + 200.0000dp + 202.6667dp + 205.3333dp + 208.0000dp + 210.6667dp + 213.3333dp + 216.0000dp + 218.6667dp + 221.3333dp + 224.0000dp + 226.6667dp + 229.3333dp + 232.0000dp + 234.6667dp + 237.3333dp + 240.0000dp + 242.6667dp + 245.3333dp + 248.0000dp + 250.6667dp + 253.3333dp + 256.0000dp + 258.6667dp + 261.3333dp + 264.0000dp + 266.6667dp + 269.3333dp + 272.0000dp + 274.6667dp + 277.3333dp + 280.0000dp + 282.6667dp + 285.3333dp + 288.0000dp + 290.6667dp + 293.3333dp + 296.0000dp + 298.6667dp + 301.3333dp + 304.0000dp + 306.6667dp + 309.3333dp + 312.0000dp + 314.6667dp + 317.3333dp + 320.0000dp + 322.6667dp + 325.3333dp + 328.0000dp + 330.6667dp + 333.3333dp + 336.0000dp + 338.6667dp + 341.3333dp + 344.0000dp + 346.6667dp + 349.3333dp + 352.0000dp + 354.6667dp + 357.3333dp + 360.0000dp + 362.6667dp + 365.3333dp + 368.0000dp + 370.6667dp + 373.3333dp + 376.0000dp + 378.6667dp + 381.3333dp + 384.0000dp + 386.6667dp + 389.3333dp + 392.0000dp + 394.6667dp + 397.3333dp + 400.0000dp + 402.6667dp + 405.3333dp + 408.0000dp + 410.6667dp + 413.3333dp + 416.0000dp + 418.6667dp + 421.3333dp + 424.0000dp + 426.6667dp + 429.3333dp + 432.0000dp + 434.6667dp + 437.3333dp + 440.0000dp + 442.6667dp + 445.3333dp + 448.0000dp + 450.6667dp + 453.3333dp + 456.0000dp + 458.6667dp + 461.3333dp + 464.0000dp + 466.6667dp + 469.3333dp + 472.0000dp + 474.6667dp + 477.3333dp + 480.0000dp + 482.6667dp + 485.3333dp + 488.0000dp + 490.6667dp + 493.3333dp + 496.0000dp + 498.6667dp + 501.3333dp + 504.0000dp + 506.6667dp + 509.3333dp + 512.0000dp + 514.6667dp + 517.3333dp + 520.0000dp + 522.6667dp + 525.3333dp + 528.0000dp + 530.6667dp + 533.3333dp + 536.0000dp + 538.6667dp + 541.3333dp + 544.0000dp + 546.6667dp + 549.3333dp + 552.0000dp + 554.6667dp + 557.3333dp + 560.0000dp + 562.6667dp + 565.3333dp + 568.0000dp + 570.6667dp + 573.3333dp + 576.0000dp + 578.6667dp + 581.3333dp + 584.0000dp + 586.6667dp + 589.3333dp + 592.0000dp + 594.6667dp + 597.3333dp + 600.0000dp + 602.6667dp + 605.3333dp + 608.0000dp + 610.6667dp + 613.3333dp + 616.0000dp + 618.6667dp + 621.3333dp + 624.0000dp + 626.6667dp + 629.3333dp + 632.0000dp + 634.6667dp + 637.3333dp + 640.0000dp + 642.6667dp + 645.3333dp + 648.0000dp + 650.6667dp + 653.3333dp + 656.0000dp + 658.6667dp + 661.3333dp + 664.0000dp + 666.6667dp + 669.3333dp + 672.0000dp + 674.6667dp + 677.3333dp + 680.0000dp + 682.6667dp + 685.3333dp + 688.0000dp + 690.6667dp + 693.3333dp + 696.0000dp + 698.6667dp + 701.3333dp + 704.0000dp + 706.6667dp + 709.3333dp + 712.0000dp + 714.6667dp + 717.3333dp + 720.0000dp + 722.6667dp + 725.3333dp + 728.0000dp + 730.6667dp + 733.3333dp + 736.0000dp + 738.6667dp + 741.3333dp + 744.0000dp + 746.6667dp + 749.3333dp + 752.0000dp + 754.6667dp + 757.3333dp + 760.0000dp + 762.6667dp + 765.3333dp + 768.0000dp + 770.6667dp + 773.3333dp + 776.0000dp + 778.6667dp + 781.3333dp + 784.0000dp + 786.6667dp + 789.3333dp + 792.0000dp + 794.6667dp + 797.3333dp + 800.0000dp + 802.6667dp + 805.3333dp + 808.0000dp + 810.6667dp + 813.3333dp + 816.0000dp + 818.6667dp + 821.3333dp + 824.0000dp + 826.6667dp + 829.3333dp + 832.0000dp + 834.6667dp + 837.3333dp + 840.0000dp + 842.6667dp + 845.3333dp + 848.0000dp + 850.6667dp + 853.3333dp + 856.0000dp + 858.6667dp + 861.3333dp + 864.0000dp + 866.6667dp + 869.3333dp + 872.0000dp + 874.6667dp + 877.3333dp + 880.0000dp + 882.6667dp + 885.3333dp + 888.0000dp + 890.6667dp + 893.3333dp + 896.0000dp + 898.6667dp + 901.3333dp + 904.0000dp + 906.6667dp + 909.3333dp + 912.0000dp + 914.6667dp + 917.3333dp + 920.0000dp + 922.6667dp + 925.3333dp + 928.0000dp + 930.6667dp + 933.3333dp + 936.0000dp + 938.6667dp + 941.3333dp + 944.0000dp + 946.6667dp + 949.3333dp + 952.0000dp + 954.6667dp + 957.3333dp + 960.0000dp + 973.3333dp + 986.6667dp + 1066.6667dp + 1093.3333dp + 1125.3333dp + 1258.6667dp + 1333.3333dp + 1600.0000dp + 1706.6667dp + 1920.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_sp.xml new file mode 100644 index 0000000..62001df --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw960dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 16.0000sp + 18.6667sp + 21.3333sp + 24.0000sp + 26.6667sp + 29.3333sp + 32.0000sp + 34.6667sp + 37.3333sp + 40.0000sp + 42.6667sp + 45.3333sp + 48.0000sp + 50.6667sp + 53.3333sp + 56.0000sp + 58.6667sp + 61.3333sp + 64.0000sp + 66.6667sp + 74.6667sp + 80.0000sp + 85.3333sp + 90.6667sp + 96.0000sp + 101.3333sp + 106.6667sp + 112.0000sp + 128.0000sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_dp.xml new file mode 100644 index 0000000..7aabe93 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -160.1667dp + -80.0833dp + -53.3889dp + -32.0333dp + -26.6944dp + -21.3556dp + -13.3472dp + -5.3389dp + -2.6694dp + + 0.2669dp + 1.3347dp + 2.6694dp + 4.0042dp + 5.3389dp + 6.6736dp + 8.0083dp + 9.3431dp + 10.6778dp + 12.0125dp + 13.3472dp + 16.0167dp + 18.6861dp + 21.3556dp + 24.0250dp + 26.6944dp + 29.3639dp + 32.0333dp + 34.7028dp + 37.3722dp + 40.0417dp + 42.7111dp + 45.3806dp + 48.0500dp + 50.7194dp + 53.3889dp + 56.0583dp + 58.7278dp + 61.3972dp + 64.0667dp + 66.7361dp + 69.4056dp + 72.0750dp + 74.7444dp + 77.4139dp + 80.0833dp + 82.7528dp + 85.4222dp + 88.0917dp + 90.7611dp + 93.4306dp + 96.1000dp + 98.7694dp + 101.4389dp + 104.1083dp + 106.7778dp + 109.4472dp + 112.1167dp + 114.7861dp + 117.4556dp + 120.1250dp + 122.7944dp + 125.4639dp + 128.1333dp + 130.8028dp + 133.4722dp + 136.1417dp + 138.8111dp + 141.4806dp + 144.1500dp + 146.8194dp + 149.4889dp + 152.1583dp + 154.8278dp + 157.4972dp + 160.1667dp + 162.8361dp + 165.5056dp + 168.1750dp + 170.8444dp + 173.5139dp + 176.1833dp + 178.8528dp + 181.5222dp + 184.1917dp + 186.8611dp + 189.5306dp + 192.2000dp + 194.8694dp + 197.5389dp + 200.2083dp + 202.8778dp + 205.5472dp + 208.2167dp + 210.8861dp + 213.5556dp + 216.2250dp + 218.8944dp + 221.5639dp + 224.2333dp + 226.9028dp + 229.5722dp + 232.2417dp + 234.9111dp + 237.5806dp + 240.2500dp + 242.9194dp + 245.5889dp + 248.2583dp + 250.9278dp + 253.5972dp + 256.2667dp + 258.9361dp + 261.6056dp + 264.2750dp + 266.9444dp + 269.6139dp + 272.2833dp + 274.9528dp + 277.6222dp + 280.2917dp + 282.9611dp + 285.6306dp + 288.3000dp + 290.9694dp + 293.6389dp + 296.3083dp + 298.9778dp + 301.6472dp + 304.3167dp + 306.9861dp + 309.6556dp + 312.3250dp + 314.9944dp + 317.6639dp + 320.3333dp + 323.0028dp + 325.6722dp + 328.3417dp + 331.0111dp + 333.6806dp + 336.3500dp + 339.0194dp + 341.6889dp + 344.3583dp + 347.0278dp + 349.6972dp + 352.3667dp + 355.0361dp + 357.7056dp + 360.3750dp + 363.0444dp + 365.7139dp + 368.3833dp + 371.0528dp + 373.7222dp + 376.3917dp + 379.0611dp + 381.7306dp + 384.4000dp + 387.0694dp + 389.7389dp + 392.4083dp + 395.0778dp + 397.7472dp + 400.4167dp + 403.0861dp + 405.7556dp + 408.4250dp + 411.0944dp + 413.7639dp + 416.4333dp + 419.1028dp + 421.7722dp + 424.4417dp + 427.1111dp + 429.7806dp + 432.4500dp + 435.1194dp + 437.7889dp + 440.4583dp + 443.1278dp + 445.7972dp + 448.4667dp + 451.1361dp + 453.8056dp + 456.4750dp + 459.1444dp + 461.8139dp + 464.4833dp + 467.1528dp + 469.8222dp + 472.4917dp + 475.1611dp + 477.8306dp + 480.5000dp + 483.1694dp + 485.8389dp + 488.5083dp + 491.1778dp + 493.8472dp + 496.5167dp + 499.1861dp + 501.8556dp + 504.5250dp + 507.1944dp + 509.8639dp + 512.5333dp + 515.2028dp + 517.8722dp + 520.5417dp + 523.2111dp + 525.8806dp + 528.5500dp + 531.2194dp + 533.8889dp + 536.5583dp + 539.2278dp + 541.8972dp + 544.5667dp + 547.2361dp + 549.9056dp + 552.5750dp + 555.2444dp + 557.9139dp + 560.5833dp + 563.2528dp + 565.9222dp + 568.5917dp + 571.2611dp + 573.9306dp + 576.6000dp + 579.2694dp + 581.9389dp + 584.6083dp + 587.2778dp + 589.9472dp + 592.6167dp + 595.2861dp + 597.9556dp + 600.6250dp + 603.2944dp + 605.9639dp + 608.6333dp + 611.3028dp + 613.9722dp + 616.6417dp + 619.3111dp + 621.9806dp + 624.6500dp + 627.3194dp + 629.9889dp + 632.6583dp + 635.3278dp + 637.9972dp + 640.6667dp + 643.3361dp + 646.0056dp + 648.6750dp + 651.3444dp + 654.0139dp + 656.6833dp + 659.3528dp + 662.0222dp + 664.6917dp + 667.3611dp + 670.0306dp + 672.7000dp + 675.3694dp + 678.0389dp + 680.7083dp + 683.3778dp + 686.0472dp + 688.7167dp + 691.3861dp + 694.0556dp + 696.7250dp + 699.3944dp + 702.0639dp + 704.7333dp + 707.4028dp + 710.0722dp + 712.7417dp + 715.4111dp + 718.0806dp + 720.7500dp + 723.4194dp + 726.0889dp + 728.7583dp + 731.4278dp + 734.0972dp + 736.7667dp + 739.4361dp + 742.1056dp + 744.7750dp + 747.4444dp + 750.1139dp + 752.7833dp + 755.4528dp + 758.1222dp + 760.7917dp + 763.4611dp + 766.1306dp + 768.8000dp + 771.4694dp + 774.1389dp + 776.8083dp + 779.4778dp + 782.1472dp + 784.8167dp + 787.4861dp + 790.1556dp + 792.8250dp + 795.4944dp + 798.1639dp + 800.8333dp + 803.5028dp + 806.1722dp + 808.8417dp + 811.5111dp + 814.1806dp + 816.8500dp + 819.5194dp + 822.1889dp + 824.8583dp + 827.5278dp + 830.1972dp + 832.8667dp + 835.5361dp + 838.2056dp + 840.8750dp + 843.5444dp + 846.2139dp + 848.8833dp + 851.5528dp + 854.2222dp + 856.8917dp + 859.5611dp + 862.2306dp + 864.9000dp + 867.5694dp + 870.2389dp + 872.9083dp + 875.5778dp + 878.2472dp + 880.9167dp + 883.5861dp + 886.2556dp + 888.9250dp + 891.5944dp + 894.2639dp + 896.9333dp + 899.6028dp + 902.2722dp + 904.9417dp + 907.6111dp + 910.2806dp + 912.9500dp + 915.6194dp + 918.2889dp + 920.9583dp + 923.6278dp + 926.2972dp + 928.9667dp + 931.6361dp + 934.3056dp + 936.9750dp + 939.6444dp + 942.3139dp + 944.9833dp + 947.6528dp + 950.3222dp + 952.9917dp + 955.6611dp + 958.3306dp + 961.0000dp + 974.3472dp + 987.6944dp + 1067.7778dp + 1094.4722dp + 1126.5056dp + 1259.9778dp + 1334.7222dp + 1601.6667dp + 1708.4444dp + 1922.0000dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_sp.xml new file mode 100644 index 0000000..db8bdcd --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values-sw961dp/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 16.0167sp + 18.6861sp + 21.3556sp + 24.0250sp + 26.6944sp + 29.3639sp + 32.0333sp + 34.7028sp + 37.3722sp + 40.0417sp + 42.7111sp + 45.3806sp + 48.0500sp + 50.7194sp + 53.3889sp + 56.0583sp + 58.7278sp + 61.3972sp + 64.0667sp + 66.7361sp + 74.7444sp + 80.0833sp + 85.4222sp + 90.7611sp + 96.1000sp + 101.4389sp + 106.7778sp + 112.1167sp + 128.1333sp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values/dimens_dp.xml b/Android_Mireo/library/base/src/main/res-sw/values/dimens_dp.xml new file mode 100644 index 0000000..4d35be3 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values/dimens_dp.xml @@ -0,0 +1,389 @@ + + + -60dp + -30dp + -20dp + -12dp + -10dp + -8dp + -5dp + -2dp + -1dp + + 0.1dp + 0.5dp + 1dp + 1.5dp + 2dp + 2.5dp + 3dp + 3.5dp + 4dp + 4.5dp + 5dp + 6dp + 7dp + 8dp + 9dp + 10dp + 11dp + 12dp + 13dp + 14dp + 15dp + 16dp + 17dp + 18dp + 19dp + 20dp + 21dp + 22dp + 23dp + 24dp + 25dp + 26dp + 27dp + 28dp + 29dp + 30dp + 31dp + 32dp + 33dp + 34dp + 35dp + 36dp + 37dp + 38dp + 39dp + 40dp + 41dp + 42dp + 43dp + 44dp + 45dp + 46dp + 47dp + 48dp + 49dp + 50dp + 51dp + 52dp + 53dp + 54dp + 55dp + 56dp + 57dp + 58dp + 59dp + 60dp + 61dp + 62dp + 63dp + 64dp + 65dp + 66dp + 67dp + 68dp + 69dp + 70dp + 71dp + 72dp + 73dp + 74dp + 75dp + 76dp + 77dp + 78dp + 79dp + 80dp + 81dp + 82dp + 83dp + 84dp + 85dp + 86dp + 87dp + 88dp + 89dp + 90dp + 91dp + 92dp + 93dp + 94dp + 95dp + 96dp + 97dp + 98dp + 99dp + 100dp + 101dp + 102dp + 103dp + 104dp + 105dp + 106dp + 107dp + 108dp + 109dp + 110dp + 111dp + 112dp + 113dp + 114dp + 115dp + 116dp + 117dp + 118dp + 119dp + 120dp + 121dp + 122dp + 123dp + 124dp + 125dp + 126dp + 127dp + 128dp + 129dp + 130dp + 131dp + 132dp + 133dp + 134dp + 135dp + 136dp + 137dp + 138dp + 139dp + 140dp + 141dp + 142dp + 143dp + 144dp + 145dp + 146dp + 147dp + 148dp + 149dp + 150dp + 151dp + 152dp + 153dp + 154dp + 155dp + 156dp + 157dp + 158dp + 159dp + 160dp + 161dp + 162dp + 163dp + 164dp + 165dp + 166dp + 167dp + 168dp + 169dp + 170dp + 171dp + 172dp + 173dp + 174dp + 175dp + 176dp + 177dp + 178dp + 179dp + 180dp + 181dp + 182dp + 183dp + 184dp + 185dp + 186dp + 187dp + 188dp + 189dp + 190dp + 191dp + 192dp + 193dp + 194dp + 195dp + 196dp + 197dp + 198dp + 199dp + 200dp + 201dp + 202dp + 203dp + 204dp + 205dp + 206dp + 207dp + 208dp + 209dp + 210dp + 211dp + 212dp + 213dp + 214dp + 215dp + 216dp + 217dp + 218dp + 219dp + 220dp + 221dp + 222dp + 223dp + 224dp + 225dp + 226dp + 227dp + 228dp + 229dp + 230dp + 231dp + 232dp + 233dp + 234dp + 235dp + 236dp + 237dp + 238dp + 239dp + 240dp + 241dp + 242dp + 243dp + 244dp + 245dp + 246dp + 247dp + 248dp + 249dp + 250dp + 251dp + 252dp + 253dp + 254dp + 255dp + 256dp + 257dp + 258dp + 259dp + 260dp + 261dp + 262dp + 263dp + 264dp + 265dp + 266dp + 267dp + 268dp + 269dp + 270dp + 271dp + 272dp + 273dp + 274dp + 275dp + 276dp + 277dp + 278dp + 279dp + 280dp + 281dp + 282dp + 283dp + 284dp + 285dp + 286dp + 287dp + 288dp + 289dp + 290dp + 291dp + 292dp + 293dp + 294dp + 295dp + 296dp + 297dp + 298dp + 299dp + 300dp + 301dp + 302dp + 303dp + 304dp + 305dp + 306dp + 307dp + 308dp + 309dp + 310dp + 311dp + 312dp + 313dp + 314dp + 315dp + 316dp + 317dp + 318dp + 319dp + 320dp + 321dp + 322dp + 323dp + 324dp + 325dp + 326dp + 327dp + 328dp + 329dp + 330dp + 331dp + 332dp + 333dp + 334dp + 335dp + 336dp + 337dp + 338dp + 339dp + 340dp + 341dp + 342dp + 343dp + 344dp + 345dp + 346dp + 347dp + 348dp + 349dp + 350dp + 351dp + 352dp + 353dp + 354dp + 355dp + 356dp + 357dp + 358dp + 359dp + 360dp + 365dp + 370dp + 400dp + 410dp + 422dp + 472dp + 500dp + 600dp + 640dp + 720dp + diff --git a/Android_Mireo/library/base/src/main/res-sw/values/dimens_sp.xml b/Android_Mireo/library/base/src/main/res-sw/values/dimens_sp.xml new file mode 100644 index 0000000..04d6e9e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res-sw/values/dimens_sp.xml @@ -0,0 +1,32 @@ + + + 6sp + 7sp + 8sp + 9sp + 10sp + 11sp + 12sp + 13sp + 14sp + 15sp + 16sp + 17sp + 18sp + 19sp + 20sp + 21sp + 22sp + 23sp + 24sp + 25sp + 28sp + 30sp + 32sp + 34sp + 36sp + 38sp + 40sp + 42sp + 48sp + diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_fall_down.xml b/Android_Mireo/library/base/src/main/res/anim/layout_fall_down.xml new file mode 100644 index 0000000..45cffb8 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_fall_down.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_fall_down_item.xml b/Android_Mireo/library/base/src/main/res/anim/layout_fall_down_item.xml new file mode 100644 index 0000000..b1ed417 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_fall_down_item.xml @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom.xml b/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom.xml new file mode 100644 index 0000000..28e36cd --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom_item.xml b/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom_item.xml new file mode 100644 index 0000000..f4df85f --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_from_bottom_item.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_from_right.xml b/Android_Mireo/library/base/src/main/res/anim/layout_from_right.xml new file mode 100644 index 0000000..6a344e1 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_from_right.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/layout_from_right_item.xml b/Android_Mireo/library/base/src/main/res/anim/layout_from_right_item.xml new file mode 100644 index 0000000..325b1d1 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/layout_from_right_item.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_bottom_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_bottom_in.xml new file mode 100644 index 0000000..2980fd2 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_bottom_in.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_bottom_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_bottom_out.xml new file mode 100644 index 0000000..03e6b6c --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_bottom_out.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_ios_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_ios_in.xml new file mode 100644 index 0000000..c9e2f7e --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_ios_in.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_ios_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_ios_out.xml new file mode 100644 index 0000000..4333adc --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_ios_out.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_left_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_left_in.xml new file mode 100644 index 0000000..ab117a6 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_left_in.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_left_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_left_out.xml new file mode 100644 index 0000000..27634dc --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_left_out.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_right_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_right_in.xml new file mode 100644 index 0000000..8d8caca --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_right_in.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_right_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_right_out.xml new file mode 100644 index 0000000..84763a7 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_right_out.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_scale_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_scale_in.xml new file mode 100644 index 0000000..069c2da --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_scale_in.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_scale_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_scale_out.xml new file mode 100644 index 0000000..005c749 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_scale_out.xml @@ -0,0 +1,19 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_top_in.xml b/Android_Mireo/library/base/src/main/res/anim/window_top_in.xml new file mode 100644 index 0000000..30bfd1a --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_top_in.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/anim/window_top_out.xml b/Android_Mireo/library/base/src/main/res/anim/window_top_out.xml new file mode 100644 index 0000000..10c465a --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/anim/window_top_out.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/values/colors.xml b/Android_Mireo/library/base/src/main/res/values/colors.xml new file mode 100644 index 0000000..04e8e4f --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/values/colors.xml @@ -0,0 +1,60 @@ + + + + #00000000 + #FF757575 + + #FFFFFFFF + #F2FFFFFF + #E6FFFFFF + #D9FFFFFF + #CCFFFFFF + #BFFFFFFF + #B3FFFFFF + #A6FFFFFF + #99FFFFFF + #8CFFFFFF + #80FFFFFF + #73FFFFFF + #66FFFFFF + #59FFFFFF + #4DFFFFFF + #40FFFFFF + #33FFFFFF + #26FFFFFF + #1AFFFFFF + #0DFFFFFF + + #FF000000 + #F2000000 + #E6000000 + #D9000000 + #CC000000 + #B000000F + #B3000000 + #A6000000 + #99000000 + #8C000000 + #80000000 + #73000000 + #66000000 + #59000000 + #4D000000 + #40000000 + #33000000 + #26000000 + #1A000000 + #0D000000 + #121418 + + #FF808080 + #FFFF0000 + #FFFFD700 + #FFFFFF00 + #FF008000 + #FF0000FF + #FF800080 + #FFFFC0CB + #FFFFA500 + + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/values/integers.xml b/Android_Mireo/library/base/src/main/res/values/integers.xml new file mode 100644 index 0000000..e3ffc79 --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/values/integers.xml @@ -0,0 +1,4 @@ + + + 400 + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/res/values/styles.xml b/Android_Mireo/library/base/src/main/res/values/styles.xml new file mode 100644 index 0000000..f622eee --- /dev/null +++ b/Android_Mireo/library/base/src/main/res/values/styles.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/build.gradle b/Android_Mireo/library/widget/build.gradle new file mode 100644 index 0000000..45a82b3 --- /dev/null +++ b/Android_Mireo/library/widget/build.gradle @@ -0,0 +1,6 @@ +apply plugin : 'com.android.library' +apply from : '../../common.gradle' + +dependencies { + implementation project(':library:base') +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/AndroidManifest.xml b/Android_Mireo/library/widget/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b084981 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/CustomViewStub.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/CustomViewStub.kt new file mode 100644 index 0000000..a1a94f3 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/CustomViewStub.kt @@ -0,0 +1,64 @@ +package com.hjq.widget.layout + +import android.content.* +import android.content.res.TypedArray +import android.util.AttributeSet +import android.view.* +import android.widget.FrameLayout +import com.hjq.widget.R + +class CustomViewStub @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = 0, defStyleRes: Int = 0) : + FrameLayout(context, attrs, defStyleAttr, defStyleRes) { + + private var listener: OnViewStubListener? = null + private val layoutResource: Int + private var inflateView: View? = null + + init { + val array: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomViewStub) + layoutResource = array.getResourceId(R.styleable.CustomViewStub_android_layout, 0) + array.recycle() + + visibility = GONE + } + + override fun setVisibility(visibility: Int) { + super.setVisibility(visibility) + if (inflateView == null && visibility != GONE) { + inflateView = LayoutInflater.from(context).inflate(layoutResource, this, false) + val layoutParams: LayoutParams? = inflateView!!.layoutParams as LayoutParams? + if (layoutParams != null) { + layoutParams.width = getLayoutParams().width + layoutParams.height = getLayoutParams().height + if (layoutParams.gravity == LayoutParams.UNSPECIFIED_GRAVITY) { + layoutParams.gravity = Gravity.CENTER + } + inflateView!!.layoutParams = layoutParams + } + addView(inflateView) + listener?.onInflate(this, inflateView!!) + } + listener?.onVisibility(this, visibility) + } + + fun setCustomVisibility(visibility: Int) { + super.setVisibility(visibility) + } + + fun getInflateView(): View? { + return inflateView + } + + fun setOnViewStubListener(listener: OnViewStubListener?) { + this.listener = listener + } + + interface OnViewStubListener { + + fun onInflate(stub: CustomViewStub, inflatedView: View) + + fun onVisibility(stub: CustomViewStub, visibility: Int) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedLinearLayout.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedLinearLayout.kt new file mode 100644 index 0000000..12a7015 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedLinearLayout.kt @@ -0,0 +1,222 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.util.AttributeSet +import android.view.* +import android.widget.LinearLayout +import androidx.core.view.* +import kotlin.math.abs + +class NestedLinearLayout @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : + LinearLayout(context, attrs, defStyleAttr, defStyleRes), NestedScrollingChild, NestedScrollingParent { + + companion object { + private const val INVALID_POINTER: Int = -1 + } + + private val childHelper: NestedScrollingChildHelper + private val parentHelper: NestedScrollingParentHelper + private val scrollConsumed: IntArray = IntArray(2) + private val scrollOffset: IntArray = IntArray(2) + private val touchSlop: Float + private val maximumVelocity: Float + private val minimumVelocity: Float + private var lastMotionY: Int = 0 + private var activePointerId: Int = 0 + private var velocityTracker: VelocityTracker? = null + private var beingDragged: Boolean = false + + init { + setWillNotDraw(false) + childHelper = NestedScrollingChildHelper(this) + parentHelper = NestedScrollingParentHelper(this) + isNestedScrollingEnabled = true + touchSlop = ViewConfiguration.get(getContext()).scaledTouchSlop.toFloat() + maximumVelocity = ViewConfiguration.get(getContext()).scaledMaximumFlingVelocity.toFloat() + minimumVelocity = ViewConfiguration.get(getContext()).scaledMinimumFlingVelocity.toFloat() + } + + @Suppress("ClickableViewAccessibility") + override fun onTouchEvent(ev: MotionEvent): Boolean { + val event: MotionEvent = MotionEvent.obtain(ev) + initVelocityTrackerIfNotExists() + when (event.actionMasked) { + MotionEvent.ACTION_DOWN -> { + velocityTracker?.addMovement(ev) + lastMotionY = event.y.toInt() + activePointerId = event.getPointerId(0) + startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL) + } + MotionEvent.ACTION_MOVE -> run { + val activePointerIndex: Int = event.findPointerIndex(activePointerId) + if (activePointerIndex == -1) { + return@run + } + val y: Int = event.getY(activePointerIndex).toInt() + var deltaY: Int = lastMotionY - y + if (dispatchNestedPreScroll(0, deltaY, scrollConsumed, scrollOffset)) { + deltaY -= scrollConsumed[1] + event.offsetLocation(0f, scrollOffset[1].toFloat()) + } + if (!beingDragged && abs(lastMotionY - y) > touchSlop) { + this.parent?.requestDisallowInterceptTouchEvent(true) + beingDragged = true + if (deltaY > 0) { + deltaY -= touchSlop.toInt() + } else { + deltaY += touchSlop.toInt() + } + } + if (beingDragged) { + velocityTracker?.addMovement(ev) + lastMotionY = y - scrollOffset[1] + if (dispatchNestedScroll(0, 0, 0, deltaY, scrollOffset)) { + lastMotionY -= scrollOffset[1] + event.offsetLocation(0f, scrollOffset[1].toFloat()) + } + } + } + MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> { + if (beingDragged) { + velocityTracker?.computeCurrentVelocity(1000, maximumVelocity) + var initialVelocity: Int? = + velocityTracker?.getYVelocity(activePointerId)?.toInt() + if (initialVelocity == null) { + initialVelocity = 0 + } + if (abs(initialVelocity) > minimumVelocity) { + flingWithNestedDispatch(-initialVelocity) + } + } + activePointerId = INVALID_POINTER + endDrag() + } + MotionEvent.ACTION_POINTER_DOWN -> { + val index: Int = event.actionIndex + lastMotionY = event.getY(index).toInt() + activePointerId = event.getPointerId(index) + } + MotionEvent.ACTION_POINTER_UP -> { + onSecondaryPointerUp(event) + lastMotionY = event.getY(event.findPointerIndex(activePointerId)).toInt() + } + } + event.recycle() + return true + } + + private fun onSecondaryPointerUp(ev: MotionEvent) { + val pointerIndex: Int = ((ev.action and MotionEvent.ACTION_POINTER_INDEX_MASK) + shr MotionEvent.ACTION_POINTER_INDEX_SHIFT) + val pointerId: Int = ev.getPointerId(pointerIndex) + if (pointerId == activePointerId) { + val newPointerIndex: Int = if (pointerIndex == 0) 1 else 0 + lastMotionY = ev.getY(newPointerIndex).toInt() + activePointerId = ev.getPointerId(newPointerIndex) + velocityTracker?.clear() + } + } + + private fun endDrag() { + beingDragged = false + recycleVelocityTracker() + stopNestedScroll() + } + + private fun flingWithNestedDispatch(velocityY: Int) { + if (!dispatchNestedPreFling(0f, velocityY.toFloat())) { + dispatchNestedFling(0f, velocityY.toFloat(), true) + } + } + + private fun initVelocityTrackerIfNotExists() { + if (velocityTracker == null) { + velocityTracker = VelocityTracker.obtain() + } + } + + private fun recycleVelocityTracker() { + velocityTracker?.recycle() + velocityTracker = null + } + + override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) { + if (disallowIntercept) { + recycleVelocityTracker() + } + super.requestDisallowInterceptTouchEvent(disallowIntercept) + } + + // NestedScrollingChild + override fun setNestedScrollingEnabled(enabled: Boolean) { + childHelper.isNestedScrollingEnabled = enabled + } + + override fun isNestedScrollingEnabled(): Boolean { + return childHelper.isNestedScrollingEnabled + } + + override fun startNestedScroll(axes: Int): Boolean { + return childHelper.startNestedScroll(axes) + } + + override fun stopNestedScroll() { + childHelper.stopNestedScroll() + } + + override fun hasNestedScrollingParent(): Boolean { + return childHelper.hasNestedScrollingParent() + } + + override fun dispatchNestedScroll(dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow) + } + + override fun dispatchNestedPreScroll(dx: Int, dy: Int, consumed: IntArray?, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow) + } + + override fun dispatchNestedFling(velocityX: Float, velocityY: Float, consumed: Boolean): Boolean { + return childHelper.dispatchNestedFling(velocityX, velocityY, consumed) + } + + override fun dispatchNestedPreFling(velocityX: Float, velocityY: Float): Boolean { + return childHelper.dispatchNestedPreFling(velocityX, velocityY) + } + + // NestedScrollingParent + override fun onStartNestedScroll(child: View, target: View, nestedScrollAxes: Int): Boolean { + return (nestedScrollAxes and ViewCompat.SCROLL_AXIS_VERTICAL) != 0 + } + + override fun onNestedScrollAccepted(child: View, target: View, nestedScrollAxes: Int) { + parentHelper.onNestedScrollAccepted(child, target, nestedScrollAxes) + startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL) + } + + override fun onStopNestedScroll(target: View) { + parentHelper.onStopNestedScroll(target) + stopNestedScroll() + } + + override fun onNestedScroll(target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int) { + dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, null) + } + + override fun onNestedPreScroll(target: View, dx: Int, dy: Int, consumed: IntArray) { + dispatchNestedPreScroll(dx, dy, consumed, null) + } + + override fun onNestedFling(target: View, velocityX: Float, velocityY: Float, consumed: Boolean): Boolean { + return dispatchNestedFling(velocityX, velocityY, consumed) + } + + override fun onNestedPreFling(target: View, velocityX: Float, velocityY: Float): Boolean { + return dispatchNestedPreFling(velocityX, velocityY) + } + + override fun getNestedScrollAxes(): Int { + return parentHelper.nestedScrollAxes + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedScrollWebView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedScrollWebView.kt new file mode 100644 index 0000000..d6a3cc1 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedScrollWebView.kt @@ -0,0 +1,124 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import android.webkit.WebView +import androidx.core.view.NestedScrollingChild +import androidx.core.view.NestedScrollingChildHelper +import androidx.core.view.ViewCompat +import kotlin.math.max + +open class NestedScrollWebView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : + WebView(context, attrs, defStyleAttr, defStyleRes), NestedScrollingChild { + + @Suppress("LeakingThis") + private val childHelper: NestedScrollingChildHelper = NestedScrollingChildHelper(this) + private var lastMotionY: Int = 0 + private val scrollOffset: IntArray = IntArray(2) + private val scrollConsumed: IntArray = IntArray(2) + private var nestedOffsetY: Int = 0 + private var change: Boolean = false + + init { + isNestedScrollingEnabled = true + } + + @Suppress("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { + var result = false + val trackedEvent: MotionEvent = MotionEvent.obtain(event) + val action: Int = event.actionMasked + if (action == MotionEvent.ACTION_DOWN) { + nestedOffsetY = 0 + } + val y: Int = event.y.toInt() + event.offsetLocation(0f, nestedOffsetY.toFloat()) + when (action) { + MotionEvent.ACTION_DOWN -> { + change = false + lastMotionY = y + startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL) + result = super.onTouchEvent(event) + } + MotionEvent.ACTION_MOVE -> { + var deltaY: Int = lastMotionY - y + if (dispatchNestedPreScroll(0, deltaY, scrollConsumed, scrollOffset)) { + deltaY -= scrollConsumed[1] + trackedEvent.offsetLocation(0f, scrollOffset[1].toFloat()) + nestedOffsetY += scrollOffset[1] + } + lastMotionY = y - scrollOffset[1] + val oldY: Int = scrollY + val newScrollY: Int = max(0, oldY + deltaY) + val dyConsumed: Int = newScrollY - oldY + val dyUnconsumed: Int = deltaY - dyConsumed + if (dispatchNestedScroll(0, dyConsumed, 0, dyUnconsumed, scrollOffset)) { + lastMotionY -= scrollOffset[1] + trackedEvent.offsetLocation(0f, scrollOffset[1].toFloat()) + nestedOffsetY += scrollOffset[1] + } + if (scrollConsumed[1] == 0 && scrollOffset[1] == 0) { + if (change) { + change = false + trackedEvent.action = MotionEvent.ACTION_DOWN + super.onTouchEvent(trackedEvent) + } else { + result = super.onTouchEvent(trackedEvent) + } + trackedEvent.recycle() + } else { + if (!change) { + change = true + super.onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0f, 0f, 0)) + } + } + } + MotionEvent.ACTION_POINTER_DOWN, MotionEvent.ACTION_POINTER_UP, MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + stopNestedScroll() + result = super.onTouchEvent(event) + } + } + return result + } + + /** + * [NestedScrollingChild] + */ + final override fun setNestedScrollingEnabled(enabled: Boolean) { + childHelper.isNestedScrollingEnabled = enabled + } + + override fun isNestedScrollingEnabled(): Boolean { + return childHelper.isNestedScrollingEnabled + } + + override fun startNestedScroll(axes: Int): Boolean { + return childHelper.startNestedScroll(axes) + } + + override fun stopNestedScroll() { + childHelper.stopNestedScroll() + } + + override fun hasNestedScrollingParent(): Boolean { + return childHelper.hasNestedScrollingParent() + } + + override fun dispatchNestedScroll(dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow) + } + + override fun dispatchNestedPreScroll(dx: Int, dy: Int, consumed: IntArray?, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow) + } + + override fun dispatchNestedFling(velocityX: Float, velocityY: Float, consumed: Boolean): Boolean { + return childHelper.dispatchNestedFling(velocityX, velocityY, consumed) + } + + override fun dispatchNestedPreFling(velocityX: Float, velocityY: Float): Boolean { + return childHelper.dispatchNestedPreFling(velocityX, velocityY) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedViewPager.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedViewPager.kt new file mode 100644 index 0000000..0fbb8f0 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NestedViewPager.kt @@ -0,0 +1,88 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.core.view.* +import androidx.viewpager.widget.ViewPager + +class NestedViewPager @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : + ViewPager(context, attrs), NestedScrollingParent, NestedScrollingChild { + + private val parentHelper: NestedScrollingParentHelper = NestedScrollingParentHelper(this) + private val childHelper: NestedScrollingChildHelper = NestedScrollingChildHelper(this) + + init { + isNestedScrollingEnabled = true + } + + override fun setNestedScrollingEnabled(enabled: Boolean) { + childHelper.isNestedScrollingEnabled = enabled + } + + override fun isNestedScrollingEnabled(): Boolean { + return childHelper.isNestedScrollingEnabled + } + + override fun startNestedScroll(axes: Int): Boolean { + return childHelper.startNestedScroll(axes) + } + + override fun stopNestedScroll() { + childHelper.stopNestedScroll() + } + + override fun hasNestedScrollingParent(): Boolean { + return childHelper.hasNestedScrollingParent() + } + + override fun dispatchNestedScroll(dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow) + } + + override fun dispatchNestedPreScroll(dx: Int, dy: Int, consumed: IntArray?, offsetInWindow: IntArray?): Boolean { + return childHelper.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow) + } + + override fun dispatchNestedFling(velocityX: Float, velocityY: Float, consumed: Boolean): Boolean { + return childHelper.dispatchNestedFling(velocityX, velocityY, consumed) + } + + override fun dispatchNestedPreFling(velocityX: Float, velocityY: Float): Boolean { + return childHelper.dispatchNestedPreFling(velocityX, velocityY) + } + + override fun onStartNestedScroll(child: View, target: View, nestedScrollAxes: Int): Boolean { + return (nestedScrollAxes and ViewCompat.SCROLL_AXIS_VERTICAL) != 0 + } + + override fun onNestedScrollAccepted(child: View, target: View, nestedScrollAxes: Int) { + parentHelper.onNestedScrollAccepted(child, target, nestedScrollAxes) + startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL) + } + + override fun onStopNestedScroll(target: View) { + parentHelper.onStopNestedScroll(target) + stopNestedScroll() + } + + override fun onNestedScroll(target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, dyUnconsumed: Int) { + dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, null) + } + + override fun onNestedPreScroll(target: View, dx: Int, dy: Int, consumed: IntArray) { + dispatchNestedPreScroll(dx, dy, consumed, null) + } + + override fun onNestedFling(target: View, velocityX: Float, velocityY: Float, consumed: Boolean): Boolean { + return dispatchNestedFling(velocityX, velocityY, consumed) + } + + override fun onNestedPreFling(target: View, velocityX: Float, velocityY: Float): Boolean { + return dispatchNestedPreFling(velocityX, velocityY) + } + + override fun getNestedScrollAxes(): Int { + return parentHelper.nestedScrollAxes + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NoScrollViewPager.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NoScrollViewPager.kt new file mode 100644 index 0000000..992f928 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/NoScrollViewPager.kt @@ -0,0 +1,30 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.util.AttributeSet +import android.view.KeyEvent +import android.view.MotionEvent +import androidx.viewpager.widget.ViewPager +import kotlin.math.abs + +class NoScrollViewPager @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null) : + ViewPager(context, attrs) { + + override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean { + return false + } + + @Suppress("ClickableViewAccessibility") + override fun onTouchEvent(ev: MotionEvent?): Boolean { + return false + } + + override fun executeKeyEvent(event: KeyEvent): Boolean { + return false + } + + override fun setCurrentItem(item: Int) { + super.setCurrentItem(item, abs(currentItem - item) == 1) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/SettingBar.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/SettingBar.kt new file mode 100644 index 0000000..2e0e9a3 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/SettingBar.kt @@ -0,0 +1,391 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.content.res.TypedArray +import android.graphics.Color +import android.graphics.PorterDuff +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Drawable +import android.graphics.drawable.StateListDrawable +import android.text.TextUtils +import android.util.AttributeSet +import android.util.TypedValue +import android.view.Gravity +import android.view.View +import android.widget.FrameLayout +import android.widget.LinearLayout +import android.widget.TextView +import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import androidx.core.content.ContextCompat +import com.hjq.widget.R + +class SettingBar @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : + FrameLayout(context, attrs, defStyleAttr, defStyleRes) { + + companion object { + + const val NO_COLOR: Int = Color.TRANSPARENT + } + + private val mainLayout: LinearLayout = LinearLayout(getContext()) + private val leftView: TextView = TextView(getContext()) + private val rightView: TextView = TextView(getContext()) + private val lineView: View = View(getContext()) + + private var leftDrawableTint: Int = 0 + private var rightDrawableTint: Int = 0 + + private var leftDrawableSize: Int = 0 + private var rightDrawableSize: Int = 0 + + init { + mainLayout.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL) + val leftParams = LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT) + leftParams.gravity = Gravity.CENTER_VERTICAL + leftParams.weight = 1f + leftView.layoutParams = leftParams + + val rightParams = LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT) + rightParams.gravity = Gravity.CENTER_VERTICAL + rightView.layoutParams = rightParams + rightView.layoutParams = rightParams + + lineView.layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, 1, Gravity.BOTTOM) + leftView.gravity = Gravity.START or Gravity.CENTER_VERTICAL + rightView.gravity = Gravity.END or Gravity.CENTER_VERTICAL + leftView.isSingleLine = true + rightView.isSingleLine = true + leftView.ellipsize = TextUtils.TruncateAt.END + rightView.ellipsize = TextUtils.TruncateAt.END + leftView.setLineSpacing(resources.getDimension(R.dimen.dp_5), leftView.lineSpacingMultiplier) + rightView.setLineSpacing(resources.getDimension(R.dimen.dp_5), rightView.lineSpacingMultiplier) + leftView.setPaddingRelative( + resources.getDimension(R.dimen.dp_15).toInt(), + resources.getDimension(R.dimen.dp_12).toInt(), + resources.getDimension(R.dimen.dp_15).toInt(), + resources.getDimension(R.dimen.dp_12).toInt() + ) + rightView.setPaddingRelative( + resources.getDimension(R.dimen.dp_15).toInt(), + resources.getDimension(R.dimen.dp_12).toInt(), + resources.getDimension(R.dimen.dp_15).toInt(), + resources.getDimension(R.dimen.dp_12).toInt() + ) + val array: TypedArray = getContext().obtainStyledAttributes(attrs, R.styleable.SettingBar) + + if (array.hasValue(R.styleable.SettingBar_bar_leftText)) { + setLeftText(array.getString(R.styleable.SettingBar_bar_leftText)) + } + if (array.hasValue(R.styleable.SettingBar_bar_rightText)) { + setRightText(array.getString(R.styleable.SettingBar_bar_rightText)) + } + + if (array.hasValue(R.styleable.SettingBar_bar_leftTextHint)) { + setLeftTextHint(array.getString(R.styleable.SettingBar_bar_leftTextHint)) + } + if (array.hasValue(R.styleable.SettingBar_bar_rightTextHint)) { + setRightTextHint(array.getString(R.styleable.SettingBar_bar_rightTextHint)) + } + + if (array.hasValue(R.styleable.SettingBar_bar_leftDrawableSize)) { + setLeftDrawableSize( + array.getDimensionPixelSize( + R.styleable.SettingBar_bar_leftDrawableSize, + 0 + ) + ) + } + if (array.hasValue(R.styleable.SettingBar_bar_rightDrawableSize)) { + setRightDrawableSize( + array.getDimensionPixelSize( + R.styleable.SettingBar_bar_rightDrawableSize, + 0 + ) + ) + } + + if (array.hasValue(R.styleable.SettingBar_bar_leftDrawableTint)) { + setLeftDrawableTint( + array.getColor( + R.styleable.SettingBar_bar_leftDrawableTint, + NO_COLOR + ) + ) + } + if (array.hasValue(R.styleable.SettingBar_bar_rightDrawableTint)) { + setRightDrawableTint( + array.getColor( + R.styleable.SettingBar_bar_rightDrawableTint, + NO_COLOR + ) + ) + } + + setLeftDrawablePadding( + if (array.hasValue(R.styleable.SettingBar_bar_leftDrawablePadding)) array.getDimensionPixelSize( + R.styleable.SettingBar_bar_leftDrawablePadding, + 0 + ) else resources.getDimension(R.dimen.dp_10).toInt() + ) + setRightDrawablePadding( + if (array.hasValue(R.styleable.SettingBar_bar_rightDrawablePadding)) + array.getDimensionPixelSize(R.styleable.SettingBar_bar_rightDrawablePadding, 0) + else + resources.getDimension(R.dimen.dp_10).toInt() + ) + + if (array.hasValue(R.styleable.SettingBar_bar_leftDrawable)) { + setLeftDrawable(array.getDrawable(R.styleable.SettingBar_bar_leftDrawable)) + } + if (array.hasValue(R.styleable.SettingBar_bar_rightDrawable)) { + setRightDrawable(array.getDrawable(R.styleable.SettingBar_bar_rightDrawable)) + } + + setLeftTextColor( + array.getColor( + R.styleable.SettingBar_bar_leftTextColor, + ContextCompat.getColor(getContext(), R.color.black80) + ) + ) + setRightTextColor( + array.getColor( + R.styleable.SettingBar_bar_rightTextColor, + ContextCompat.getColor(getContext(), R.color.black60) + ) + ) + + setLeftTextSize(TypedValue.COMPLEX_UNIT_PX, array.getDimensionPixelSize( + R.styleable.SettingBar_bar_leftTextSize, resources.getDimension(R.dimen.sp_15).toInt()).toFloat()) + setRightTextSize(TypedValue.COMPLEX_UNIT_PX, array.getDimensionPixelSize( + R.styleable.SettingBar_bar_rightTextSize, resources.getDimension(R.dimen.sp_14).toInt()).toFloat()) + + if (array.hasValue(R.styleable.SettingBar_bar_lineDrawable)) { + setLineDrawable(array.getDrawable(R.styleable.SettingBar_bar_lineDrawable)) + } else { + setLineDrawable(ColorDrawable(Color.parseColor("#ECECEC"))) + } + if (array.hasValue(R.styleable.SettingBar_bar_lineVisible)) { + setLineVisible(array.getBoolean(R.styleable.SettingBar_bar_lineVisible, true)) + } + if (array.hasValue(R.styleable.SettingBar_bar_lineSize)) { + setLineSize(array.getDimensionPixelSize(R.styleable.SettingBar_bar_lineSize, 0)) + } + if (array.hasValue(R.styleable.SettingBar_bar_lineMargin)) { + setLineMargin(array.getDimensionPixelSize(R.styleable.SettingBar_bar_lineMargin, 0)) + } + if (background == null) { + val drawable = StateListDrawable() + drawable.addState( + intArrayOf(android.R.attr.state_pressed), + ColorDrawable(ContextCompat.getColor(getContext(), R.color.black5)) + ) + drawable.addState( + intArrayOf(android.R.attr.state_selected), + ColorDrawable(ContextCompat.getColor(getContext(), R.color.black5)) + ) + drawable.addState( + intArrayOf(android.R.attr.state_focused), + ColorDrawable(ContextCompat.getColor(getContext(), R.color.black5)) + ) + drawable.addState( + intArrayOf(), + ColorDrawable(ContextCompat.getColor(getContext(), R.color.white)) + ) + background = drawable + + isFocusable = true + isClickable = true + } + array.recycle() + mainLayout.addView(leftView) + mainLayout.addView(rightView) + addView(mainLayout, 0) + addView(lineView, 1) + } + + fun setLeftText(@StringRes id: Int): SettingBar = apply { + setLeftText(resources.getString(id)) + } + + fun setLeftText(text: CharSequence?): SettingBar = apply { + leftView.text = text + } + + fun getLeftText(): CharSequence? { + return leftView.text + } + + fun setLeftTextHint(@StringRes id: Int): SettingBar = apply { + setLeftTextHint(resources.getString(id)) + } + + fun setLeftTextHint(hint: CharSequence?): SettingBar = apply { + leftView.hint = hint + } + + fun setRightText(@StringRes id: Int): SettingBar = apply { + setRightText(resources.getString(id)) + } + + fun setRightText(text: CharSequence?): SettingBar = apply { + rightView.text = text + } + + fun getRightText(): CharSequence? { + return rightView.text + } + + fun setRightTextHint(@StringRes id: Int): SettingBar = apply { + setRightTextHint(resources.getString(id)) + } + + fun setRightTextHint(hint: CharSequence?): SettingBar = apply { + rightView.hint = hint + } + + fun setLeftDrawable(@DrawableRes id: Int): SettingBar = apply { + setLeftDrawable(ContextCompat.getDrawable(context, id)) + } + + fun setLeftDrawable(drawable: Drawable?): SettingBar = apply { + leftView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null) + setLeftDrawableSize(leftDrawableSize) + setLeftDrawableTint(leftDrawableTint) + } + + fun getLeftDrawable(): Drawable? { + return leftView.compoundDrawables[0] + } + + fun setRightDrawable(@DrawableRes id: Int): SettingBar = apply { + setRightDrawable(ContextCompat.getDrawable(context, id)) + } + + fun setRightDrawable(drawable: Drawable?): SettingBar = apply { + rightView.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null) + setRightDrawableSize(rightDrawableSize) + setRightDrawableTint(rightDrawableTint) + } + + fun getRightDrawable(): Drawable? { + return rightView.compoundDrawables[2] + } + + fun setLeftDrawablePadding(padding: Int): SettingBar = apply { + leftView.compoundDrawablePadding = padding + } + + fun setRightDrawablePadding(padding: Int): SettingBar = apply { + rightView.compoundDrawablePadding = padding + } + + fun setLeftDrawableSize(size: Int): SettingBar = apply { + leftDrawableSize = size + val drawable: Drawable? = getLeftDrawable() + if (drawable != null) { + if (size > 0) { + drawable.setBounds(0, 0, size, size) + } else { + drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight) + } + leftView.setCompoundDrawables(drawable, null, null, null) + } + } + + fun setRightDrawableSize(size: Int): SettingBar = apply { + rightDrawableSize = size + val drawable: Drawable? = getRightDrawable() + if (drawable != null) { + if (size > 0) { + drawable.setBounds(0, 0, size, size) + } else { + drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight) + } + rightView.setCompoundDrawables(null, null, drawable, null) + } + } + + fun setLeftDrawableTint(color: Int): SettingBar = apply { + leftDrawableTint = color + val drawable: Drawable? = getLeftDrawable() + if (drawable != null && color != NO_COLOR) { + drawable.mutate() + drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN) + } + } + + fun setRightDrawableTint(color: Int): SettingBar = apply { + rightDrawableTint = color + val drawable: Drawable? = getRightDrawable() + if (drawable != null && color != NO_COLOR) { + drawable.mutate() + drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN) + } + } + + fun setLeftTextColor(@ColorInt color: Int): SettingBar = apply { + leftView.setTextColor(color) + } + + fun setRightTextColor(@ColorInt color: Int): SettingBar = apply { + rightView.setTextColor(color) + } + + fun setLeftTextSize(unit: Int, size: Float): SettingBar = apply { + leftView.setTextSize(unit, size) + } + + fun setRightTextSize(unit: Int, size: Float): SettingBar = apply { + rightView.setTextSize(unit, size) + } + + fun setLineVisible(visible: Boolean): SettingBar = apply { + lineView.visibility = if (visible) VISIBLE else GONE + } + + fun setLineColor(@ColorInt color: Int): SettingBar = apply { + setLineDrawable(ColorDrawable(color)) + } + + fun setLineDrawable(drawable: Drawable?): SettingBar = apply { + lineView.background = drawable + } + + fun setLineSize(size: Int): SettingBar = apply { + var params: LayoutParams? = lineView.layoutParams as LayoutParams? + if (params == null) { + params = generateDefaultLayoutParams() + } + params?.height = size + lineView.layoutParams = params + } + + fun setLineMargin(margin: Int): SettingBar = apply { + var params: LayoutParams? = lineView.layoutParams as LayoutParams? + if (params == null) { + params = generateDefaultLayoutParams() + } + params?.leftMargin = margin + params?.rightMargin = margin + lineView.layoutParams = params + } + + fun getMainLayout(): LinearLayout { + return mainLayout + } + + fun getLeftView(): TextView { + return leftView + } + + fun getRightView(): TextView { + return rightView + } + + fun getLineView(): View { + return lineView + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/WrapRecyclerView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/WrapRecyclerView.kt new file mode 100644 index 0000000..34e89a2 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/layout/WrapRecyclerView.kt @@ -0,0 +1,316 @@ +package com.hjq.widget.layout + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.ViewParent +import androidx.annotation.LayoutRes +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup +import androidx.recyclerview.widget.RecyclerView +import java.util.* + +class WrapRecyclerView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + RecyclerView(context, attrs, defStyleAttr) { + + private var realAdapter: Adapter? = null + + private var wrapAdapter: WrapRecyclerAdapter = WrapRecyclerAdapter() + + override fun setAdapter(adapter: Adapter?) { + realAdapter = adapter + wrapAdapter.setRealAdapter(realAdapter) + itemAnimator = null + super.setAdapter(wrapAdapter) + } + + override fun getAdapter(): Adapter<*>? { + return realAdapter + } + + fun addHeaderView(view: View) { + wrapAdapter.addHeaderView(view) + } + + @Suppress("UNCHECKED_CAST") + fun addHeaderView(@LayoutRes id: Int): V { + val headerView: View = LayoutInflater.from(context).inflate(id, this, false) + addHeaderView(headerView) + return headerView as V + } + + fun removeHeaderView(view: View) { + wrapAdapter.removeHeaderView(view) + } + + fun addFooterView(view: View) { + wrapAdapter.addFooterView(view) + } + + @Suppress("UNCHECKED_CAST") + fun addFooterView(@LayoutRes id: Int): V { + val footerView: View = LayoutInflater.from(context).inflate(id, this, false) + addFooterView(footerView) + return footerView as V + } + + fun removeFooterView(view: View) { + wrapAdapter.removeFooterView(view) + } + + fun getHeaderViewsCount(): Int { + return wrapAdapter.getHeaderViewsCount() + } + + fun getFooterViewsCount(): Int { + return wrapAdapter.getFooterViewsCount() + } + + fun getHeaderViews(): MutableList { + return wrapAdapter.getHeaderViews() + } + + fun getFooterViews(): MutableList { + return wrapAdapter.getFooterViews() + } + + fun refreshHeaderFooterViews() { + wrapAdapter.notifyDataSetChanged() + } + + fun adjustSpanSize() { + val layoutManager: LayoutManager? = layoutManager + if (layoutManager !is GridLayoutManager) { + return + } + + layoutManager.spanSizeLookup = object : SpanSizeLookup() { + + override fun getSpanSize(position: Int): Int { + return if (((position < wrapAdapter.getHeaderViewsCount() + || position >= wrapAdapter.getHeaderViewsCount() + (if (realAdapter == null) 0 else realAdapter!!.itemCount))) + ) layoutManager.spanCount else 1 + } + } + } + + private class WrapRecyclerAdapter : Adapter() { + + companion object { + + private const val HEADER_VIEW_TYPE: Int = Int.MIN_VALUE shr 1 + + private const val FOOTER_VIEW_TYPE: Int = Int.MAX_VALUE shr 1 + } + + private var realAdapter: Adapter? = null + + private val headerViews: MutableList = ArrayList() + + private val footerViews: MutableList = ArrayList() + + private var currentPosition: Int = 0 + + private var recyclerView: RecyclerView? = null + + private var observer: WrapAdapterDataObserver? = null + + @Suppress("UNCHECKED_CAST") + fun setRealAdapter(adapter: Adapter?) { + if (realAdapter === adapter) { + return + } + if (realAdapter != null) { + if (observer != null) { + realAdapter!!.unregisterAdapterDataObserver(observer!!) + } + } + realAdapter = adapter as Adapter? + if (realAdapter == null) { + return + } + if (observer == null) { + observer = WrapAdapterDataObserver(this) + } + realAdapter?.registerAdapterDataObserver(observer!!) + if (recyclerView != null) { + notifyDataSetChanged() + } + } + + override fun getItemCount(): Int { + var itemCount = 0 + if (realAdapter != null) { + itemCount = realAdapter!!.itemCount + } + return getHeaderViewsCount() + itemCount + getFooterViewsCount() + } + + override fun getItemViewType(position: Int): Int { + currentPosition = position + val headerCount: Int = getHeaderViewsCount() + val adapterCount: Int = if (realAdapter != null) realAdapter!!.itemCount else 0 + val adjPosition: Int = position - headerCount + if (position < headerCount) { + return HEADER_VIEW_TYPE + } else if (adjPosition < adapterCount) { + return realAdapter!!.getItemViewType(adjPosition) + } + return FOOTER_VIEW_TYPE + } + + fun getPosition(): Int { + return currentPosition + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + return when (viewType) { + HEADER_VIEW_TYPE -> newWrapViewHolder(headerViews[getPosition()]!!) + FOOTER_VIEW_TYPE -> newWrapViewHolder(footerViews[getPosition() - getHeaderViewsCount() - (if (realAdapter != null) realAdapter!!.itemCount else 0)]!!) + else -> { + val itemViewType: Int = realAdapter!!.getItemViewType(getPosition() - getHeaderViewsCount()) + if (itemViewType == HEADER_VIEW_TYPE || itemViewType == FOOTER_VIEW_TYPE) { + throw IllegalStateException("Please do not use this type as itemType") + } + realAdapter!!.onCreateViewHolder(parent, itemViewType) + } + } + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + if (realAdapter == null) { + return + } + when (getItemViewType(position)) { + HEADER_VIEW_TYPE, FOOTER_VIEW_TYPE -> {} + else -> realAdapter!!.onBindViewHolder(holder, getPosition() - getHeaderViewsCount()) + } + } + + private fun newWrapViewHolder(view: View): WrapViewHolder { + val parent: ViewParent? = view.parent + if (parent is ViewGroup) { + // IllegalStateException: ViewHolder views must not be attached when created. + // Ensure that you are not passing 'true' to the attachToRoot parameter of LayoutInflater.inflate(..., boolean attachToRoot) + parent.removeView(view) + } + return WrapViewHolder(view) + } + + override fun getItemId(position: Int): Long { + if ((realAdapter != null) && (position > getHeaderViewsCount() - 1) && (position < getHeaderViewsCount() + realAdapter!!.itemCount)) { + return realAdapter!!.getItemId(position - getHeaderViewsCount()) + } + return super.getItemId(position) + } + + override fun onAttachedToRecyclerView(recyclerView: RecyclerView) { + this.recyclerView = recyclerView + realAdapter?.onAttachedToRecyclerView(recyclerView) + } + + override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { + this.recyclerView = null + realAdapter?.onDetachedFromRecyclerView(recyclerView) + } + + override fun onViewRecycled(holder: ViewHolder) { + if (holder is WrapViewHolder) { + holder.setIsRecyclable(false) + return + } + realAdapter?.onViewRecycled(holder) + } + + override fun onFailedToRecycleView(holder: ViewHolder): Boolean { + if (realAdapter == null) { + return super.onFailedToRecycleView(holder) + } + return realAdapter!!.onFailedToRecycleView(holder) + } + + override fun onViewAttachedToWindow(holder: ViewHolder) { + if (realAdapter == null) { + return + } + realAdapter!!.onViewAttachedToWindow(holder) + } + + override fun onViewDetachedFromWindow(holder: ViewHolder) { + realAdapter?.onViewDetachedFromWindow(holder) + } + fun addHeaderView(view: View) { + if (!headerViews.contains(view) && !footerViews.contains(view)) { + headerViews.add(view) + notifyDataSetChanged() + } + } + + fun removeHeaderView(view: View) { + if (headerViews.remove(view)) { + notifyDataSetChanged() + } + } + + fun addFooterView(view: View) { + // 不能添加同一个View对象,否则会导致RecyclerView复用异常 + if (!footerViews.contains(view) && !headerViews.contains(view)) { + footerViews.add(view) + notifyDataSetChanged() + } + } + + fun removeFooterView(view: View) { + if (footerViews.remove(view)) { + notifyDataSetChanged() + } + } + + fun getHeaderViewsCount(): Int { + return headerViews.size + } + + fun getFooterViewsCount(): Int { + return footerViews.size + } + + fun getHeaderViews(): MutableList { + return headerViews + } + fun getFooterViews(): MutableList { + return footerViews + } + } + + private class WrapViewHolder constructor(itemView: View) : ViewHolder(itemView) + + private class WrapAdapterDataObserver constructor(private val wrapAdapter: WrapRecyclerAdapter) : AdapterDataObserver() { + + override fun onChanged() { + wrapAdapter.notifyDataSetChanged() + } + + override fun onItemRangeChanged(positionStart: Int, itemCount: Int, payload: Any?) { + wrapAdapter.notifyItemRangeChanged(wrapAdapter.getHeaderViewsCount() + positionStart, itemCount, payload) + } + + override fun onItemRangeChanged(positionStart: Int, itemCount: Int) { + wrapAdapter.notifyItemRangeChanged(wrapAdapter.getHeaderViewsCount() + positionStart, itemCount) + } + + override fun onItemRangeInserted(positionStart: Int, itemCount: Int) { + wrapAdapter.notifyItemRangeInserted(wrapAdapter.getHeaderViewsCount() + positionStart, itemCount) + } + + override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) { + wrapAdapter.notifyItemRangeRemoved(wrapAdapter.getHeaderViewsCount() + positionStart, itemCount) + } + + override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) { + wrapAdapter.notifyItemMoved(wrapAdapter.getHeaderViewsCount() + fromPosition, wrapAdapter.getHeaderViewsCount() + toPosition) + } + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ClearEditText.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ClearEditText.kt new file mode 100644 index 0000000..4232e5d --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ClearEditText.kt @@ -0,0 +1,96 @@ +package com.hjq.widget.view + +import android.content.Context +import android.graphics.drawable.Drawable +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import android.view.View.OnFocusChangeListener +import android.view.View.OnTouchListener +import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.DrawableCompat +import com.hjq.widget.R + +@Suppress("ClickableViewAccessibility") +class ClearEditText @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = android.R.attr.editTextStyle) : + RegexEditText(context, attrs, defStyleAttr), + OnTouchListener, OnFocusChangeListener, TextWatcher { + + private val clearDrawable: Drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.input_delete_ic)!!) + private var touchListener: OnTouchListener? = null + private var focusChangeListener: OnFocusChangeListener? = null + + init { + clearDrawable.setBounds(0, 0, clearDrawable.intrinsicWidth, clearDrawable.intrinsicHeight) + setDrawableVisible(false) + super.setOnTouchListener(this) + super.setOnFocusChangeListener(this) + super.addTextChangedListener(this) + } + + private fun setDrawableVisible(visible: Boolean) { + if (clearDrawable.isVisible == visible) { + return + } + clearDrawable.setVisible(visible, false) + val drawables: Array = compoundDrawablesRelative + setCompoundDrawablesRelative(drawables[0], drawables[1], + if (visible) clearDrawable else null, drawables[3]) + } + + override fun setOnFocusChangeListener(onFocusChangeListener: OnFocusChangeListener?) { + focusChangeListener = onFocusChangeListener + } + + override fun setOnTouchListener(onTouchListener: OnTouchListener?) { + touchListener = onTouchListener + } + + /** + * [OnFocusChangeListener] + */ + override fun onFocusChange(view: View, hasFocus: Boolean) { + setDrawableVisible(hasFocus && !TextUtils.isEmpty(text)) + focusChangeListener?.onFocusChange(view, hasFocus) + } + + /** + * [OnTouchListener] + */ + override fun onTouch(view: View, event: MotionEvent): Boolean { + val x: Int = event.x.toInt() + + var touchDrawable = false + val layoutDirection: Int = layoutDirection + if (layoutDirection == LAYOUT_DIRECTION_LTR) { + touchDrawable = x > width - clearDrawable.intrinsicWidth - paddingEnd && x < width - paddingEnd + } else if (layoutDirection == LAYOUT_DIRECTION_RTL) { + touchDrawable = x > paddingStart && x < paddingStart + clearDrawable.intrinsicWidth + } + if (clearDrawable.isVisible && touchDrawable) { + if (event.action == MotionEvent.ACTION_UP) { + setText("") + } + return true + } + return touchListener?.onTouch(view, event) ?: false + } + + /** + * [TextWatcher] + */ + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + if (isFocused) { + setDrawableVisible(s.isNotEmpty()) + } + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + + override fun afterTextChanged(s: Editable?) {} +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/CountdownView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/CountdownView.kt new file mode 100644 index 0000000..75cdcd7 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/CountdownView.kt @@ -0,0 +1,54 @@ +package com.hjq.widget.view + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView + +class CountdownView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + AppCompatTextView(context, attrs, defStyleAttr), Runnable { + + companion object { + + private const val TIME_UNIT: String = "S" + } + + private var totalSecond: Int = 60 + + private var currentSecond: Int = 0 + + private var recordText: CharSequence? = null + + fun setTotalTime(totalTime: Int) { + totalSecond = totalTime + } + + fun start() { + recordText = text + isEnabled = false + currentSecond = totalSecond + post(this) + } + + fun stop() { + currentSecond = 0 + text = recordText + isEnabled = true + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + removeCallbacks(this) + } + + @Suppress("SetTextI18n") + override fun run() { + if (currentSecond == 0) { + stop() + return + } + currentSecond-- + text = "$currentSecond $TIME_UNIT" + postDelayed(this, 1000) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PasswordEditText.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PasswordEditText.kt new file mode 100644 index 0000000..e13a5ac --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PasswordEditText.kt @@ -0,0 +1,126 @@ +package com.hjq.widget.view + +import android.content.Context +import android.graphics.drawable.Drawable +import android.text.Editable +import android.text.InputType +import android.text.TextUtils +import android.text.TextWatcher +import android.text.method.HideReturnsTransformationMethod +import android.text.method.PasswordTransformationMethod +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import android.view.View.OnFocusChangeListener +import android.view.View.OnTouchListener +import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.DrawableCompat +import com.hjq.widget.R + +@Suppress("ClickableViewAccessibility") +class PasswordEditText @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = android.R.attr.editTextStyle) : + RegexEditText(context, attrs, defStyleAttr), + OnTouchListener, OnFocusChangeListener, TextWatcher { + + private var currentDrawable: Drawable + private val visibleDrawable: Drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.password_off_ic)!!) + private val invisibleDrawable: Drawable + private var touchListener: OnTouchListener? = null + private var focusChangeListener: OnFocusChangeListener? = null + + init { + visibleDrawable.setBounds(0, 0, visibleDrawable.intrinsicWidth, visibleDrawable.intrinsicHeight) + invisibleDrawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.password_on_ic)!!) + invisibleDrawable.setBounds(0, 0, invisibleDrawable.intrinsicWidth, invisibleDrawable.intrinsicHeight) + currentDrawable = visibleDrawable + + addInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD) + if (getInputRegex() == null) { + setInputRegex(REGEX_NONNULL) + } + setDrawableVisible(false) + super.setOnTouchListener(this) + super.setOnFocusChangeListener(this) + super.addTextChangedListener(this) + } + + private fun setDrawableVisible(visible: Boolean) { + if (currentDrawable.isVisible == visible) { + return + } + currentDrawable.setVisible(visible, false) + val drawables: Array = compoundDrawablesRelative + setCompoundDrawablesRelative(drawables[0], drawables[1], if (visible) currentDrawable else null, drawables[3]) + } + + private fun refreshDrawableStatus() { + val drawables: Array = compoundDrawablesRelative + setCompoundDrawablesRelative(drawables[0], drawables[1], currentDrawable, drawables[3]) + } + + override fun setOnFocusChangeListener(onFocusChangeListener: OnFocusChangeListener?) { + focusChangeListener = onFocusChangeListener + } + + override fun setOnTouchListener(onTouchListener: OnTouchListener?) { + touchListener = onTouchListener + } + + /** + * [OnFocusChangeListener] + */ + override fun onFocusChange(view: View?, hasFocus: Boolean) { + setDrawableVisible(hasFocus && !TextUtils.isEmpty(text)) + focusChangeListener?.onFocusChange(view, hasFocus) + } + + /** + * [OnTouchListener] + */ + override fun onTouch(view: View, event: MotionEvent): Boolean { + val x: Int = event.x.toInt() + + var touchDrawable = false + val layoutDirection: Int = layoutDirection + if (layoutDirection == LAYOUT_DIRECTION_LTR) { + touchDrawable = x > width - currentDrawable.intrinsicWidth - paddingEnd && x < width - paddingEnd + } else if (layoutDirection == LAYOUT_DIRECTION_RTL) { + touchDrawable = x > paddingStart && + x < paddingStart + currentDrawable.intrinsicWidth + } + if (currentDrawable.isVisible && touchDrawable) { + if (event.action == MotionEvent.ACTION_UP) { + if (currentDrawable === visibleDrawable) { + currentDrawable = invisibleDrawable + transformationMethod = HideReturnsTransformationMethod.getInstance() + refreshDrawableStatus() + } else if (currentDrawable === invisibleDrawable) { + currentDrawable = visibleDrawable + transformationMethod = PasswordTransformationMethod.getInstance() + refreshDrawableStatus() + } + val editable: Editable? = text + if (editable != null) { + setSelection(editable.toString().length) + } + } + return true + } + return touchListener != null && touchListener!!.onTouch(view, event) + } + + /** + * [TextWatcher] + */ + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + if (isFocused && s != null) { + setDrawableVisible(s.isNotEmpty()) + } + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + + override fun afterTextChanged(s: Editable?) {} +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PlayButton.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PlayButton.kt new file mode 100644 index 0000000..c11f879 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PlayButton.kt @@ -0,0 +1,197 @@ +package com.hjq.widget.view + +import android.animation.ValueAnimator +import android.content.* +import android.content.res.TypedArray +import android.graphics.* +import android.util.AttributeSet +import android.view.* +import android.view.animation.AnticipateInterpolator +import com.hjq.widget.R + +class PlayButton @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + View(context, attrs, defStyleAttr) { + + companion object { + + const val STATE_PLAY: Int = 0 + + const val STATE_PAUSE: Int = 1 + } + + private var currentState: Int = STATE_PAUSE + + private var animDuration: Int + + private val paint: Paint + private var viewWidth: Int = 0 + private var viewHeight: Int = 0 + private var centerX: Int = 0 + private var centerY: Int = 0 + private var circleRadius: Int = 0 + private var rectF: RectF? = null + private var bgRectF: RectF? = null + private var fraction: Float = 1f + private val path: Path + private val dstPath: Path + private val pathMeasure: PathMeasure + private var pathLength: Float = 0f + + init { + val typedArray: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.PlayButton) + val lineColor: Int = typedArray.getColor(R.styleable.PlayButton_pb_lineColor, Color.WHITE) + val lineSize: Int = typedArray.getInteger( + R.styleable.PlayButton_pb_lineSize, + resources.getDimension(R.dimen.dp_4).toInt() + ) + animDuration = typedArray.getInteger(R.styleable.PlayButton_pb_animDuration, 200) + typedArray.recycle() + + // 关闭硬件加速 + setLayerType(LAYER_TYPE_SOFTWARE, null) + paint = Paint(Paint.ANTI_ALIAS_FLAG) + paint.style = Paint.Style.STROKE + paint.strokeCap = Paint.Cap.ROUND + paint.color = lineColor + paint.strokeWidth = lineSize.toFloat() + paint.pathEffect = CornerPathEffect(1f) + path = Path() + dstPath = Path() + pathMeasure = PathMeasure() + } + + override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) { + super.onSizeChanged(width, height, oldWidth, oldHeight) + viewWidth = width * 9 / 10 + viewHeight = height * 9 / 10 + circleRadius = width / resources.getDimension(R.dimen.dp_4).toInt() + centerX = width / 2 + centerY = height / 2 + rectF = RectF( + (centerX - circleRadius).toFloat(), centerY + 0.6f * circleRadius, + (centerX + circleRadius).toFloat(), centerY + 2.6f * circleRadius + ) + bgRectF = RectF( + centerX - viewWidth / 2f, centerY - viewHeight / 2f, + centerX + viewWidth / 2f, centerY + viewHeight / 2f + ) + path.moveTo((centerX - circleRadius).toFloat(), centerY + 1.8f * circleRadius) + path.lineTo((centerX - circleRadius).toFloat(), centerY - 1.8f * circleRadius) + path.lineTo((centerX + circleRadius).toFloat(), centerY.toFloat()) + path.close() + pathMeasure.setPath(path, false) + pathLength = pathMeasure.length + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + var finalWidthMeasureSpec: Int = widthMeasureSpec + var finalHeightMeasureSpec: Int = heightMeasureSpec + when (MeasureSpec.getMode(finalWidthMeasureSpec)) { + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> + finalWidthMeasureSpec = MeasureSpec.makeMeasureSpec(resources.getDimension(R.dimen.dp_60).toInt(), MeasureSpec.EXACTLY) + MeasureSpec.EXACTLY -> {} + } + when (MeasureSpec.getMode(finalHeightMeasureSpec)) { + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> + finalHeightMeasureSpec = MeasureSpec.makeMeasureSpec(resources.getDimension(R.dimen.dp_60).toInt(), MeasureSpec.EXACTLY) + MeasureSpec.EXACTLY -> {} + } + setMeasuredDimension(finalWidthMeasureSpec, finalHeightMeasureSpec) + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.drawCircle(centerX.toFloat(), centerY.toFloat(), viewWidth / 2f, paint) + when { + fraction < 0 -> { + canvas.drawLine((centerX + circleRadius).toFloat(), + centerY - 1.6f * circleRadius + 10 * circleRadius * fraction, (centerX + circleRadius).toFloat(), + centerY + (1.6f * circleRadius) + (10 * circleRadius * fraction), paint) + canvas.drawLine((centerX - circleRadius).toFloat(), centerY - 1.6f * circleRadius, ( + centerX - circleRadius).toFloat(), centerY + 1.6f * circleRadius, paint) + canvas.drawArc(bgRectF!!, -105f, 360f, false, paint) + } + fraction <= 0.3 -> { + canvas.drawLine((centerX + circleRadius).toFloat(), + centerY - 1.6f * circleRadius + circleRadius * 3.2f / 0.3f * fraction, (centerX + circleRadius).toFloat(), + centerY + 1.6f * circleRadius, paint) + canvas.drawLine((centerX - circleRadius).toFloat(), centerY - 1.6f * circleRadius, ( + centerX - circleRadius).toFloat(), centerY + 1.6f * circleRadius, paint) + if (fraction != 0f) { + canvas.drawArc(rectF!!, 0f, 180f / 0.3f * fraction, false, paint) + } + canvas.drawArc(bgRectF!!, -105 + 360 * fraction, 360 * (1 - fraction), false, paint) + } + fraction <= 0.6 -> { + canvas.drawArc(rectF!!, 180f / 0.3f * (fraction - 0.3f), + 180 - 180f / 0.3f * (fraction - 0.3f), false, paint) + dstPath.reset() + pathMeasure.getSegment(0.02f * pathLength, + 0.38f * pathLength + 0.42f * pathLength / 0.3f * (fraction - 0.3f), + dstPath, true) + canvas.drawPath(dstPath, paint) + canvas.drawArc(bgRectF!!, -105 + 360 * fraction, 360 * (1 - fraction), false, paint) + } + fraction <= 0.8 -> { + dstPath.reset() + pathMeasure.getSegment(0.02f * pathLength + 0.2f * pathLength / 0.2f * (fraction - 0.6f), + 0.8f * pathLength + 0.2f * pathLength / 0.2f * (fraction - 0.6f), dstPath, true) + canvas.drawPath(dstPath, paint) + canvas.drawArc(bgRectF!!, -105 + 360 * fraction, 360 * (1 - fraction), false, paint) + } + else -> { + dstPath.reset() + pathMeasure.getSegment(10 * circleRadius * (fraction - 1), pathLength, dstPath, true) + canvas.drawPath(dstPath, paint) + } + } + } + + fun play() { + if (currentState == STATE_PLAY) { + return + } + currentState = STATE_PLAY + val valueAnimator: ValueAnimator = ValueAnimator.ofFloat(1f, 100f) + valueAnimator.duration = animDuration.toLong() + valueAnimator.interpolator = AnticipateInterpolator() + valueAnimator.addUpdateListener { animation: ValueAnimator -> + fraction = 1 - animation.animatedFraction + invalidate() + } + valueAnimator.start() + } + + fun pause() { + if (currentState == STATE_PAUSE) { + return + } + currentState = STATE_PAUSE + val valueAnimator: ValueAnimator = ValueAnimator.ofFloat(1f, 100f) + valueAnimator.duration = animDuration.toLong() + valueAnimator.interpolator = AnticipateInterpolator() + valueAnimator.addUpdateListener { animation: ValueAnimator -> + fraction = animation.animatedFraction + invalidate() + } + valueAnimator.start() + } + fun getCurrentState(): Int { + return currentState + } + + fun setAnimDuration(duration: Int) { + animDuration = duration + } + + fun setLineColor(color: Int) { + paint.color = color + invalidate() + } + + fun setLineSize(size: Int) { + paint.strokeWidth = size.toFloat() + invalidate() + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PressAlphaTextView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PressAlphaTextView.kt new file mode 100644 index 0000000..c237404 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/PressAlphaTextView.kt @@ -0,0 +1,15 @@ +package com.hjq.widget.view + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView + +class PressAlphaTextView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + AppCompatTextView(context, attrs, defStyleAttr) { + + override fun dispatchSetPressed(pressed: Boolean) { + // 判断当前手指是否按下了 + alpha = if (pressed) 0.5f else 1f + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/RegexEditText.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/RegexEditText.kt new file mode 100644 index 0000000..f3d9a78 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/RegexEditText.kt @@ -0,0 +1,130 @@ +package com.hjq.widget.view + +import android.content.* +import android.content.res.TypedArray +import android.text.* +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatEditText +import com.hjq.widget.R +import java.util.regex.Pattern + +open class RegexEditText @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = android.R.attr.editTextStyle +) : AppCompatEditText(context, attrs, defStyleAttr), InputFilter { + + companion object { + + const val REGEX_MOBILE: String = "[1]\\d{0,10}" + + const val REGEX_CHINESE: String = "[\\u4e00-\\u9fa5]*" + + const val REGEX_ENGLISH: String = "[a-zA-Z]*" + + const val REGEX_NUMBER: String = "\\d*" + + const val REGEX_COUNT: String = "[1-9]\\d*" + + const val REGEX_NAME: String = "[[\\u4e00-\\u9fa5]|[a-zA-Z]|\\d]*" + + const val REGEX_NONNULL: String = "\\S+" + } + + private var pattern: Pattern? = null + + init { + val array: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.RegexEditText) + if (array.hasValue(R.styleable.RegexEditText_inputRegex)) { + setInputRegex(array.getString(R.styleable.RegexEditText_inputRegex)) + } else if (array.hasValue(R.styleable.RegexEditText_regexType)) { + when (array.getInt(R.styleable.RegexEditText_regexType, 0)) { + 0x01 -> setInputRegex(REGEX_MOBILE) + 0x02 -> setInputRegex(REGEX_CHINESE) + 0x03 -> setInputRegex(REGEX_ENGLISH) + 0x04 -> setInputRegex(REGEX_NUMBER) + 0x05 -> setInputRegex(REGEX_COUNT) + 0x06 -> setInputRegex(REGEX_NAME) + 0x07 -> setInputRegex(REGEX_NONNULL) + } + } + array.recycle() + } + + fun hasInputType(type: Int): Boolean { + return (inputType and type) != 0 + } + + fun addInputType(type: Int) { + inputType = inputType or type + } + + fun removeInputType(type: Int) { + inputType = inputType and type.inv() + } + + fun setInputRegex(regex: String?) { + if (TextUtils.isEmpty(regex)) { + return + } + pattern = Pattern.compile(regex!!) + addFilters(this) + } + + fun getInputRegex(): String? { + if (pattern == null) { + return null + } + return pattern!!.pattern() + } + + fun addFilters(filter: InputFilter?) { + if (filter == null) { + return + } + val newFilters: Array? + val oldFilters: Array? = filters + if (oldFilters != null && oldFilters.isNotEmpty()) { + newFilters = arrayOfNulls(oldFilters.size + 1) + // 复制旧数组的元素到新数组中 + System.arraycopy(oldFilters, 0, newFilters, 0, oldFilters.size) + newFilters[oldFilters.size] = filter + } else { + newFilters = arrayOfNulls(1) + newFilters[0] = filter + } + super.setFilters(newFilters) + } + + fun clearFilters() { + super.setFilters(arrayOfNulls(0)) + } + + override fun filter(source: CharSequence?, start: Int, end: Int, + dest: Spanned?, destStart: Int, destEnd: Int): CharSequence? { + + if (pattern == null) { + return source + } + + val begin: String = dest.toString().substring(0, destStart) + val over: String = dest.toString().substring( + destStart + (destEnd - destStart), + destStart + (dest.toString().length - begin.length) + ) + val result: String = begin + source + over + + if (destStart > destEnd - 1) { + if (!pattern!!.matcher(result).matches()) { + return "" + } + } else { + if (!pattern!!.matcher(result).matches()) { + if ("" != result) { + return dest.toString().substring(destStart, destEnd) + } + } + } + + return source + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ScaleImageView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ScaleImageView.kt new file mode 100644 index 0000000..ceced7b --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/ScaleImageView.kt @@ -0,0 +1,34 @@ +package com.hjq.widget.view + +import android.content.* +import android.content.res.TypedArray +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import com.hjq.widget.R + +class ScaleImageView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + AppCompatImageView(context, attrs, defStyleAttr) { + + private var scaleSize: Float = 1.2f + + init { + val array: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.ScaleImageView) + setScaleSize(array.getFloat(R.styleable.ScaleImageView_scaleRatio, scaleSize)) + array.recycle() + } + + override fun dispatchSetPressed(pressed: Boolean) { + if (pressed) { + scaleX = scaleSize + scaleY = scaleSize + } else { + scaleX = 1f + scaleY = 1f + } + } + + fun setScaleSize(size: Float) { + scaleSize = size + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SlantedTextView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SlantedTextView.kt new file mode 100644 index 0000000..1c934af --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SlantedTextView.kt @@ -0,0 +1,308 @@ +package com.hjq.widget.view + +import android.content.Context +import android.content.res.TypedArray +import android.graphics.* +import android.text.TextPaint +import android.text.TextUtils +import android.util.AttributeSet +import android.util.TypedValue +import android.view.Gravity +import android.view.View +import androidx.annotation.StringRes +import com.hjq.widget.R +import kotlin.math.max + +@Suppress("RtlHardcoded") +class SlantedTextView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : + View(context, attrs, defStyleAttr) { + + companion object { + + const val ROTATE_ANGLE: Int = 45 + } + + private val backgroundPaint: Paint = Paint() + + private val textPaint: TextPaint + + private var text: String = "" + + private var gravity: Int = 0 + + private var triangle: Boolean = false + + private var colorBackground: Int = 0 + + private val textBounds: Rect = Rect() + + private var textHeight: Int = 0 + + init { + backgroundPaint.style = Paint.Style.FILL + backgroundPaint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OVER) + backgroundPaint.isAntiAlias = true + textPaint = TextPaint(Paint.ANTI_ALIAS_FLAG) + textPaint.isAntiAlias = true + val array: TypedArray = context.obtainStyledAttributes(attrs, R.styleable.SlantedTextView) + setText(array.getString(R.styleable.SlantedTextView_android_text)) + setTextSize(TypedValue.COMPLEX_UNIT_PX, array.getDimensionPixelSize(R.styleable.SlantedTextView_android_textSize, + resources.getDimension(R.dimen.sp_12).toInt()).toFloat()) + setTextColor(array.getColor(R.styleable.SlantedTextView_android_textColor, Color.WHITE)) + setTextStyle(Typeface.defaultFromStyle(array.getInt(R.styleable.SlantedTextView_android_textStyle, Typeface.NORMAL))) + setGravity(array.getInt(R.styleable.SlantedTextView_android_gravity, Gravity.END)) + setColorBackground(array.getColor(R.styleable.SlantedTextView_android_colorBackground, getAccentColor())) + setTriangle(array.getBoolean(R.styleable.SlantedTextView_triangle, false)) + array.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + textPaint.getTextBounds(text, 0, text.length, textBounds) + textHeight = textBounds.height() + paddingTop + paddingBottom + var width = 0 + when (MeasureSpec.getMode(widthMeasureSpec)) { + MeasureSpec.EXACTLY -> width = MeasureSpec.getSize(widthMeasureSpec) + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> width = + textBounds.width() + paddingLeft + paddingRight + } + var height = 0 + when (MeasureSpec.getMode(heightMeasureSpec)) { + MeasureSpec.EXACTLY -> { + height = MeasureSpec.getSize(heightMeasureSpec) + } + MeasureSpec.AT_MOST, MeasureSpec.UNSPECIFIED -> { + height = textBounds.height() + paddingTop + paddingBottom + } + } + setMeasuredDimension(max(width, height), max(width, height)) + } + + override fun onDraw(canvas: Canvas) { + drawBackground(canvas) + drawText(canvas) + } + + private fun drawBackground(canvas: Canvas) { + val path = Path() + val width: Int = canvas.width + val height: Int = canvas.height + when (gravity) { + Gravity.LEFT, Gravity.LEFT or Gravity.TOP -> { + if (triangle) { + path.lineTo(0f, height.toFloat()) + path.lineTo(width.toFloat(), 0f) + } else { + path.moveTo(width.toFloat(), 0f) + path.lineTo(0f, height.toFloat()) + path.lineTo(0f, (height - textHeight).toFloat()) + path.lineTo((width - textHeight).toFloat(), 0f) + } + } + Gravity.NO_GRAVITY, Gravity.RIGHT, Gravity.RIGHT or Gravity.TOP -> { + if (triangle) { + path.lineTo(width.toFloat(), 0f) + path.lineTo(width.toFloat(), height.toFloat()) + } else { + path.lineTo(width.toFloat(), height.toFloat()) + path.lineTo(width.toFloat(), (height - textHeight).toFloat()) + path.lineTo(textHeight * 1f, 0f) + } + } + Gravity.BOTTOM, Gravity.LEFT or Gravity.BOTTOM -> { + if (triangle) { + path.lineTo(width.toFloat(), height.toFloat()) + path.lineTo(0f, height.toFloat()) + } else { + path.lineTo(width.toFloat(), height.toFloat()) + path.lineTo((width - textHeight).toFloat(), height.toFloat()) + path.lineTo(0f, textHeight.toFloat()) + } + } + Gravity.RIGHT or Gravity.BOTTOM -> { + if (triangle) { + path.moveTo(0f, height.toFloat()) + path.lineTo(width.toFloat(), height.toFloat()) + path.lineTo(width.toFloat(), 0f) + } else { + path.moveTo(0f, height.toFloat()) + path.lineTo(textHeight * 1f, height.toFloat()) + path.lineTo(width.toFloat(), textHeight.toFloat()) + path.lineTo(width.toFloat(), 0f) + } + } + else -> { + throw IllegalArgumentException("are you ok?") + } + } + path.close() + canvas.drawPath(path, backgroundPaint) + canvas.save() + } + + private fun drawText(canvas: Canvas) { + val width: Int = canvas.width - textHeight / 2 + val height: Int = canvas.height - textHeight / 2 + val rect: Rect? + val rectF: RectF? + val offset: Int = textHeight / 2 + val toX: Float + val toY: Float + val centerX: Float + val centerY: Float + val angle: Float + when (gravity) { + Gravity.LEFT, Gravity.LEFT or Gravity.TOP -> { + rect = Rect(0, 0, width, height) + rectF = RectF(rect) + rectF.right = textPaint.measureText(text, 0, text.length) + rectF.bottom = textPaint.descent() - textPaint.ascent() + rectF.left += (rect.width() - rectF.right) / 2.0f + rectF.top += (rect.height() - rectF.bottom) / 2.0f + toX = rectF.left + toY = rectF.top - textPaint.ascent() + centerX = width / 2f + centerY = height / 2f + angle = -ROTATE_ANGLE.toFloat() + } + Gravity.NO_GRAVITY, Gravity.RIGHT, Gravity.RIGHT or Gravity.TOP -> { + rect = Rect(offset, 0, width + offset, height) + rectF = RectF(rect) + rectF.right = textPaint.measureText(text, 0, text.length) + rectF.bottom = textPaint.descent() - textPaint.ascent() + rectF.left += (rect.width() - rectF.right) / 2.0f + rectF.top += (rect.height() - rectF.bottom) / 2.0f + toX = rectF.left + toY = rectF.top - textPaint.ascent() + centerX = width / 2f + offset + centerY = height / 2f + angle = ROTATE_ANGLE.toFloat() + } + Gravity.BOTTOM, Gravity.LEFT or Gravity.BOTTOM -> { + rect = Rect(0, offset, width, height + offset) + rectF = RectF(rect) + rectF.right = textPaint.measureText(text, 0, text.length) + rectF.bottom = textPaint.descent() - textPaint.ascent() + rectF.left += (rect.width() - rectF.right) / 2.0f + rectF.top += (rect.height() - rectF.bottom) / 2.0f + toX = rectF.left + toY = rectF.top - textPaint.ascent() + centerX = width / 2f + centerY = height / 2f + offset + angle = ROTATE_ANGLE.toFloat() + } + Gravity.RIGHT or Gravity.BOTTOM -> { + rect = Rect(offset, offset, width + offset, height + offset) + rectF = RectF(rect) + rectF.right = textPaint.measureText(text, 0, text.length) + rectF.bottom = textPaint.descent() - textPaint.ascent() + rectF.left += (rect.width() - rectF.right) / 2.0f + rectF.top += (rect.height() - rectF.bottom) / 2.0f + toX = rectF.left + toY = rectF.top - textPaint.ascent() + centerX = width / 2f + offset + centerY = height / 2f + offset + angle = -ROTATE_ANGLE.toFloat() + } + else -> { + throw IllegalArgumentException("are you ok?") + } + } + canvas.rotate(angle, centerX, centerY) + canvas.drawText(text, toX, toY, textPaint) + } + + fun getText(): String { + return text + } + + fun setText(@StringRes id: Int) { + setText(resources.getString(id)) + } + + fun setText(text: String?) { + val finalText = text ?: "" + if (!TextUtils.equals(finalText, getText())) { + this.text = finalText + invalidate() + } + } + + fun getTextColor(): Int { + return textPaint.color + } + + fun setTextColor(color: Int) { + if (getTextColor() != color) { + textPaint.color = color + invalidate() + } + } + + fun getTextSize(): Float { + return textPaint.textSize + } + + fun setTextSize(size: Float) { + setTextSize(TypedValue.COMPLEX_UNIT_SP, size) + } + + fun setTextSize(unit: Int, size: Float) { + val textSize: Float = TypedValue.applyDimension(unit, size, resources.displayMetrics) + if (getTextSize() != textSize) { + textPaint.textSize = textSize + invalidate() + } + } + + fun getTextStyle(): Typeface? { + return textPaint.typeface + } + + fun setTextStyle(tf: Typeface?) { + if (getTextStyle() !== tf) { + textPaint.typeface = tf + invalidate() + } + } + + fun getColorBackground(): Int { + return colorBackground + } + + fun setColorBackground(color: Int) { + if (getColorBackground() != color) { + colorBackground = color + backgroundPaint.color = colorBackground + invalidate() + } + } + + fun getGravity(): Int { + return gravity + } + + fun setGravity(gravity: Int) { + if (this.gravity != gravity) { + this.gravity = Gravity.getAbsoluteGravity(gravity, resources.configuration.layoutDirection) + invalidate() + } + } + + fun isTriangle(): Boolean { + return triangle + } + + fun setTriangle(triangle: Boolean) { + if (isTriangle() != triangle) { + this.triangle = triangle + invalidate() + } + } + + private fun getAccentColor(): Int { + val typedValue = TypedValue() + context.theme.resolveAttribute(R.attr.colorAccent, typedValue, true) + return typedValue.data + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SmartTextView.kt b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SmartTextView.kt new file mode 100644 index 0000000..a0a4083 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/java/com/hjq/widget/view/SmartTextView.kt @@ -0,0 +1,61 @@ +package com.hjq.widget.view + +import android.content.* +import android.graphics.drawable.Drawable +import android.text.TextUtils +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView + +class SmartTextView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, + defStyleAttr: Int = android.R.attr.textViewStyle) : + AppCompatTextView(context, attrs, defStyleAttr) { + + init { + refreshVisibilityStatus() + } + + override fun setText(text: CharSequence?, type: BufferType?) { + super.setText(text, type) + refreshVisibilityStatus() + } + + override fun setCompoundDrawables(left: Drawable?, top: Drawable?, right: Drawable?, bottom: Drawable?) { + super.setCompoundDrawables(left, top, right, bottom) + refreshVisibilityStatus() + } + + override fun setCompoundDrawablesRelative(start: Drawable?, top: Drawable?, end: Drawable?, bottom: Drawable?) { + super.setCompoundDrawablesRelative(start, top, end, bottom) + refreshVisibilityStatus() + } + + private fun refreshVisibilityStatus() { + if (isEmptyContent() && visibility != GONE) { + visibility = GONE + return + } + if (visibility != VISIBLE) { + visibility = VISIBLE + } + } + + private fun isEmptyContent(): Boolean { + if (!TextUtils.isEmpty(text)) { + return false + } + val compoundDrawables: Array = compoundDrawables + val compoundDrawablesRelative: Array = compoundDrawablesRelative + for (drawable: Drawable? in compoundDrawables) { + if (drawable != null) { + return false + } + } + for (drawable: Drawable? in compoundDrawablesRelative) { + if (drawable != null) { + return false + } + } + return true + } +} \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/input_delete_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/input_delete_ic.xml new file mode 100644 index 0000000..58bebec --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/input_delete_ic.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/password_off_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/password_off_ic.xml new file mode 100644 index 0000000..79e0e79 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/password_off_ic.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/password_on_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/password_on_ic.xml new file mode 100644 index 0000000..2e31b57 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/password_on_ic.xml @@ -0,0 +1,25 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/rating_star_fill_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_fill_ic.xml new file mode 100644 index 0000000..dc397cc --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_fill_ic.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/rating_star_half_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_half_ic.xml new file mode 100644 index 0000000..cc9e1ff --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_half_ic.xml @@ -0,0 +1,66 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/drawable/rating_star_off_ic.xml b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_off_ic.xml new file mode 100644 index 0000000..09e1fad --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/drawable/rating_star_off_ic.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/library/widget/src/main/res/values/attrs.xml b/Android_Mireo/library/widget/src/main/res/values/attrs.xml new file mode 100644 index 0000000..7286715 --- /dev/null +++ b/Android_Mireo/library/widget/src/main/res/values/attrs.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/local.properties b/Android_Mireo/local.properties new file mode 100644 index 0000000..1314146 --- /dev/null +++ b/Android_Mireo/local.properties @@ -0,0 +1,8 @@ +## This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +#Wed Apr 09 08:46:46 CST 2025 +sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk diff --git a/Android_Mireo/maven.gradle b/Android_Mireo/maven.gradle new file mode 100644 index 0000000..e693108 --- /dev/null +++ b/Android_Mireo/maven.gradle @@ -0,0 +1,11 @@ +static def addCommonMaven(RepositoryHandler handler) { + handler.maven { url 'https://maven.aliyun.com/repository/public' } + handler.maven { url 'https://maven.aliyun.com/repository/google' } + handler.maven { url 'https://repo.huaweicloud.com/repository/maven' } + handler.maven { url 'https://jitpack.io' } + handler.mavenCentral() + handler.google() + handler.jcenter() +} + +ext.addCommonMaven = this.&addCommonMaven \ No newline at end of file diff --git a/Android_Mireo/settings.gradle b/Android_Mireo/settings.gradle new file mode 100644 index 0000000..09ee302 --- /dev/null +++ b/Android_Mireo/settings.gradle @@ -0,0 +1,3 @@ +include ':app' +include ':library:base' +include ':library:widget' diff --git a/GiftAgainNew/.idea/.gitignore b/GiftAgainNew/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/GiftAgainNew/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/GiftAgainNew/.idea/GiftAgainNew.iml b/GiftAgainNew/.idea/GiftAgainNew.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/GiftAgainNew/.idea/GiftAgainNew.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/GiftAgainNew/.idea/misc.xml b/GiftAgainNew/.idea/misc.xml new file mode 100644 index 0000000..63c7c6e --- /dev/null +++ b/GiftAgainNew/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/GiftAgainNew/.idea/modules.xml b/GiftAgainNew/.idea/modules.xml new file mode 100644 index 0000000..1ecb9f7 --- /dev/null +++ b/GiftAgainNew/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/GiftAgainNew/.idea/vcs.xml b/GiftAgainNew/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/GiftAgainNew/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file

    oA@y}Gi{A`;2dyIyY>IvPJl58qZz89M(%Vm)5o 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 M6g1>(WzEC>2PUY{4*&oF literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/raw/loading.json b/Android_Mireo/app/src/main/res/raw/loading.json new file mode 100644 index 0000000..925ed2f --- /dev/null +++ b/Android_Mireo/app/src/main/res/raw/loading.json @@ -0,0 +1 @@ +{"v":"5.5.8","fr":50,"ip":0,"op":147,"w":800,"h":600,"nm":"Paperplane","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"planete Outlines - Group 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[50]},{"t":120,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[468.336,323.378,0],"to":[-29,0,0],"ti":[29,0,0]},{"t":102,"s":[294.336,323.378,0]}],"ix":2},"a":{"a":0,"k":[453.672,304.756,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.742,0],[0.741,-0.14],[0,0.074],[13.484,0],[1.669,-0.361],[19.79,0],[3.317,-19.082],[2.691,0],[0,-13.484],[-0.048,-0.629],[2.405,0],[0,-6.742],[-6.742,0],[0,0],[0,6.743]],"o":[[-0.781,0],[0.001,-0.074],[0,-13.484],[-1.778,0],[-3.594,-18.742],[-20.03,0],[-2.421,-0.804],[-13.485,0],[0,0.642],[-1.89,-1.199],[-6.742,0],[0,6.743],[0,0],[6.742,0],[0,-6.742]],"v":[[75.134,16.175],[72.85,16.396],[72.856,16.175],[48.44,-8.241],[43.262,-7.685],[3.406,-40.591],[-36.571,-6.995],[-44.269,-8.241],[-68.685,16.175],[-68.604,18.079],[-75.133,16.175],[-87.341,28.383],[-75.133,40.592],[75.134,40.592],[87.342,28.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.815686334348,0.823529471603,0.827451040231,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.672,304.756],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Merged Shape Layer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.547],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.845],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":77,"s":[35]},{"t":150,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[390.319,298.2,0],"to":[0,-2.583,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[390.319,282.7,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[390.319,319.25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":150,"s":[390.319,298.2,0]}],"ix":2},"a":{"a":0,"k":[664.319,256.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.967,-3.189],[-18.967,19.935],[-0.949,-19.935]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.223528981209,0.192156970501,0.674510002136,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.879,292.737],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[633.939,275.369],"ix":2},"a":{"a":0,"k":[236.879,292.737],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-98.335,64.79],[-105.619,4.984],[105.619,-64.79],[-80.316,24.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278430998325,0.294117987156,0.847059011459,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.247,247.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[673.623,252.941],"ix":2},"a":{"a":0,"k":[316.247,247.882],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 2","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-133.812,-42.171],[133.812,-75.141],[5.765,75.141],[-61.708,18.402],[124.227,-71.307],[-87.011,-1.534]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.365000009537,0.407999992371,0.976000010967,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.638,254.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[664.319,256.2],"ix":2},"a":{"a":0,"k":[297.638,254.4],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 3","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"planete Outlines - Group 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[100]},{"t":150,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[327.38,267.583,0],"to":[25.833,0,0],"ti":[-25.833,0,0]},{"t":150,"s":[482.38,267.583,0]}],"ix":2},"a":{"a":0,"k":[171.76,193.166,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.485,0],[4.38,-4.171],[21.913,0],[3.575,-18.765],[1.851,0],[0,-13.484],[-0.011,-0.291],[1.599,0],[0,-6.743],[-6.742,0],[0,0],[0,13.485]],"o":[[-6.526,0],[-0.793,-21.719],[-19.806,0],[-1.734,-0.391],[-13.485,0],[0,0.293],[-1.4,-0.559],[-6.742,0],[0,6.742],[0,0],[13.485,0],[0,-13.484]],"v":[[59.669,-8.242],[42.84,-1.506],[2.287,-40.592],[-37.576,-7.638],[-42.962,-8.242],[-67.378,16.174],[-67.356,17.049],[-71.878,16.174],[-84.086,28.383],[-71.878,40.591],[59.669,40.591],[84.086,16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.823999980852,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[171.76,193.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[406,306,0],"ix":2},"a":{"a":0,"k":[400,300,0],"ix":1},"s":{"a":0,"k":[179,179,100],"ix":6}},"ao":0,"w":800,"h":600,"ip":0,"op":147,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/raw/progress.json b/Android_Mireo/app/src/main/res/raw/progress.json new file mode 100644 index 0000000..c1ed963 --- /dev/null +++ b/Android_Mireo/app/src/main/res/raw/progress.json @@ -0,0 +1 @@ +{"v":"4.6.9","fr":30,"ip":0,"op":45,"w":200,"h":200,"nm":"Composition 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"LFCalque de forme 2","ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[1],"y":[0]},"n":["0p833_0p833_1_0"],"t":0,"s":[0],"e":[360]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":15,"s":[360],"e":[510]},{"t":34}]},"p":{"a":0,"k":[100,100,0]},"a":{"a":0,"k":[-93.098,-93.098,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.228,0],[0,-55.228],[-55.228,0],[0,55.228]],"o":[[-55.228,0],[0,55.228],[55.228,0],[0,-55.228]],"v":[[0,-100],[-100,0],[0,100],[100,0]],"c":true}},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":23,"s":[100],"e":[42]},{"t":45}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[98],"e":[98]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[98],"e":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[60],"e":[40]},{"t":23}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":2,"nm":"Contour 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[-93.098,-93.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":45,"st":0,"bm":0,"sr":1}],"chars":[],"markers":[]} \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/raw/province.json b/Android_Mireo/app/src/main/res/raw/province.json new file mode 100644 index 0000000..7c0a55b --- /dev/null +++ b/Android_Mireo/app/src/main/res/raw/province.json @@ -0,0 +1,5537 @@ +[ + { + "name": "北京市", + "city": [ + { + "name": "北京市", + "area": [ + "东城区", + "西城区", + "海淀区", + "朝阳区", + "丰台区", + "石景山区", + "门头沟区", + "通州区", + "顺义区", + "房山区", + "大兴区", + "昌平区", + "怀柔区", + "平谷区", + "密云区", + "延庆区" + ] + } + ] + }, + { + "name": "上海市", + "city": [ + { + "name": "上海市", + "area": [ + "黄浦区", + "浦东区", + "徐汇区", + "长宁区", + "静安区", + "普陀区", + "虹口区", + "杨浦区", + "闵行区", + "宝山区", + "嘉定区", + "金山区", + "松江区", + "青浦区", + "奉贤区", + "崇明区" + ] + } + ] + }, + { + "name": "天津市", + "city": [ + { + "name": "天津市", + "area": [ + "和平区", + "河西区", + "南开区", + "河东区", + "河北区", + "红桥区", + "滨海区", + "东丽区", + "西青区", + "津南区", + "北辰区", + "武清区", + "宝坻区", + "宁河区", + "静海区", + "蓟州区" + ] + } + ] + }, + { + "name": "重庆市", + "city": [ + { + "name": "重庆市", + "area": [ + "渝中区", + "大渡口区", + "江北区", + "沙坪坝区", + "九龙坡区", + "南岸区", + "北碚区", + "渝北区", + "巴南区", + "涪陵区", + "綦江区", + "大足区", + "长寿区", + "江津区", + "合川区", + "永川区", + "南川区", + "璧山区", + "铜梁区", + "潼南区", + "荣昌区", + "万州区", + "梁平区", + "城口县", + "丰都县", + "垫江县", + "忠县", + "开州区", + "云阳县", + "奉节县", + "巫山县", + "巫溪县", + "黔江区", + "武隆区", + "石柱土家族自治县", + "秀山土家族苗族自治县", + "酉阳土家族苗族自治县", + "彭水苗族土家族自治县" + ] + } + ] + }, + { + "name": "广东省", + "city": [ + { + "name": "广州市", + "area": [ + "越秀区", + "荔湾区", + "海珠区", + "天河区", + "白云区", + "黄埔区", + "番禺区", + "花都区", + "南沙区", + "增城区", + "从化区" + ] + }, + { + "name": "深圳市", + "area": [ + "福田区", + "罗湖区", + "南山区", + "盐田区", + "宝安区", + "龙岗区", + "坪山区", + "光明区", + "龙华区", + "大鹏区" + ] + }, + { + "name": "东莞市", + "area": [ + "莞城区", + "南城区", + "东城区", + "万江区", + "石碣镇", + "石龙镇", + "茶山镇", + "石排镇", + "企石镇", + "横沥镇", + "桥头镇", + "谢岗镇", + "东坑镇", + "常平镇", + "寮步镇", + "大朗镇", + "麻涌镇", + "中堂镇", + "高埗镇", + "樟木头镇", + "大岭山镇", + "望牛墩镇", + "黄江镇", + "洪梅镇", + "清溪镇", + "沙田镇", + "道滘镇", + "塘厦镇", + "虎门镇", + "厚街镇", + "凤岗镇", + "长安镇" + ] + }, + { + "name": "惠州市", + "area": [ + "惠城区", + "惠阳区", + "惠东县", + "博罗县", + "龙门县" + ] + }, + { + "name": "珠海市", + "area": [ + "香洲区", + "金湾区", + "斗门区" + ] + }, + { + "name": "佛山市", + "area": [ + "禅城区", + "南海区", + "顺德区", + "三水区", + "高明区" + ] + }, + { + "name": "中山市", + "area": [ + "石岐区", + "东区", + "西区", + "南区", + "五桂山区", + "火炬开发区", + "黄圃镇", + "南头镇", + "东凤镇", + "阜沙镇", + "小榄镇", + "东升镇", + "古镇镇", + "横栏镇", + "三角镇", + "民众镇", + "南朗镇", + "港口镇", + "大涌镇", + "沙溪镇", + "三乡镇", + "板芙镇", + "神湾镇", + "坦洲镇" + ] + }, + { + "name": "潮州市", + "area": [ + "湘桥区", + "潮安区", + "饶平县" + ] + }, + { + "name": "揭阳市", + "area": [ + "榕城区", + "揭东县", + "揭西县", + "惠来县", + "普宁市" + ] + }, + { + "name": "汕头市", + "area": [ + "金平区", + "龙湖区", + "澄海区", + "濠江区", + "濠江区", + "潮南区", + "南澳县" + ] + }, + { + "name": "汕尾市", + "area": [ + "城区", + "陆丰市", + "海丰县", + "陆河县" + ] + }, + { + "name": "清远市", + "area": [ + "清城区", + "清新区", + "英德市", + "连州市", + "佛冈县", + "阳山县", + "连南瑶族自治县", + "连山壮族瑶族自治县" + ] + }, + { + "name": "云浮市", + "area": [ + "云城区", + "云安县", + "新兴县", + "郁南县", + "罗定市" + ] + }, + { + "name": "韶关市", + "area": [ + "浈江区", + "武江区", + "曲江区", + "乐昌市", + "南雄市", + "始兴县", + "仁化县", + "翁源县", + "新丰县", + "乳源瑶族自治县" + ] + }, + { + "name": "江门市", + "area": [ + "蓬江区", + "江海区", + "新会区", + "台山市", + "开平市", + "鹤山市", + "恩平市" + ] + }, + { + "name": "湛江市", + "area": [ + "赤坎区", + "霞山区", + "坡头区", + "麻章区", + "吴川市", + "雷州市", + "廉江市", + "遂溪县", + "徐闻县" + ] + }, + { + "name": "茂名市", + "area": [ + "茂南区", + "电白区", + "高州市", + "茂港区", + "化州市", + "信宜市" + ] + }, + { + "name": "肇庆市", + "area": [ + "端州区", + "鼎湖区", + "广宁县", + "怀集县", + "封开县", + "德庆县", + "高要区", + "四会市" + ] + }, + { + "name": "河源市", + "area": [ + "源城区", + "紫金县", + "龙川县", + "连平县", + "和平县", + "东源县" + ] + }, + { + "name": "梅州市", + "area": [ + "梅江区", + "梅县区", + "兴宁市", + "平远县", + "蕉岭县", + "大埔县", + "丰顺县", + "五华县" + ] + }, + { + "name": "阳江市", + "area": [ + "江城区", + "阳春市", + "阳东区", + "阳西县", + "海陵岛经济开发试验区", + "阳江高新技术产业开发区" + ] + } + ] + }, + { + "name": "江苏省", + "city": [ + { + "name": "南京市", + "area": [ + "玄武区", + "秦淮区", + "鼓楼区", + "建邺区", + "雨花台区", + "浦口区", + "六合区", + "栖霞区", + "江宁区", + "溧水区", + "高淳县" + ] + }, + { + "name": "无锡市", + "area": [ + "梁溪区", + "滨湖区", + "惠山区", + "锡山区", + "新吴区", + "江阴市", + "宜兴市" + ] + }, + { + "name": "苏州市", + "area": [ + "姑苏区", + "相城区", + "吴中区", + "虎丘区", + "吴江区", + "常熟市", + "昆山市", + "张家港市", + "太仓市" + ] + }, + { + "name": "常州市", + "area": [ + "金坛区", + "武进区", + "新北区", + "天宁区", + "钟楼区", + "溧阳市" + ] + }, + { + "name": "镇江市", + "area": [ + "京口区", + "润州区", + "丹徒区", + "镇江区", + "镇江高新区" + ] + }, + { + "name": "南通市", + "area": [ + "崇川区", + "港闸区", + "通州区", + "海安县", + "如东县", + "启东市", + "如皋市", + "海门市" + ] + }, + { + "name": "泰州市", + "area": [ + "海陵区", + "高港区", + "姜堰市", + "兴化市", + "泰兴市", + "靖江市" + ] + }, + { + "name": "扬州市", + "area": [ + "广陵区", + "邗江区", + "江都区", + "开发区", + "宝应县", + "仪征市", + "高邮市" + ] + }, + { + "name": "盐城市", + "area": [ + "亭湖区", + "盐都区", + "大丰区", + "建湖县", + "射阳县", + "阜宁县", + "滨海县", + "响水县", + "东台市" + ] + }, + { + "name": "连云港市", + "area": [ + "海州区", + "连云区", + "赣榆区", + "灌云县", + "东海县", + "灌南县" + ] + }, + { + "name": "徐州市", + "area": [ + "云龙区", + "鼓楼区", + "贾汪区", + "泉山区", + "铜山区", + "邳州市", + "新沂市", + "睢宁县", + "沛县", + "丰县" + ] + }, + { + "name": "淮安市", + "area": [ + "清江浦区", + "淮阴区", + "淮安区", + "洪泽区", + "涟水县", + "盱眙县", + "金湖县" + ] + }, + { + "name": "宿迁市", + "area": [ + "宿城区", + "宿豫区", + "沭阳县", + "泗阳县", + "泗洪县", + "洋河区", + "湖滨区", + "苏宿工业园区", + "经济开发区" + ] + } + ] + }, + { + "name": "山东省", + "city": [ + { + "name": "济南市", + "area": [ + "历下区", + "市中区", + "槐荫区", + "天桥区", + "历城区", + "长清区", + "章丘区", + "济阳区", + "莱芜区", + "钢城区", + "平阴县", + "商河县", + "高新技术产业开发区" + ] + }, + { + "name": "青岛市", + "area": [ + "市南区", + "市北区", + "黄岛区", + "崂山区", + "李沧区", + "城阳区", + "胶州市", + "即墨区", + "平度市", + "莱西市" + ] + }, + { + "name": "淄博市", + "area": [ + "张店区", + "淄川区", + "博山区", + "临淄区", + "桓台县", + "高青县", + "沂源县" + ] + }, + { + "name": "枣庄市", + "area": [ + "市中区", + "山亭区", + "台儿庄区", + "峄城区", + "薛城区", + "滕州市" + ] + }, + { + "name": "东营市", + "area": [ + "东营区", + "河口区", + "垦利区", + "利津县", + "广饶县" + ] + }, + { + "name": "烟台市", + "area": [ + "芝罘区", + "福山区", + "牟平区", + "莱山区", + "龙口市", + "莱阳市", + "莱州市", + "蓬莱区", + "招远市", + "栖霞市", + "海阳市", + "烟台经济技术开发区", + "烟台高新技术产业开发区" + ] + }, + { + "name": "潍坊市", + "area": [ + "潍城区", + "寒亭区", + "坊子区", + "奎文区", + "临朐县", + "昌乐县", + "青州市", + "诸城市", + "寿光市", + "安丘市", + "高密市", + "昌邑市" + ] + }, + { + "name": "济宁市", + "area": [ + "任城区", + "兖州区", + "微山县", + "鱼台县", + "金乡县", + "嘉祥县", + "汶上县", + "泗水县", + "梁山县", + "曲阜市", + "邹城市" + ] + }, + { + "name": "泰安市", + "area": [ + "泰山区", + "岱岳区", + "新泰市", + "肥城市", + "宁阳县", + "东平县" + ] + }, + { + "name": "威海市", + "area": [ + "环翠区", + "文登区", + "荣成市", + "乳山市", + "南海区", + "经济技术开发区", + "火炬高技术产业开发区", + "进出口加工保税区", + "临港经济技术开发区" + ] + }, + { + "name": "日照市", + "area": [ + "东港区", + "岚山区", + "五莲县", + "莒县" + ] + }, + { + "name": "莱芜市", + "area": [ + "莱城区", + "钢城区" + ] + }, + { + "name": "临沂市", + "area": [ + "兰山区", + "罗庄区", + "河东区", + "郯城县", + "兰陵县", + "莒南县", + "沂水县", + "蒙阴县", + "平邑县", + "费县", + "沂南县", + "临沭县" + ] + }, + { + "name": "德州市", + "area": [ + "德城区", + "陵城区", + "宁津县", + "庆云县", + "临邑县", + "齐河县", + "平原县", + "夏津县", + "武城县", + "乐陵市", + "禹城市" + ] + }, + { + "name": "聊城市", + "area": [ + "东昌府区", + "茌平区", + "临清市", + "东阿县", + "冠县", + "高唐县", + "阳谷县", + "莘县" + ] + }, + { + "name": "滨州市", + "area": [ + "滨城区", + "沾化区", + "惠民县", + "阳信县", + "无棣县", + "博兴县", + "邹平市" + ] + }, + { + "name": "菏泽市", + "area": [ + "牡丹区", + "定陶县", + "巨野县", + "曹县", + "成武县", + "单县", + "郓城县", + "鄄城县", + "东明县" + ] + } + ] + }, + { + "name": "浙江省", + "city": [ + { + "name": "杭州市", + "area": [ + "上城区", + "下城区", + "江干区", + "拱墅区", + "西湖区", + "滨江区", + "萧山区", + "余杭区", + "富阳区", + "临安区", + "桐庐县", + "淳安县", + "建德市" + ] + }, + { + "name": "宁波市", + "area": [ + "海曙区", + "江北区", + "北仑区", + "镇海区", + "鄞州区", + "奉化市", + "余姚市", + "慈溪市", + "象山县", + "宁海县" + ] + }, + { + "name": "温州市", + "area": [ + "鹿城区", + "龙湾区", + "瓯海区", + "洞头区", + "永嘉县", + "平阳县", + "苍南县", + "文成县", + "泰顺县", + "瑞安市", + "乐清市", + "龙港市" + ] + }, + { + "name": "嘉兴市", + "area": [ + "南湖区", + "秀洲区", + "嘉善县", + "海盐县", + "海宁市", + "平湖市", + "桐乡市" + ] + }, + { + "name": "湖州市", + "area": [ + "吴兴区", + "南浔区", + "德清县", + "长兴县", + "安吉县" + ] + }, + { + "name": "绍兴市", + "area": [ + "越城区", + "柯桥区", + "上虞区", + "新昌县", + "嵊州市", + "诸暨市" + ] + }, + { + "name": "金华市", + "area": [ + "婺城区", + "金东区", + "兰溪市", + "义乌市", + "东阳市", + "永康市", + "浦江县", + "武义县", + "磐安县" + ] + }, + { + "name": "衢州市", + "area": [ + "柯城区", + "衢江区", + "龙游县", + "江山市", + "常山县", + "开化县" + ] + }, + { + "name": "舟山市", + "area": [ + "定海区", + "普陀区", + "岱山县", + "嵊泗县" + ] + }, + { + "name": "台州市", + "area": [ + "椒江区", + "黄岩区", + "路桥区", + "临海市", + "温岭市", + "玉环市", + "天台县", + "仙居县", + "三门县" + ] + }, + { + "name": "丽水市", + "area": [ + "莲都区", + "龙泉市", + "青田县", + "云和县", + "庆元县", + "缙云县", + "遂昌县", + "松阳县", + "景宁畲族自治县" + ] + } + ] + }, + { + "name": "河南省", + "city": [ + { + "name": "郑州市", + "area": [ + "中原区", + "二七区", + "管城回族区", + "金水区", + "上街区", + "惠济区", + "中牟县", + "巩义市", + "荥阳市", + "新密市", + "新郑市", + "登封市" + ] + }, + { + "name": "开封市", + "area": [ + "龙亭区", + "顺河回族区", + "鼓楼区", + "禹王台区", + "祥符区", + "杞县", + "通许县", + "尉氏县", + "兰考县" + ] + }, + { + "name": "洛阳市", + "area": [ + "老城区", + "西工区", + "瀍河回族区", + "涧西区", + "吉利区", + "洛龙区", + "孟津县", + "新安县", + "栾川县", + "嵩县", + "汝阳县", + "宜阳县", + "洛宁县", + "伊川县", + "偃师市" + ] + }, + { + "name": "平顶山市", + "area": [ + "新华区", + "卫东区", + "石龙区", + "湛河区", + "宝丰县", + "叶县", + "鲁山县", + "郏县", + "舞钢市", + "汝州市" + ] + }, + { + "name": "安阳市", + "area": [ + "文峰区", + "北关区", + "殷都区", + "龙安区", + "安阳县", + "汤阴县", + "滑县", + "内黄县", + "林州市" + ] + }, + { + "name": "鹤壁市", + "area": [ + "鹤山区", + "山城区", + "淇滨区", + "浚县", + "淇县" + ] + }, + { + "name": "新乡市", + "area": [ + "红旗区", + "卫滨区", + "凤泉区", + "牧野区", + "新乡县", + "获嘉县", + "原阳县", + "延津县", + "封丘县", + "卫辉市", + "辉县市", + "长垣市" + ] + }, + { + "name": "焦作市", + "area": [ + "解放区", + "中站区", + "马村区", + "山阳区", + "修武县", + "博爱县", + "武陟县", + "温县", + "沁阳市", + "孟州市" + ] + }, + { + "name": "濮阳市", + "area": [ + "华龙区", + "清丰县", + "南乐县", + "范县", + "台前县", + "濮阳县" + ] + }, + { + "name": "许昌市", + "area": [ + "魏都区", + "建安区", + "鄢陵县", + "襄城县", + "禹州市", + "长葛市" + ] + }, + { + "name": "漯河市", + "area": [ + "源汇区", + "郾城区", + "召陵区", + "舞阳县", + "临颍县" + ] + }, + { + "name": "三门峡市", + "area": [ + "湖滨区", + "陕州区", + "渑池县", + "卢氏县", + "义马市", + "灵宝市" + ] + }, + { + "name": "南阳市", + "area": [ + "宛城区", + "卧龙区", + "南召县", + "方城县", + "西峡县", + "镇平县", + "内乡县", + "淅川县", + "社旗县", + "唐河县", + "新野县", + "桐柏县", + "邓州市" + ] + }, + { + "name": "商丘市", + "area": [ + "梁园区", + "睢阳区", + "民权县", + "睢县", + "宁陵县", + "柘城县", + "虞城县", + "夏邑县", + "永城市" + ] + }, + { + "name": "信阳市", + "area": [ + "浉河区", + "平桥区", + "罗山县", + "光山县", + "新县", + "商城县", + "固始县", + "潢川县", + "淮滨县", + "息县" + ] + }, + { + "name": "周口市", + "area": [ + "川汇区", + "扶沟县", + "淮阳区", + "西华县", + "商水县", + "沈丘县", + "郸城县", + "太康县", + "鹿邑县", + "项城市" + ] + }, + { + "name": "驻马店市", + "area": [ + "驿城区", + "西平县", + "上蔡县", + "平舆县", + "正阳县", + "确山县", + "泌阳县", + "汝南县", + "遂平县", + "新蔡县" + ] + }, + { + "name": "济源市", + "area": [ + "济水街道", + "沁园街道", + "北海街道", + "天坛街道", + "玉泉街道", + "克井镇", + "五龙口镇", + "梨林镇", + "轵城镇", + "承留镇", + "坡头镇", + "大峪镇", + "邵原镇", + "思礼镇", + "王屋镇", + "下冶镇" + ] + } + ] + }, + { + "name": "四川省", + "city": [ + { + "name": "成都市", + "area": [ + "锦江区", + "青羊区", + "金牛区", + "武侯区", + "成华区", + "龙泉驿区", + "青白江区", + "新都区", + "温江区", + "双流区", + "郫都区", + "新津区", + "金堂县", + "大邑县", + "蒲江县", + "都江堰市", + "彭州市", + "邛崃市", + "崇州市", + "简阳市", + "天府区" + ] + }, + { + "name": "自贡市", + "area": [ + "自流井区", + "贡井区", + "大安区", + "沿滩区", + "荣县", + "富顺县" + ] + }, + { + "name": "攀枝花市", + "area": [ + "东区", + "西区", + "仁和区", + "米易县", + "盐边县" + ] + }, + { + "name": "泸州市", + "area": [ + "江阳区", + "纳溪区", + "龙马潭区", + "泸县", + "合江县", + "叙永县", + "古蔺县" + ] + }, + { + "name": "德阳市", + "area": [ + "旌阳区", + "罗江区", + "中江县", + "广汉市", + "什邡市", + "绵竹市" + ] + }, + { + "name": "绵阳市", + "area": [ + "涪城区", + "游仙区", + "安州区", + "三台县", + "盐亭县", + "梓潼县", + "北川羌族自治县", + "平武县", + "江油市" + ] + }, + { + "name": "广元市", + "area": [ + "利州区", + "昭化区", + "朝天区", + "旺苍县", + "青川县", + "剑阁县", + "苍溪县" + ] + }, + { + "name": "遂宁市", + "area": [ + "船山区", + "安居区", + "蓬溪县", + "大英县", + "射洪市" + ] + }, + { + "name": "内江市", + "area": [ + "市中区", + "东兴区", + "威远县", + "资中县", + "隆昌市" + ] + }, + { + "name": "乐山市", + "area": [ + "市中区", + "沙湾区", + "五通桥区", + "金口河区", + "犍为县", + "井研县", + "夹江县", + "沐川县", + "峨边彝族自治县", + "马边彝族自治县", + "峨眉山市" + ] + }, + { + "name": "南充市", + "area": [ + "顺庆区", + "高坪区", + "嘉陵区", + "南部县", + "营山县", + "蓬安县", + "仪陇县", + "西充县", + "阆中市" + ] + }, + { + "name": "眉山市", + "area": [ + "东坡区", + "彭山区", + "仁寿县", + "洪雅县", + "丹棱县", + "青神县" + ] + }, + { + "name": "宜宾市", + "area": [ + "翠屏区", + "南溪区", + "叙州区", + "江安县", + "长宁县", + "高县", + "珙县", + "筠连县", + "兴文县", + "屏山县" + ] + }, + { + "name": "广安市", + "area": [ + "广安区", + "前锋区", + "岳池县", + "武胜县", + "邻水县", + "华蓥市" + ] + }, + { + "name": "达州市", + "area": [ + "通川区", + "达川区", + "宣汉县", + "开江县", + "大竹县", + "渠县", + "万源市" + ] + }, + { + "name": "雅安市", + "area": [ + "雨城区", + "名山区", + "荥经县", + "汉源县", + "石棉县", + "天全县", + "芦山县", + "宝兴县" + ] + }, + { + "name": "巴中市", + "area": [ + "巴州区", + "恩阳区", + "通江县", + "南江县", + "平昌县" + ] + }, + { + "name": "资阳市", + "area": [ + "雁江区", + "安岳县", + "乐至县" + ] + }, + { + "name": "阿坝藏族羌族自治州", + "area": [ + "马尔康市", + "汶川县", + "理县", + "茂县", + "松潘县", + "九寨沟县", + "金川县", + "小金县", + "黑水县", + "壤塘县", + "阿坝县", + "若尔盖县", + "红原县" + ] + }, + { + "name": "甘孜藏族自治州", + "area": [ + "康定市", + "泸定县", + "丹巴县", + "九龙县", + "雅江县", + "道孚县", + "炉霍县", + "甘孜县", + "新龙县", + "德格县", + "白玉县", + "石渠县", + "色达县", + "理塘县", + "巴塘县", + "乡城县", + "稻城县", + "得荣县" + ] + }, + { + "name": "凉山彝族自治州", + "area": [ + "西昌市", + "木里藏族自治县", + "盐源县", + "德昌县", + "会理县", + "会东县", + "宁南县", + "普格县", + "布拖县", + "金阳县", + "昭觉县", + "喜德县", + "冕宁县", + "越西县", + "甘洛县", + "美姑县", + "雷波县" + ] + } + ] + }, + { + "name": "湖北省", + "city": [ + { + "name": "武汉市", + "area": [ + "江岸区", + "江汉区", + "硚口区", + "汉阳区", + "武昌区", + "青山区", + "洪山区", + "东西湖区", + "汉南区", + "蔡甸区", + "江夏区", + "黄陂区", + "新洲区" + ] + }, + { + "name": "黄石市", + "area": [ + "黄石港区", + "西塞山区", + "下陆区", + "铁山区", + "阳新县", + "大冶市" + ] + }, + { + "name": "十堰市", + "area": [ + "茅箭区", + "张湾区", + "郧阳区", + "郧西县", + "竹山县", + "竹溪县", + "房县", + "丹江口市" + ] + }, + { + "name": "宜昌市", + "area": [ + "西陵区", + "伍家岗区", + "点军区", + "猇亭区", + "夷陵区", + "远安县", + "兴山县", + "秭归县", + "长阳土家族自治县", + "五峰土家族自治县", + "宜都市", + "当阳市", + "枝江市" + ] + }, + { + "name": "襄阳市", + "area": [ + "襄城区", + "樊城区", + "襄州区", + "南漳县", + "谷城县", + "保康县", + "老河口市", + "枣阳市", + "宜城市" + ] + }, + { + "name": "鄂州市", + "area": [ + "梁子湖区", + "华容区", + "鄂城区" + ] + }, + { + "name": "荆门市", + "area": [ + "东宝区", + "掇刀区", + "沙洋县", + "钟祥市", + "京山市" + ] + }, + { + "name": "孝感市", + "area": [ + "孝南区", + "孝昌县", + "大悟县", + "云梦县", + "应城市", + "安陆市", + "汉川市" + ] + }, + { + "name": "荆州市", + "area": [ + "沙市区", + "荆州区", + "公安县", + "监利县", + "江陵县", + "石首市", + "洪湖市", + "松滋市" + ] + }, + { + "name": "黄冈市", + "area": [ + "黄州区", + "团风县", + "红安县", + "罗田县", + "英山县", + "浠水县", + "蕲春县", + "黄梅县", + "麻城市", + "武穴市" + ] + }, + { + "name": "咸宁市", + "area": [ + "咸安区", + "嘉鱼县", + "通城县", + "崇阳县", + "通山县", + "赤壁市" + ] + }, + { + "name": "随州市", + "area": [ + "曾都区", + "随县", + "广水市" + ] + }, + { + "name": "恩施土家族苗族自治州", + "area": [ + "恩施市", + "利川市", + "建始县", + "巴东县", + "宣恩县", + "咸丰县", + "来凤县", + "鹤峰县" + ] + }, + { + "name": "仙桃市", + "area": [ + "干河街道", + "龙华山街道", + "沙嘴街道", + "郑场镇", + "毛嘴镇", + "剅河镇", + "三伏潭镇", + "胡场镇", + "长埫口镇", + "西流河镇", + "彭场镇", + "沙湖镇", + "杨林尾镇", + "张沟镇", + "郭河镇", + "沔城回族镇", + "通海口镇", + "陈场镇", + "仙桃经济开发区", + "仙桃工业园", + "沙湖原种场", + "九合垸原种场", + "排湖风景区" + ] + }, + { + "name": "潜江市", + "area": [ + "园林办事处", + "广华办事处", + "杨市办事处", + "周矶办事处", + "泰丰办事处", + "高场办事处", + "熊口镇", + "高石碑镇", + "老新镇", + "王场镇", + "渔洋镇", + "龙湾镇", + "浩口镇", + "积玉口镇", + "张金镇", + "白鹭湖管理区", + "总口管理区", + "熊口农场管理区", + "运粮湖管理区", + "后湖管理区", + "周矶管理区", + "竹根滩镇" + ] + }, + { + "name": "天门市", + "area": [ + "竟陵街道", + "候口街道", + "杨林街道", + "多宝镇", + "拖市镇", + "张港镇", + "蒋场镇", + "汪场镇", + "渔薪镇", + "黄潭镇", + "岳口镇", + "横林镇", + "彭市镇", + "麻洋镇", + "多祥镇", + "干驿镇", + "马湾镇", + "卢市镇", + "小板镇", + "九真镇", + "皂市镇", + "胡市镇", + "石家河镇", + "佛子山镇", + "净潭乡" + ] + }, + { + "name": "神农架林区", + "area": [ + "松柏镇", + "阳日镇", + "木鱼镇", + "红坪镇", + "新华镇", + "大九湖镇", + "宋洛乡", + "下谷坪土家族乡" + ] + } + ] + }, + { + "name": "湖南省", + "city": [ + { + "name": "长沙市", + "area": [ + "芙蓉区", + "天心区", + "岳麓区", + "开福区", + "雨花区", + "望城区", + "长沙县", + "浏阳市", + "宁乡市" + ] + }, + { + "name": "株洲市", + "area": [ + "荷塘区", + "芦淞区", + "石峰区", + "天元区", + "渌口区", + "攸县", + "茶陵县", + "炎陵县", + "醴陵市", + "云龙示范区" + ] + }, + { + "name": "湘潭市", + "area": [ + "雨湖区", + "岳塘区", + "湘潭县", + "湘乡市", + "韶山市" + ] + }, + { + "name": "衡阳市", + "area": [ + "珠晖区", + "雁峰区", + "石鼓区", + "蒸湘区", + "南岳区", + "衡阳县", + "衡南县", + "衡山县", + "衡东县", + "祁东县", + "耒阳市", + "常宁市" + ] + }, + { + "name": "邵阳市", + "area": [ + "双清区", + "大祥区", + "北塔区", + "新邵县", + "邵阳县", + "隆回县", + "洞口县", + "绥宁县", + "新宁县", + "城步苗族自治县", + "武冈市", + "邵东市" + ] + }, + { + "name": "岳阳市", + "area": [ + "岳阳楼区", + "云溪区", + "君山区", + "岳阳县", + "华容县", + "湘阴县", + "平江县", + "汨罗市", + "临湘市" + ] + }, + { + "name": "常德市", + "area": [ + "武陵区", + "鼎城区", + "安乡县", + "汉寿县", + "澧县", + "临澧县", + "桃源县", + "石门县", + "津市市" + ] + }, + { + "name": "张家界市", + "area": [ + "永定区", + "武陵源区", + "慈利县", + "桑植县" + ] + }, + { + "name": "益阳市", + "area": [ + "资阳区", + "赫山区", + "南县", + "桃江县", + "安化县", + "沅江市" + ] + }, + { + "name": "郴州市", + "area": [ + "北湖区", + "苏仙区", + "桂阳县", + "宜章县", + "永兴县", + "嘉禾县", + "临武县", + "汝城县", + "桂东县", + "安仁县", + "资兴市" + ] + }, + { + "name": "永州市", + "area": [ + "零陵区", + "冷水滩区", + "祁阳县", + "东安县", + "双牌县", + "道县", + "江永县", + "宁远县", + "蓝山县", + "新田县", + "江华瑶族自治县" + ] + }, + { + "name": "怀化市", + "area": [ + "鹤城区", + "中方县", + "沅陵县", + "辰溪县", + "溆浦县", + "会同县", + "麻阳苗族自治县", + "新晃侗族自治县", + "芷江侗族自治县", + "靖州苗族侗族自治县", + "通道侗族自治县", + "洪江市" + ] + }, + { + "name": "娄底市", + "area": [ + "娄星区", + "双峰县", + "新化县", + "冷水江市", + "涟源市" + ] + }, + { + "name": "湘西土家族苗族自治州", + "area": [ + "吉首市", + "泸溪县", + "凤凰县", + "花垣县", + "保靖县", + "古丈县", + "永顺县", + "龙山县" + ] + } + ] + }, + { + "name": "河北省", + "city": [ + { + "name": "石家庄市", + "area": [ + "长安区", + "桥西区", + "新华区", + "井陉矿区", + "裕华区", + "藁城区", + "鹿泉区", + "栾城区", + "井陉县", + "正定县", + "行唐县", + "灵寿县", + "高邑县", + "深泽县", + "赞皇县", + "无极县", + "平山县", + "元氏县", + "赵县", + "辛集市", + "晋州市", + "新乐市" + ] + }, + { + "name": "唐山市", + "area": [ + "路南区", + "路北区", + "古冶区", + "开平区", + "丰南区", + "丰润区", + "曹妃甸区", + "滦州市", + "滦南县", + "乐亭县", + "迁西县", + "玉田县", + "遵化市", + "迁安市" + ] + }, + { + "name": "秦皇岛市", + "area": [ + "海港区", + "山海关区", + "北戴河区", + "抚宁区", + "青龙满族自治县", + "昌黎县", + "卢龙县" + ] + }, + { + "name": "邯郸市", + "area": [ + "邯山区", + "丛台区", + "复兴区", + "峰峰矿区", + "肥乡区", + "永年区", + "临漳县", + "成安县", + "大名县", + "涉县", + "磁县", + "邱县", + "鸡泽县", + "广平县", + "馆陶县", + "魏县", + "曲周县", + "武安市" + ] + }, + { + "name": "邢台市", + "area": [ + "襄都区", + "信都区", + "任泽区", + "南和区", + "临城县", + "内丘县", + "柏乡县", + "隆尧县", + "宁晋县", + "巨鹿县", + "新河县", + "广宗县", + "平乡县", + "威县", + "清河县", + "临西县", + "南宫市", + "沙河市" + ] + }, + { + "name": "保定市", + "area": [ + "竞秀区", + "莲池区", + "满城区", + "清苑区", + "徐水区", + "涞水县", + "阜平县", + "定兴县", + "唐县", + "高阳县", + "容城县", + "涞源县", + "望都县", + "安新县", + "易县", + "曲阳县", + "蠡县", + "顺平县", + "博野县", + "雄县", + "涿州市", + "定州市", + "安国市", + "高碑店市" + ] + }, + { + "name": "张家口市", + "area": [ + "桥东区", + "桥西区", + "宣化区", + "下花园区", + "万全区", + "崇礼区", + "张北县", + "康保县", + "沽源县", + "尚义县", + "蔚县", + "阳原县", + "怀安县", + "怀来县", + "涿鹿县", + "赤城县" + ] + }, + { + "name": "承德市", + "area": [ + "双桥区", + "双滦区", + "鹰手营子矿区", + "承德县", + "兴隆县", + "滦平县", + "隆化县", + "丰宁满族自治县", + "宽城满族自治县", + "围场满族蒙古族自治县", + "平泉市" + ] + }, + { + "name": "沧州市", + "area": [ + "新华区", + "运河区", + "沧县", + "青县", + "东光县", + "海兴县", + "盐山县", + "肃宁县", + "南皮县", + "吴桥县", + "献县", + "孟村回族自治县", + "泊头市", + "任丘市", + "黄骅市", + "河间市" + ] + }, + { + "name": "廊坊市", + "area": [ + "安次区", + "广阳区", + "固安县", + "永清县", + "香河县", + "大城县", + "文安县", + "大厂回族自治县", + "霸州市", + "三河市" + ] + }, + { + "name": "衡水市", + "area": [ + "桃城区", + "冀州区", + "枣强县", + "武邑县", + "武强县", + "饶阳县", + "安平县", + "故城县", + "景县", + "阜城县", + "深州市" + ] + } + ] + }, + { + "name": "福建省", + "city": [ + { + "name": "福州市", + "area": [ + "鼓楼区", + "台江区", + "仓山区", + "马尾区", + "晋安区", + "长乐区", + "闽侯县", + "连江县", + "罗源县", + "闽清县", + "永泰县", + "平潭县", + "福清市", + "高新技术产业开发区" + ] + }, + { + "name": "厦门市", + "area": [ + "思明区", + "海沧区", + "湖里区", + "集美区", + "同安区", + "翔安区" + ] + }, + { + "name": "莆田市", + "area": [ + "城厢区", + "涵江区", + "荔城区", + "秀屿区", + "仙游县" + ] + }, + { + "name": "三明市", + "area": [ + "梅列区", + "三元区", + "明溪县", + "清流县", + "宁化县", + "大田县", + "尤溪县", + "沙县", + "将乐县", + "泰宁县", + "建宁县", + "永安市" + ] + }, + { + "name": "泉州市", + "area": [ + "鲤城区", + "丰泽区", + "洛江区", + "泉港区", + "惠安县", + "安溪县", + "永春县", + "德化县", + "金门县", + "石狮市", + "晋江市", + "南安市" + ] + }, + { + "name": "漳州市", + "area": [ + "芗城区", + "龙文区", + "云霄县", + "漳浦县", + "诏安县", + "长泰县", + "东山县", + "南靖县", + "平和县", + "华安县", + "龙海市" + ] + }, + { + "name": "南平市", + "area": [ + "延平区", + "建阳区", + "顺昌县", + "浦城县", + "光泽县", + "松溪县", + "政和县", + "邵武市", + "武夷山市", + "建瓯市" + ] + }, + { + "name": "龙岩市", + "area": [ + "新罗区", + "永定区", + "长汀县", + "上杭县", + "武平县", + "连城县", + "漳平市" + ] + }, + { + "name": "宁德市", + "area": [ + "蕉城区", + "霞浦县", + "古田县", + "屏南县", + "寿宁县", + "周宁县", + "柘荣县", + "福安市", + "福鼎市" + ] + } + ] + }, + { + "name": "安徽省", + "city": [ + { + "name": "合肥市", + "area": [ + "瑶海区", + "庐阳区", + "蜀山区", + "包河区", + "长丰县", + "肥东县", + "肥西县", + "庐江县", + "巢湖市" + ] + }, + { + "name": "芜湖市", + "area": [ + "镜湖区", + "弋江区", + "鸠江区", + "三山区", + "芜湖县", + "繁昌县", + "南陵县", + "无为市" + ] + }, + { + "name": "蚌埠市", + "area": [ + "龙子湖区", + "蚌山区", + "禹会区", + "淮上区", + "怀远县", + "五河县", + "固镇县" + ] + }, + { + "name": "淮南市", + "area": [ + "大通区", + "田家庵区", + "谢家集区", + "八公山区", + "潘集区", + "凤台县", + "寿县" + ] + }, + { + "name": "马鞍山市", + "area": [ + "花山区", + "雨山区", + "博望区", + "当涂县", + "含山县", + "和县" + ] + }, + { + "name": "淮北市", + "area": [ + "杜集区", + "相山区", + "烈山区", + "濉溪县" + ] + }, + { + "name": "铜陵市", + "area": [ + "铜官区", + "义安区", + "郊区", + "枞阳县" + ] + }, + { + "name": "安庆市", + "area": [ + "迎江区", + "大观区", + "宜秀区", + "怀宁县", + "太湖县", + "宿松县", + "望江县", + "岳西县", + "桐城市", + "潜山市" + ] + }, + { + "name": "黄山市", + "area": [ + "屯溪区", + "黄山区", + "徽州区", + "歙县", + "休宁县", + "黟县", + "祁门县" + ] + }, + { + "name": "滁州市", + "area": [ + "琅琊区", + "南谯区", + "来安县", + "全椒县", + "定远县", + "凤阳县", + "天长市", + "明光市" + ] + }, + { + "name": "阜阳市", + "area": [ + "颍州区", + "颍东区", + "颍泉区", + "临泉县", + "太和县", + "阜南县", + "颍上县", + "界首市" + ] + }, + { + "name": "宿州市", + "area": [ + "埇桥区", + "砀山县", + "萧县", + "灵璧县", + "泗县" + ] + }, + { + "name": "六安市", + "area": [ + "金安区", + "裕安区", + "叶集区", + "霍邱县", + "舒城县", + "金寨县", + "霍山县" + ] + }, + { + "name": "亳州市", + "area": [ + "谯城区", + "涡阳县", + "蒙城县", + "利辛县" + ] + }, + { + "name": "池州市", + "area": [ + "贵池区", + "东至县", + "石台县", + "青阳县" + ] + }, + { + "name": "宣城市", + "area": [ + "宣州区", + "郎溪县", + "泾县", + "绩溪县", + "旌德县", + "宁国市", + "广德市" + ] + } + ] + }, + { + "name": "辽宁省", + "city": [ + { + "name": "沈阳市", + "area": [ + "和平区", + "沈河区", + "大东区", + "皇姑区", + "铁西区", + "苏家屯区", + "浑南区", + "沈北区", + "于洪区", + "辽中区", + "康平县", + "法库县", + "新民市" + ] + }, + { + "name": "大连市", + "area": [ + "中山区", + "西岗区", + "沙河口区", + "甘井子区", + "旅顺口区", + "金州区", + "普兰店区", + "长海县", + "瓦房店市", + "庄河市" + ] + }, + { + "name": "鞍山市", + "area": [ + "铁东区", + "铁西区", + "立山区", + "千山区", + "台安县", + "岫岩满族自治县", + "海城市" + ] + }, + { + "name": "抚顺市", + "area": [ + "新抚区", + "东洲区", + "望花区", + "顺城区", + "抚顺县", + "新宾满族自治县", + "清原满族自治县" + ] + }, + { + "name": "本溪市", + "area": [ + "平山区", + "溪湖区", + "明山区", + "南芬区", + "本溪满族自治县", + "桓仁满族自治县" + ] + }, + { + "name": "丹东市", + "area": [ + "元宝区", + "振兴区", + "振安区", + "宽甸满族自治县", + "东港市", + "凤城市" + ] + }, + { + "name": "锦州市", + "area": [ + "古塔区", + "凌河区", + "太和区", + "黑山县", + "义县", + "凌海市", + "北镇市" + ] + }, + { + "name": "营口市", + "area": [ + "站前区", + "西市区", + "鲅鱼圈区", + "老边区", + "盖州市", + "大石桥市" + ] + }, + { + "name": "阜新市", + "area": [ + "海州区", + "新邱区", + "太平区", + "清河门区", + "细河区", + "阜新蒙古族自治县", + "彰武县" + ] + }, + { + "name": "辽阳市", + "area": [ + "白塔区", + "文圣区", + "宏伟区", + "弓长岭区", + "太子河区", + "辽阳县", + "灯塔市" + ] + }, + { + "name": "盘锦市", + "area": [ + "双台子区", + "兴隆台区", + "大洼区", + "盘山县" + ] + }, + { + "name": "铁岭市", + "area": [ + "银州区", + "清河区", + "铁岭县", + "西丰县", + "昌图县", + "调兵山市", + "开原市" + ] + }, + { + "name": "朝阳市", + "area": [ + "双塔区", + "龙城区", + "朝阳县", + "建平县", + "喀喇沁左翼蒙古族自治县", + "北票市", + "凌源市" + ] + }, + { + "name": "葫芦岛市", + "area": [ + "连山区", + "龙港区", + "南票区", + "绥中县", + "建昌县", + "兴城市" + ] + } + ] + }, + { + "name": "陕西省", + "city": [ + { + "name": "西安市", + "area": [ + "新城区", + "碑林区", + "莲湖区", + "灞桥区", + "未央区", + "雁塔区", + "阎良区", + "临潼区", + "长安区", + "高陵区", + "鄠邑区", + "蓝田县", + "周至县", + "西咸区" + ] + }, + { + "name": "铜川市", + "area": [ + "王益区", + "印台区", + "耀州区", + "宜君县" + ] + }, + { + "name": "宝鸡市", + "area": [ + "渭滨区", + "金台区", + "陈仓区", + "凤翔县", + "岐山县", + "扶风县", + "眉县", + "陇县", + "千阳县", + "麟游县", + "凤县", + "太白县" + ] + }, + { + "name": "咸阳市", + "area": [ + "秦都区", + "杨陵区", + "渭城区", + "三原县", + "泾阳县", + "乾县", + "礼泉县", + "永寿县", + "长武县", + "旬邑县", + "淳化县", + "武功县", + "兴平市", + "彬州市" + ] + }, + { + "name": "渭南市", + "area": [ + "临渭区", + "华州区", + "潼关县", + "大荔县", + "合阳县", + "澄城县", + "蒲城县", + "白水县", + "富平县", + "韩城市", + "华阴市" + ] + }, + { + "name": "延安市", + "area": [ + "宝塔区", + "安塞区", + "延长县", + "延川县", + "志丹县", + "吴起县", + "甘泉县", + "富县", + "洛川县", + "宜川县", + "黄龙县", + "黄陵县", + "子长市" + ] + }, + { + "name": "汉中市", + "area": [ + "汉台区", + "南郑区", + "城固县", + "洋县", + "西乡县", + "勉县", + "宁强县", + "略阳县", + "镇巴县", + "留坝县", + "佛坪县" + ] + }, + { + "name": "榆林市", + "area": [ + "榆阳区", + "横山区", + "府谷县", + "靖边县", + "定边县", + "绥德县", + "米脂县", + "佳县", + "吴堡县", + "清涧县", + "子洲县", + "神木市" + ] + }, + { + "name": "安康市", + "area": [ + "汉滨区", + "汉阴县", + "石泉县", + "宁陕县", + "紫阳县", + "岚皋县", + "平利县", + "镇坪县", + "旬阳县", + "白河县" + ] + }, + { + "name": "商洛市", + "area": [ + "商州区", + "洛南县", + "丹凤县", + "商南县", + "山阳县", + "镇安县", + "柞水县" + ] + } + ] + }, + { + "name": "江西省", + "city": [ + { + "name": "南昌市", + "area": [ + "东湖区", + "西湖区", + "青云谱区", + "青山湖区", + "新建区", + "红谷滩区", + "南昌县", + "安义县", + "进贤县" + ] + }, + { + "name": "景德镇市", + "area": [ + "昌江区", + "珠山区", + "浮梁县", + "乐平市" + ] + }, + { + "name": "萍乡市", + "area": [ + "安源区", + "湘东区", + "莲花县", + "上栗县", + "芦溪县" + ] + }, + { + "name": "九江市", + "area": [ + "濂溪区", + "浔阳区", + "柴桑区", + "武宁县", + "修水县", + "永修县", + "德安县", + "都昌县", + "湖口县", + "彭泽县", + "瑞昌市", + "共青城市", + "庐山市" + ] + }, + { + "name": "新余市", + "area": [ + "渝水区", + "分宜县" + ] + }, + { + "name": "鹰潭市", + "area": [ + "月湖区", + "余江区", + "贵溪市" + ] + }, + { + "name": "赣州市", + "area": [ + "章贡区", + "南康区", + "赣县区", + "信丰县", + "大余县", + "上犹县", + "崇义县", + "安远县", + "定南县", + "全南县", + "宁都县", + "于都县", + "兴国县", + "会昌县", + "寻乌县", + "石城县", + "瑞金市", + "龙南市" + ] + }, + { + "name": "吉安市", + "area": [ + "吉州区", + "青原区", + "吉安县", + "吉水县", + "峡江县", + "新干县", + "永丰县", + "泰和县", + "遂川县", + "万安县", + "安福县", + "永新县", + "井冈山市" + ] + }, + { + "name": "宜春市", + "area": [ + "袁州区", + "奉新县", + "万载县", + "上高县", + "宜丰县", + "靖安县", + "铜鼓县", + "丰城市", + "樟树市", + "高安市" + ] + }, + { + "name": "抚州市", + "area": [ + "临川区", + "东乡区", + "南城县", + "黎川县", + "南丰县", + "崇仁县", + "乐安县", + "宜黄县", + "金溪县", + "资溪县", + "广昌县" + ] + }, + { + "name": "上饶市", + "area": [ + "信州区", + "广丰区", + "广信区", + "玉山县", + "铅山县", + "横峰县", + "弋阳县", + "余干县", + "鄱阳县", + "万年县", + "婺源县", + "德兴市" + ] + } + ] + }, + { + "name": "云南省", + "city": [ + { + "name": "昆明市", + "area": [ + "五华区", + "盘龙区", + "官渡区", + "西山区", + "东川区", + "呈贡区", + "晋宁区", + "富民县", + "宜良县", + "石林彝族自治县", + "嵩明县", + "禄劝彝族苗族自治县", + "寻甸回族彝族自治县", + "安宁市" + ] + }, + { + "name": "曲靖市", + "area": [ + "麒麟区", + "沾益区", + "马龙区", + "陆良县", + "师宗县", + "罗平县", + "富源县", + "会泽县", + "宣威市" + ] + }, + { + "name": "玉溪市", + "area": [ + "红塔区", + "江川区", + "通海县", + "华宁县", + "易门县", + "峨山彝族自治县", + "新平彝族傣族自治县", + "元江哈尼族彝族傣族自治县", + "澄江市" + ] + }, + { + "name": "保山市", + "area": [ + "隆阳区", + "施甸县", + "龙陵县", + "昌宁县", + "腾冲市" + ] + }, + { + "name": "昭通市", + "area": [ + "昭阳区", + "鲁甸县", + "巧家县", + "盐津县", + "大关县", + "永善县", + "绥江县", + "镇雄县", + "彝良县", + "威信县", + "水富市" + ] + }, + { + "name": "丽江市", + "area": [ + "古城区", + "玉龙纳西族自治县", + "永胜县", + "华坪县", + "宁蒗彝族自治县" + ] + }, + { + "name": "普洱市", + "area": [ + "思茅区", + "宁洱哈尼族彝族自治县", + "墨江哈尼族自治县", + "景东彝族自治县", + "景谷傣族彝族自治县", + "镇沅彝族哈尼族拉祜族自治县", + "江城哈尼族彝族自治县", + "孟连傣族拉祜族佤族自治县", + "澜沧拉祜族自治县", + "西盟佤族自治县" + ] + }, + { + "name": "临沧市", + "area": [ + "临翔区", + "凤庆县", + "云县", + "永德县", + "镇康县", + "双江拉祜族佤族布朗族傣族自治县", + "耿马傣族佤族自治县", + "沧源佤族自治县" + ] + }, + { + "name": "楚雄彝族自治州", + "area": [ + "楚雄市", + "双柏县", + "牟定县", + "南华县", + "姚安县", + "大姚县", + "永仁县", + "元谋县", + "武定县", + "禄丰县" + ] + }, + { + "name": "红河哈尼族彝族自治州", + "area": [ + "个旧市", + "开远市", + "蒙自市", + "弥勒市", + "屏边苗族自治县", + "建水县", + "石屏县", + "泸西县", + "元阳县", + "红河县", + "金平苗族瑶族傣族自治县", + "绿春县", + "河口瑶族自治县" + ] + }, + { + "name": "文山壮族苗族自治州", + "area": [ + "文山市", + "砚山县", + "西畴县", + "麻栗坡县", + "马关县", + "丘北县", + "广南县", + "富宁县" + ] + }, + { + "name": "西双版纳傣族自治州", + "area": [ + "景洪市", + "勐海县", + "勐腊县" + ] + }, + { + "name": "大理白族自治州", + "area": [ + "大理市", + "漾濞彝族自治县", + "祥云县", + "宾川县", + "弥渡县", + "南涧彝族自治县", + "巍山彝族回族自治县", + "永平县", + "云龙县", + "洱源县", + "剑川县", + "鹤庆县" + ] + }, + { + "name": "德宏傣族景颇族自治州", + "area": [ + "瑞丽市", + "芒市", + "梁河县", + "盈江县", + "陇川县" + ] + }, + { + "name": "怒江傈僳族自治州", + "area": [ + "泸水市", + "福贡县", + "贡山独龙族怒族自治县", + "兰坪白族普米族自治县" + ] + }, + { + "name": "迪庆藏族自治州", + "area": [ + "香格里拉市", + "德钦县", + "维西傈僳族自治县" + ] + } + ] + }, + { + "name": "山西省", + "city": [ + { + "name": "太原市", + "area": [ + "小店区", + "迎泽区", + "杏花岭区", + "尖草坪区", + "万柏林区", + "晋源区", + "清徐县", + "阳曲县", + "娄烦县", + "古交市" + ] + }, + { + "name": "大同市", + "area": [ + "新荣区", + "平城区", + "云冈区", + "云州区", + "阳高县", + "天镇县", + "广灵县", + "灵丘县", + "浑源县", + "左云县" + ] + }, + { + "name": "阳泉市", + "area": [ + "城区", + "矿区", + "郊区", + "平定县", + "盂县" + ] + }, + { + "name": "长治市", + "area": [ + "潞州区", + "上党区", + "屯留区", + "潞城区", + "襄垣县", + "平顺县", + "黎城县", + "壶关县", + "长子县", + "武乡县", + "沁县", + "沁源县" + ] + }, + { + "name": "晋城市", + "area": [ + "城区", + "沁水县", + "阳城县", + "陵川县", + "泽州县", + "高平市" + ] + }, + { + "name": "朔州市", + "area": [ + "朔城区", + "平鲁区", + "山阴县", + "应县", + "右玉县", + "怀仁市" + ] + }, + { + "name": "晋中市", + "area": [ + "榆次区", + "太谷区", + "榆社县", + "左权县", + "和顺县", + "昔阳县", + "寿阳县", + "祁县", + "平遥县", + "灵石县", + "介休市" + ] + }, + { + "name": "运城市", + "area": [ + "盐湖区", + "临猗县", + "万荣县", + "闻喜县", + "稷山县", + "新绛县", + "绛县", + "垣曲县", + "夏县", + "平陆县", + "芮城县", + "永济市", + "河津市" + ] + }, + { + "name": "忻州市", + "area": [ + "忻府区", + "定襄县", + "五台县", + "代县", + "繁峙县", + "宁武县", + "静乐县", + "神池县", + "五寨县", + "岢岚县", + "河曲县", + "保德县", + "偏关县", + "原平市" + ] + }, + { + "name": "临汾市", + "area": [ + "尧都区", + "曲沃县", + "翼城县", + "襄汾县", + "洪洞县", + "古县", + "安泽县", + "浮山县", + "吉县", + "乡宁县", + "大宁县", + "隰县", + "永和县", + "蒲县", + "汾西县", + "侯马市", + "霍州市" + ] + }, + { + "name": "吕梁市", + "area": [ + "离石区", + "文水县", + "交城县", + "兴县", + "临县", + "柳林县", + "石楼县", + "岚县", + "方山县", + "中阳县", + "交口县", + "孝义市", + "汾阳市" + ] + } + ] + }, + { + "name": "吉林省", + "city": [ + { + "name": "长春市", + "area": [ + "南关区", + "宽城区", + "朝阳区", + "二道区", + "绿园区", + "双阳区", + "九台区", + "农安县", + "榆树市", + "德惠市", + "公主岭市", + "长德区", + "北湖区", + "空港区", + "北区", + "南区", + "高新区", + "汽开区", + "净月区", + "莲花山旅游度假区" + ] + }, + { + "name": "吉林市", + "area": [ + "昌邑区", + "龙潭区", + "船营区", + "丰满区", + "永吉县", + "蛟河市", + "桦甸市", + "舒兰市", + "磐石市" + ] + }, + { + "name": "四平市", + "area": [ + "铁西区", + "铁东区", + "梨树县", + "伊通满族自治县", + "双辽市" + ] + }, + { + "name": "辽源市", + "area": [ + "龙山区", + "西安区", + "东丰县", + "东辽县" + ] + }, + { + "name": "通化市", + "area": [ + "东昌区", + "二道江区", + "通化县", + "辉南县", + "柳河县", + "梅河口市", + "集安市" + ] + }, + { + "name": "白山市", + "area": [ + "浑江区", + "江源区", + "抚松县", + "靖宇县", + "长白朝鲜族自治县", + "临江市" + ] + }, + { + "name": "松原市", + "area": [ + "宁江区", + "前郭尔罗斯蒙古族自治县", + "长岭县", + "乾安县", + "扶余市" + ] + }, + { + "name": "白城市", + "area": [ + "洮北区", + "镇赉县", + "通榆县", + "洮南市", + "大安市" + ] + }, + { + "name": "延边朝鲜族自治州", + "area": [ + "延吉市", + "图们市", + "敦化市", + "珲春市", + "龙井市", + "和龙市", + "汪清县", + "安图县" + ] + } + ] + }, + { + "name": "贵州省", + "city": [ + { + "name": "贵阳市", + "area": [ + "南明区", + "云岩区", + "花溪区", + "乌当区", + "白云区", + "观山湖区", + "开阳县", + "息烽县", + "修文县", + "清镇市" + ] + }, + { + "name": "六盘水市", + "area": [ + "钟山区", + "六枝特区", + "水城县", + "盘州市" + ] + }, + { + "name": "遵义市", + "area": [ + "红花岗区", + "汇川区", + "播州区", + "桐梓县", + "绥阳县", + "正安县", + "道真仡佬族苗族自治县", + "务川仡佬族苗族自治县", + "凤冈县", + "湄潭县", + "余庆县", + "习水县", + "赤水市", + "仁怀市" + ] + }, + { + "name": "安顺市", + "area": [ + "西秀区", + "平坝区", + "普定县", + "镇宁布依族苗族自治县", + "关岭布依族苗族自治县", + "紫云苗族布依族自治县" + ] + }, + { + "name": "毕节市", + "area": [ + "七星关区", + "大方县", + "黔西县", + "金沙县", + "织金县", + "纳雍县", + "威宁彝族回族苗族自治县", + "赫章县" + ] + }, + { + "name": "铜仁市", + "area": [ + "碧江区", + "万山区", + "江口县", + "玉屏侗族自治县", + "石阡县", + "思南县", + "印江土家族苗族自治县", + "德江县", + "沿河土家族自治县", + "松桃苗族自治县" + ] + }, + { + "name": "黔西南布依族苗族自治州", + "area": [ + "兴义市", + "兴仁市", + "普安县", + "晴隆县", + "贞丰县", + "望谟县", + "册亨县", + "安龙县" + ] + }, + { + "name": "黔东南苗族侗族自治州", + "area": [ + "凯里市", + "黄平县", + "施秉县", + "三穗县", + "镇远县", + "岑巩县", + "天柱县", + "锦屏县", + "剑河县", + "台江县", + "黎平县", + "榕江县", + "从江县", + "雷山县", + "麻江县", + "丹寨县" + ] + }, + { + "name": "黔南布依族苗族自治州", + "area": [ + "都匀市", + "福泉市", + "荔波县", + "贵定县", + "瓮安县", + "独山县", + "平塘县", + "罗甸县", + "长顺县", + "龙里县", + "惠水县", + "三都水族自治县" + ] + } + ] + }, + { + "name": "甘肃省", + "city": [ + { + "name": "兰州市", + "area": [ + "城关区", + "七里河区", + "西固区", + "安宁区", + "红古区", + "永登县", + "皋兰县", + "榆中县" + ] + }, + { + "name": "嘉峪关市", + "area": [ + "胜利街道", + "五一街道", + "矿山街道", + "新华街道", + "建设街道", + "前进街道", + "峪苑街道", + "朝阳街道", + "峪泉镇", + "文殊镇", + "新城镇", + "雄关区", + "长城区", + "镜铁区" + ] + }, + { + "name": "金昌市", + "area": [ + "金川区", + "永昌县" + ] + }, + { + "name": "白银市", + "area": [ + "白银区", + "平川区", + "靖远县", + "会宁县", + "景泰县" + ] + }, + { + "name": "天水市", + "area": [ + "秦州区", + "麦积区", + "清水县", + "秦安县", + "甘谷县", + "武山县", + "张家川回族自治县" + ] + }, + { + "name": "武威市", + "area": [ + "凉州区", + "民勤县", + "古浪县", + "天祝藏族自治县" + ] + }, + { + "name": "张掖市", + "area": [ + "甘州区", + "肃南裕固族自治县", + "民乐县", + "临泽县", + "高台县", + "山丹县" + ] + }, + { + "name": "平凉市", + "area": [ + "崆峒区", + "泾川县", + "灵台县", + "崇信县", + "庄浪县", + "静宁县", + "华亭市" + ] + }, + { + "name": "酒泉市", + "area": [ + "肃州区", + "金塔县", + "瓜州县", + "肃北蒙古族自治县", + "阿克塞哈萨克族自治县", + "玉门市", + "敦煌市" + ] + }, + { + "name": "庆阳市", + "area": [ + "西峰区", + "庆城县", + "环县", + "华池县", + "合水县", + "正宁县", + "宁县", + "镇原县" + ] + }, + { + "name": "定西市", + "area": [ + "安定区", + "通渭县", + "陇西县", + "渭源县", + "临洮县", + "漳县", + "岷县" + ] + }, + { + "name": "陇南市", + "area": [ + "武都区", + "成县", + "文县", + "宕昌县", + "康县", + "西和县", + "礼县", + "徽县", + "两当县" + ] + }, + { + "name": "临夏回族自治州", + "area": [ + "临夏市", + "临夏县", + "康乐县", + "永靖县", + "广河县", + "和政县", + "东乡族自治县", + "积石山保安族东乡族撒拉族自治县" + ] + }, + { + "name": "甘南藏族自治州", + "area": [ + "合作市", + "临潭县", + "卓尼县", + "舟曲县", + "迭部县", + "玛曲县", + "碌曲县", + "夏河县" + ] + } + ] + }, + { + "name": "海南省", + "city": [ + { + "name": "海口市", + "area": [ + "秀英区", + "龙华区", + "琼山区", + "美兰区" + ] + }, + { + "name": "三亚市", + "area": [ + "海棠区", + "吉阳区", + "天涯区", + "崖州区" + ] + }, + { + "name": "三沙市", + "area": [ + "西沙群岛", + "中沙群岛", + "南沙群岛" + ] + }, + { + "name": "儋州市", + "area": [ + "那大镇", + "和庆镇", + "南丰镇", + "大成镇", + "雅星镇", + "兰洋镇", + "光村镇", + "木棠镇", + "海头镇", + "峨蔓镇", + "王五镇", + "白马井镇", + "中和镇", + "排浦镇", + "东成镇", + "新州镇", + "国营八一总场", + "国营蓝洋农场", + "国营西联农场", + "国营西培农场" + ] + }, + { + "name": "五指山市", + "area": [ + "通什镇", + "南圣镇", + "毛阳镇", + "番阳镇", + "畅好乡", + "毛道乡", + "水满乡" + ] + }, + { + "name": "琼海市", + "area": [ + "嘉积镇", + "博鳌镇", + "万泉镇", + "潭门镇", + "长坡镇", + "塔洋镇", + "大路镇", + "中原镇", + "阳江镇", + "龙江镇", + "石壁镇", + "会山镇" + ] + }, + { + "name": "文昌市", + "area": [ + "文城镇", + "重兴镇", + "蓬莱镇", + "会文镇", + "东路镇", + "潭牛镇", + "东阁镇", + "文教镇", + "东郊镇", + "龙楼镇", + "昌洒镇", + "翁田镇", + "抱罗镇", + "冯坡镇", + "锦山镇", + "铺前镇", + "公坡镇" + ] + }, + { + "name": "万宁市", + "area": [ + "万城镇", + "龙滚镇", + "和乐镇", + "后安镇", + "大茂镇", + "东澳镇", + "礼纪镇", + "长丰镇", + "山根镇", + "北大镇", + "南桥镇", + "三更罗镇", + "兴隆华侨农场", + "地方国营六连林场" + ] + }, + { + "name": "东方市", + "area": [ + "八所镇", + "东河镇", + "大田镇", + "感城镇", + "板桥镇", + "三家镇", + "四更镇", + "新龙镇", + "天安乡", + "江边乡" + ] + }, + { + "name": "定安县", + "area": [ + "定城镇", + "新竹镇", + "龙湖镇", + "黄竹镇", + "雷鸣镇", + "龙门镇", + "龙河镇", + "岭口镇", + "翰林镇", + "富文镇" + ] + }, + { + "name": "屯昌县", + "area": [ + "屯城镇", + "新兴镇", + "枫木镇", + "乌坡镇", + "南吕镇", + "南坤镇", + "坡心镇", + "西昌镇" + ] + }, + { + "name": "澄迈县", + "area": [ + "金江镇", + "瑞溪镇", + "永发镇", + "老城镇", + "加乐镇", + "文儒镇", + "福山镇", + "桥头镇", + "中兴镇", + "仁兴镇", + "大丰镇", + "金安农场", + "红光农场", + "西达农场", + "澄迈林场", + "海南老城经济开发区", + "海口综合保税区", + "马村中心港区" + ] + }, + { + "name": "临高县", + "area": [ + "临城镇", + "东英镇", + "波莲镇", + "调楼镇", + "新盈镇", + "南宝镇", + "和舍镇", + "多文镇", + "博厚镇", + "皇桐镇", + "加来农场", + "金牌港经济开发区", + "临高角旅游度假开发区" + ] + }, + { + "name": "白沙黎族自治县", + "area": [ + "牙叉镇", + "七坊镇", + "邦溪镇", + "打安镇", + "细水乡", + "元门乡", + "南开乡", + "阜龙乡", + "青松乡", + "金波乡", + "荣邦乡" + ] + }, + { + "name": "昌江黎族自治县", + "area": [ + "石碌镇", + "叉河镇", + "十月田镇", + "乌烈镇", + "昌化镇", + "海尾镇", + "七叉镇", + "王下乡" + ] + }, + { + "name": "乐东黎族自治县", + "area": [ + "抱由镇", + "万冲镇", + "大安镇", + "志仲镇", + "千家镇", + "九所镇", + "利国镇", + "黄流镇", + "佛罗镇", + "尖峰镇", + "莺歌海镇" + ] + }, + { + "name": "陵水黎族自治县", + "area": [ + "椰林镇", + "新村镇", + "英州镇", + "本号镇", + "光坡镇", + "三才镇", + "黎安镇", + "隆广镇", + "文罗镇", + "提蒙乡", + "群英乡" + ] + }, + { + "name": "保亭黎族苗族自治县", + "area": [ + "保城镇", + "什玲镇", + "加茂镇", + "响水镇", + "新政镇", + "三道镇", + "六弓乡", + "南林乡", + "毛感乡" + ] + }, + { + "name": "琼中黎族苗族自治县", + "area": [ + "营根镇", + "湾岭镇", + "黎母山镇", + "红毛镇", + "长征镇", + "中平镇", + "和平镇", + "什运乡", + "上安乡", + "吊罗山乡", + "阳江农场", + "大丰农场", + "新进农场", + "乌石农场", + "岭头农场", + "南方农场", + "新伟农场", + "加钗农场", + "长征农场", + "乘坡农场", + "太平农场" + ] + } + ] + }, + { + "name": "青海省", + "city": [ + { + "name": "西宁市", + "area": [ + "城东区", + "城中区", + "城西区", + "城北区", + "湟中区", + "大通回族土族自治县", + "湟源县" + ] + }, + { + "name": "海东市", + "area": [ + "乐都区", + "平安区", + "民和回族土族自治县", + "互助土族自治县", + "化隆回族自治县", + "循化撒拉族自治县" + ] + }, + { + "name": "海北藏族自治州", + "area": [ + "门源回族自治县", + "祁连县", + "海晏县", + "刚察县" + ] + }, + { + "name": "黄南藏族自治州", + "area": [ + "同仁市", + "尖扎县", + "泽库县", + "河南蒙古族自治县" + ] + }, + { + "name": "海南藏族自治州", + "area": [ + "共和县", + "同德县", + "贵德县", + "兴海县", + "贵南县" + ] + }, + { + "name": "果洛藏族自治州", + "area": [ + "玛沁县", + "班玛县", + "甘德县", + "达日县", + "久治县", + "玛多县" + ] + }, + { + "name": "玉树藏族自治州", + "area": [ + "玉树市", + "杂多县", + "称多县", + "治多县", + "囊谦县", + "曲麻莱县" + ] + }, + { + "name": "海西蒙古族藏族自治州", + "area": [ + "格尔木市", + "德令哈市", + "茫崖市", + "乌兰县", + "都兰县", + "天峻县" + ] + } + ] + }, + { + "name": "黑龙江省", + "city": [ + { + "name": "哈尔滨市", + "area": [ + "道里区", + "南岗区", + "道外区", + "平房区", + "松北区", + "香坊区", + "呼兰区", + "阿城区", + "双城区", + "依兰县", + "方正县", + "宾县", + "巴彦县", + "木兰县", + "通河县", + "延寿县", + "尚志市", + "五常市" + ] + }, + { + "name": "齐齐哈尔市", + "area": [ + "龙沙区", + "建华区", + "铁锋区", + "昂昂溪区", + "富拉尔基区", + "碾子山区", + "梅里斯达斡尔族区", + "龙江县", + "依安县", + "泰来县", + "甘南县", + "富裕县", + "克山县", + "克东县", + "拜泉县", + "讷河市" + ] + }, + { + "name": "鸡西市", + "area": [ + "鸡冠区", + "恒山区", + "滴道区", + "梨树区", + "城子河区", + "麻山区", + "鸡东县", + "虎林市", + "密山市" + ] + }, + { + "name": "鹤岗市", + "area": [ + "向阳区", + "工农区", + "南山区", + "兴安区", + "东山区", + "兴山区", + "萝北县", + "绥滨县" + ] + }, + { + "name": "双鸭山市", + "area": [ + "尖山区", + "岭东区", + "四方台区", + "宝山区", + "集贤县", + "友谊县", + "宝清县", + "饶河县" + ] + }, + { + "name": "大庆市", + "area": [ + "萨尔图区", + "龙凤区", + "让胡路区", + "红岗区", + "大同区", + "肇州县", + "肇源县", + "林甸县", + "杜尔伯特蒙古族自治县" + ] + }, + { + "name": "伊春市", + "area": [ + "伊美区", + "乌翠区", + "友好区", + "嘉荫县", + "汤旺县", + "丰林县", + "大箐山县", + "南岔县", + "金林区", + "铁力市" + ] + }, + { + "name": "佳木斯市", + "area": [ + "向阳区", + "前进区", + "东风区", + "郊区", + "桦南县", + "桦川县", + "汤原县", + "同江市", + "富锦市", + "抚远市" + ] + }, + { + "name": "七台河市", + "area": [ + "新兴区", + "桃山区", + "茄子河区", + "勃利县" + ] + }, + { + "name": "牡丹江市", + "area": [ + "东安区", + "阳明区", + "爱民区", + "西安区", + "林口县", + "绥芬河市", + "海林市", + "宁安市", + "穆棱市", + "东宁市" + ] + }, + { + "name": "黑河市", + "area": [ + "爱辉区", + "逊克县", + "孙吴县", + "北安市", + "五大连池市", + "嫩江市" + ] + }, + { + "name": "绥化市", + "area": [ + "北林区", + "望奎县", + "兰西县", + "青冈县", + "庆安县", + "明水县", + "绥棱县", + "安达市", + "肇东市", + "海伦市" + ] + }, + { + "name": "大兴安岭地区", + "area": [ + "漠河市", + "呼玛县", + "塔河县" + ] + } + ] + }, + { + "name": "西藏自治区", + "city": [ + { + "name": "拉萨市", + "area": [ + "城关区", + "堆龙德庆区", + "达孜区", + "林周县", + "当雄县", + "尼木县", + "曲水县", + "墨竹工卡县" + ] + }, + { + "name": "日喀则市", + "area": [ + "桑珠孜区", + "南木林县", + "江孜县", + "定日县", + "萨迦县", + "拉孜县", + "昂仁县", + "谢通门县", + "白朗县", + "仁布县", + "康马县", + "定结县", + "仲巴县", + "亚东县", + "吉隆县", + "聂拉木县", + "萨嘎县", + "岗巴县" + ] + }, + { + "name": "昌都市", + "area": [ + "卡若区", + "江达县", + "贡觉县", + "类乌齐县", + "丁青县", + "察雅县", + "八宿县", + "左贡县", + "芒康县", + "洛隆县", + "边坝县" + ] + }, + { + "name": "林芝市", + "area": [ + "巴宜区", + "工布江达县", + "米林县", + "墨脱县", + "波密县", + "察隅县", + "朗县" + ] + }, + { + "name": "山南市", + "area": [ + "乃东区", + "扎囊县", + "贡嘎县", + "桑日县", + "琼结县", + "曲松县", + "措美县", + "洛扎县", + "加查县", + "隆子县", + "错那县", + "浪卡子县" + ] + }, + { + "name": "那曲市", + "area": [ + "色尼区", + "嘉黎县", + "比如县", + "聂荣县", + "安多县", + "申扎县", + "索县", + "班戈县", + "巴青县", + "尼玛县", + "双湖县" + ] + }, + { + "name": "阿里地区", + "area": [ + "普兰县", + "札达县", + "噶尔县", + "日土县", + "革吉县", + "改则县", + "措勤县" + ] + } + ] + }, + { + "name": "内蒙古自治区", + "city": [ + { + "name": "呼和浩特市", + "area": [ + "新城区", + "回民区", + "玉泉区", + "赛罕区", + "土默特左旗", + "托克托县", + "和林格尔县", + "清水河县", + "武川县" + ] + }, + { + "name": "包头市", + "area": [ + "东河区", + "昆都仑区", + "青山区", + "石拐区", + "白云鄂博矿区", + "九原区", + "土默特右旗", + "固阳县", + "达尔罕茂明安联合旗" + ] + }, + { + "name": "乌海市", + "area": [ + "海勃湾区", + "海南区", + "乌达区" + ] + }, + { + "name": "赤峰市", + "area": [ + "红山区", + "元宝山区", + "松山区", + "阿鲁科尔沁旗", + "巴林左旗", + "巴林右旗", + "林西县", + "克什克腾旗", + "翁牛特旗", + "喀喇沁旗", + "宁城县", + "敖汉旗", + "新城区" + ] + }, + { + "name": "通辽市", + "area": [ + "科尔沁区", + "科尔沁左翼中旗", + "科尔沁左翼后旗", + "开鲁县", + "库伦旗", + "奈曼旗", + "扎鲁特旗", + "霍林郭勒市" + ] + }, + { + "name": "鄂尔多斯市", + "area": [ + "东胜区", + "康巴什区", + "达拉特旗", + "准格尔旗", + "鄂托克前旗", + "鄂托克旗", + "杭锦旗", + "乌审旗", + "伊金霍洛旗" + ] + }, + { + "name": "呼伦贝尔市", + "area": [ + "海拉尔区", + "扎赉诺尔区", + "阿荣旗", + "莫力达瓦达斡尔族自治旗", + "鄂伦春自治旗", + "鄂温克族自治旗", + "陈巴尔虎旗", + "新巴尔虎左旗", + "新巴尔虎右旗", + "满洲里市", + "牙克石市", + "扎兰屯市", + "额尔古纳市", + "根河市" + ] + }, + { + "name": "巴彦淖尔市", + "area": [ + "临河区", + "五原县", + "磴口县", + "乌拉特前旗", + "乌拉特中旗", + "乌拉特后旗", + "杭锦后旗" + ] + }, + { + "name": "乌兰察布市", + "area": [ + "集宁区", + "卓资县", + "化德县", + "商都县", + "兴和县", + "凉城县", + "察哈尔右翼前旗", + "察哈尔右翼中旗", + "察哈尔右翼后旗", + "四子王旗", + "丰镇市" + ] + }, + { + "name": "兴安盟", + "area": [ + "乌兰浩特市", + "阿尔山市", + "科尔沁右翼前旗", + "科尔沁右翼中旗", + "扎赉特旗", + "突泉县" + ] + }, + { + "name": "锡林郭勒盟", + "area": [ + "二连浩特市", + "锡林浩特市", + "阿巴嘎旗", + "苏尼特左旗", + "苏尼特右旗", + "东乌珠穆沁旗", + "西乌珠穆沁旗", + "太仆寺旗", + "镶黄旗", + "正镶白旗", + "正蓝旗", + "多伦县" + ] + }, + { + "name": "阿拉善盟", + "area": [ + "阿拉善左旗", + "阿拉善右旗", + "额济纳旗" + ] + } + ] + }, + { + "name": "广西壮族自治区", + "city": [ + { + "name": "南宁市", + "area": [ + "兴宁区", + "青秀区", + "江南区", + "西乡塘区", + "良庆区", + "邕宁区", + "武鸣区", + "隆安县", + "马山县", + "上林县", + "宾阳县", + "横县" + ] + }, + { + "name": "柳州市", + "area": [ + "城中区", + "鱼峰区", + "柳南区", + "柳北区", + "柳江区", + "柳城县", + "鹿寨县", + "融安县", + "融水苗族自治县", + "三江侗族自治县" + ] + }, + { + "name": "桂林市", + "area": [ + "秀峰区", + "叠彩区", + "象山区", + "七星区", + "雁山区", + "临桂区", + "阳朔县", + "灵川县", + "全州县", + "兴安县", + "永福县", + "灌阳县", + "龙胜各族自治县", + "资源县", + "平乐县", + "荔浦市", + "恭城瑶族自治县" + ] + }, + { + "name": "梧州市", + "area": [ + "万秀区", + "长洲区", + "龙圩区", + "苍梧县", + "藤县", + "蒙山县", + "岑溪市" + ] + }, + { + "name": "北海市", + "area": [ + "海城区", + "银海区", + "铁山港区", + "合浦县" + ] + }, + { + "name": "防城港市", + "area": [ + "港口区", + "防城区", + "上思县", + "东兴市" + ] + }, + { + "name": "钦州市", + "area": [ + "钦南区", + "钦北区", + "灵山县", + "浦北县" + ] + }, + { + "name": "贵港市", + "area": [ + "港北区", + "港南区", + "覃塘区", + "平南县", + "桂平市" + ] + }, + { + "name": "玉林市", + "area": [ + "玉州区", + "福绵区", + "容县", + "陆川县", + "博白县", + "兴业县", + "北流市" + ] + }, + { + "name": "百色市", + "area": [ + "右江区", + "田阳区", + "田东县", + "德保县", + "那坡县", + "凌云县", + "乐业县", + "田林县", + "西林县", + "隆林各族自治县", + "靖西市", + "平果市" + ] + }, + { + "name": "贺州市", + "area": [ + "八步区", + "平桂区", + "昭平县", + "钟山县", + "富川瑶族自治县" + ] + }, + { + "name": "河池市", + "area": [ + "金城江区", + "宜州区", + "南丹县", + "天峨县", + "凤山县", + "东兰县", + "罗城仫佬族自治县", + "环江毛南族自治县", + "巴马瑶族自治县", + "都安瑶族自治县", + "大化瑶族自治县" + ] + }, + { + "name": "来宾市", + "area": [ + "兴宾区", + "忻城县", + "象州县", + "武宣县", + "金秀瑶族自治县", + "合山市" + ] + }, + { + "name": "崇左市", + "area": [ + "江州区", + "扶绥县", + "宁明县", + "龙州县", + "大新县", + "天等县", + "凭祥市" + ] + } + ] + }, + { + "name": "宁夏回族自治区", + "city": [ + { + "name": "银川市", + "area": [ + "兴庆区", + "西夏区", + "金凤区", + "永宁县", + "贺兰县", + "灵武市" + ] + }, + { + "name": "石嘴山市", + "area": [ + "大武口区", + "惠农区", + "平罗县" + ] + }, + { + "name": "吴忠市", + "area": [ + "利通区", + "红寺堡区", + "盐池县", + "同心县", + "青铜峡市" + ] + }, + { + "name": "固原市", + "area": [ + "原州区", + "西吉县", + "隆德县", + "泾源县", + "彭阳县" + ] + }, + { + "name": "中卫市", + "area": [ + "沙坡头区", + "中宁县", + "海原县" + ] + } + ] + }, + { + "name": "新疆维吾尔自治区", + "city": [ + { + "name": "乌鲁木齐市", + "area": [ + "天山区", + "沙依巴克区", + "新市区", + "水磨沟区", + "头屯河区", + "达坂城区", + "米东区", + "乌鲁木齐县" + ] + }, + { + "name": "克拉玛依市", + "area": [ + "独山子区", + "克拉玛依区", + "白碱滩区", + "乌尔禾区" + ] + }, + { + "name": "吐鲁番市", + "area": [ + "高昌区", + "鄯善县", + "托克逊县" + ] + }, + { + "name": "哈密市", + "area": [ + "伊州区", + "巴里坤哈萨克自治县", + "伊吾县" + ] + }, + { + "name": "昌吉回族自治州", + "area": [ + "昌吉市", + "阜康市", + "呼图壁县", + "玛纳斯县", + "奇台县", + "吉木萨尔县", + "木垒哈萨克自治县" + ] + }, + { + "name": "博尔塔拉蒙古自治州", + "area": [ + "博乐市", + "阿拉山口市", + "精河县", + "温泉县" + ] + }, + { + "name": "巴音郭楞蒙古自治州", + "area": [ + "库尔勒市", + "轮台县", + "尉犁县", + "若羌县", + "且末县", + "焉耆回族自治县", + "和静县", + "和硕县", + "博湖县" + ] + }, + { + "name": "阿克苏地区", + "area": [ + "阿克苏市", + "库车市", + "温宿县", + "沙雅县", + "新和县", + "拜城县", + "乌什县", + "阿瓦提县", + "柯坪县" + ] + }, + { + "name": "克孜勒苏柯尔克孜自治州", + "area": [ + "阿图什市", + "阿克陶县", + "阿合奇县", + "乌恰县" + ] + }, + { + "name": "喀什地区", + "area": [ + "喀什市", + "疏附县", + "疏勒县", + "英吉沙县", + "泽普县", + "莎车县", + "叶城县", + "麦盖提县", + "岳普湖县", + "伽师县", + "巴楚县", + "塔什库尔干塔吉克自治县" + ] + }, + { + "name": "和田地区", + "area": [ + "和田市", + "和田县", + "墨玉县", + "皮山县", + "洛浦县", + "策勒县", + "于田县", + "民丰县" + ] + }, + { + "name": "伊犁哈萨克自治州", + "area": [ + "伊宁市", + "奎屯市", + "霍尔果斯市", + "伊宁县", + "察布查尔锡伯自治县", + "霍城县", + "巩留县", + "新源县", + "昭苏县", + "特克斯县", + "尼勒克县" + ] + }, + { + "name": "塔城地区", + "area": [ + "塔城市", + "乌苏市", + "额敏县", + "沙湾县", + "托里县", + "裕民县", + "和布克赛尔蒙古自治县" + ] + }, + { + "name": "阿勒泰地区", + "area": [ + "阿勒泰市", + "布尔津县", + "富蕴县", + "福海县", + "哈巴河县", + "青河县", + "吉木乃县" + ] + }, + { + "name": "石河子市", + "area": [ + "新城街道", + "向阳街道", + "红山街道", + "老街街道", + "东城街道", + "北泉镇", + "石河子镇" + ] + }, + { + "name": "阿拉尔市", + "area": [ + "幸福路街道", + "金银川路街道", + "青松路街道", + "南口街道", + "托喀依乡", + "一团金银川镇", + "二团新井子镇", + "三团甘泉镇", + "四团永宁镇", + "五团沙河镇", + "六团双城镇", + "七团玛滩镇", + "八团塔门镇", + "九团梨花镇", + "十团昌安镇", + "十一团花桥镇", + "十二团塔南镇", + "十三团幸福镇", + "十四团金杨镇", + "十五团", + "十六团新开岭镇" + ] + }, + { + "name": "图木舒克市", + "area": [ + "锦绣街道", + "前海街道", + "永安坝街道", + "四十一团草湖镇", + "四十二团龙口镇", + "四十四团永安镇", + "四十五团前海镇", + "四十六团永兴镇", + "四十八团河东镇", + "四十九团海安镇", + "五十团夏河镇", + "五十一团唐驿镇", + "五十三团金胡杨镇", + "五十四团兴安镇", + "伽师总场嘉和镇" + ] + }, + { + "name": "五家渠市", + "area": [ + "军垦路街道", + "青湖路街道", + "人民路街道", + "一零二团梧桐镇", + "一零三团蔡家湖镇" + ] + }, + { + "name": "北屯市", + "area": [ + "天骄街道", + "龙疆街道", + "军垦街道", + "北屯镇", + "一八三团双渠镇", + "一八七团丰庆镇", + "一八八团海川镇" + ] + }, + { + "name": "铁门关市", + "area": [ + "迎宾街道", + "二十二团河畔镇", + "二十四团高桥镇", + "二十七团天湖镇", + "二十八团博古其镇", + "三十团双丰镇", + "三十六团米兰镇", + "三十七团金山镇", + "三十八团南屯镇", + "二二三团开泽镇" + ] + }, + { + "name": "双河市", + "area": [ + "八十一团双桥镇", + "八十四团石峪镇", + "八十五团", + "八十六团博河镇", + "八十九团", + "九十团双乐镇" + ] + }, + { + "name": "可克达拉市", + "area": [ + "六十三团榆树庄镇", + "六十四团苇湖镇", + "六十六团", + "六十七团", + "六十八团长丰镇" + ] + }, + { + "name": "昆玉市", + "area": [ + "四十七团老兵镇", + "皮山农场昆泉镇", + "一牧场昆牧镇", + "二二四团", + "二二五团玉泉镇" + ] + }, + { + "name": "胡杨河市", + "area": [ + "一二三团", + "一二四团", + "一二五团", + "一二六团", + "一二七团", + "一二八团", + "一二九团", + "一三零团", + "一三一团", + "一三七团" + ] + } + ] + }, + { + "name": "香港特别行政区", + "city": [ + { + "name": "香港特别行政区", + "area": [ + "中西区", + "湾仔区", + "东区", + "南区", + "油尖旺区", + "深水埗区", + "九龙城区", + "黄大仙区", + "观塘区", + "北区", + "大埔区", + "沙田区", + "西贡区", + "荃湾区", + "屯门区", + "元朗区", + "葵青区", + "离岛区" + ] + } + ] + }, + { + "name": "澳门特别行政区", + "city": [ + { + "name": "澳门特别行政区", + "area": [ + "花地玛堂区", + "圣安多尼堂区", + "大堂区", + "望德堂区", + "风顺堂区", + "嘉模堂区", + "圣方济各堂区", + "路氹城" + ] + } + ] + }, + { + "name": "台湾省", + "city": [ + { + "name": "台北市", + "area": [ + "中正区", + "大同区", + "中山区", + "万华区", + "信义区", + "松山区", + "大安区", + "南港区", + "北投区", + "内湖区", + "士林区", + "文山区" + ] + }, + { + "name": "新北市", + "area": [ + "板桥区", + "土城区", + "新庄区", + "新店区", + "深坑区", + "石碇区", + "坪林区", + "乌来区", + "五股区", + "八里区", + "林口区", + "淡水区", + "中和区", + "永和区", + "三重区", + "芦洲区", + "泰山区", + "树林区", + "莺歌区", + "三峡区", + "汐止区", + "金山区", + "万里区", + "三芝区", + "石门区", + "瑞芳区", + "贡寮区", + "双溪区", + "平溪区" + ] + }, + { + "name": "桃园市", + "area": [ + "桃园区", + "中坜区", + "平镇区", + "八德区", + "杨梅区", + "芦竹区", + "大溪区", + "龙潭区", + "龟山区", + "大园区", + "观音区", + "新屋区", + "复兴区" + ] + }, + { + "name": "台中市", + "area": [ + "中区", + "东区", + "西区", + "南区", + "北区", + "西屯区", + "南屯区", + "北屯区", + "丰原区", + "大里区", + "太平区", + "东势区", + "大甲区", + "清水区", + "沙鹿区", + "梧栖区", + "后里区", + "神冈区", + "潭子区", + "大雅区", + "新社区", + "石冈区", + "外埔区", + "大安区", + "乌日区", + "大肚区", + "龙井区", + "雾峰区", + "和平区" + ] + }, + { + "name": "台南市", + "area": [ + "中西区", + "东区", + "南区", + "北区", + "安平区", + "安南区", + "永康区", + "归仁区", + "新化区", + "左镇区", + "玉井区", + "楠西区", + "南化区", + "仁德区", + "关庙区", + "龙崎区", + "官田区", + "麻豆区", + "佳里区", + "西港区", + "七股区", + "将军区", + "学甲区", + "北门区", + "新营区", + "后壁区", + "白河区", + "东山区", + "六甲区", + "下营区", + "柳营区", + "盐水区", + "善化区", + "大内区", + "山上区", + "新市区", + "安定区" + ] + }, + { + "name": "高雄市", + "area": [ + "楠梓区", + "左营区", + "鼓山区", + "三民区", + "盐埕区", + "前金区", + "新兴区苓雅区", + "前镇区", + "旗津区", + "小港区", + "凤山区", + "大寮区", + "鸟松区", + "林园区", + "仁武区", + "大树区", + "大社区", + "冈山区", + "路竹区", + "桥头区", + "梓官区", + "弥陀区", + "永安区", + "燕巢区", + "阿莲区", + "茄萣区", + "湖内区", + "旗山区", + "美浓区", + "内门区", + "杉林区", + "甲仙区", + "六龟区", + "茂林区", + "桃源区", + "那玛夏区" + ] + } + ] + } +] \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/attrs.xml b/Android_Mireo/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..78554f9 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/attrs.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/colors.xml b/Android_Mireo/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..c170210 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/colors.xml @@ -0,0 +1,26 @@ + + + @color/white + @color/black121418 + #5A8DDF + #F4F4F4 + #333333 + @color/panda + + #AA5A8DDF + #BBBBBB + #ECECEC + #7C7C7C + + #007AFF + #F44336 + #503981 + #D81B60 + #080B16 + #F56490 + #FF0049 + #999999 + #d9d9d9 + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/dimens.xml b/Android_Mireo/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..11688e0 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/dimens.xml @@ -0,0 +1,11 @@ + + + + 1px + + 999dp + + 15dp + + 120dp + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/integers.xml b/Android_Mireo/app/src/main/res/values/integers.xml new file mode 100644 index 0000000..0e4da0e --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/integers.xml @@ -0,0 +1,6 @@ + + + 200 + + 4 + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/strings.xml b/Android_Mireo/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..a9cb727 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/strings.xml @@ -0,0 +1,295 @@ + + Mireo TV + + Loading… + + unknown error + + Confirm + Cancel + + year + month + day + + hour + minute + second + + Restart + + Network Error + + Video error not support + Video error unknown + Error type:%d,Error code:%d + + Please enter your mobile phone number. + The mobile phone number is not entered correctly + + Please enter your password. + The two passwords are inconsistent. Please re-enter them + + Please enter the verification code. + Send verification code + The verification code has been sent. Please pay attention to checking your inbox. + code error + + Next + Complete + Commit + + Authorization Reminder + Permission grant failed. Please correctly grant the permission. + Permission acquisition failed. Please manually grant the permission. + Permission acquisition failed. Please manually grant %s. + The background location permission has not been granted. Please select "Always Allow". + Go to Authorization + + Calendar permission + Camera permission + Contacts permission + Location permission + Background location permission + Microphone permission + Phone permission + Call log permission + Body sensor permission + Fitness activity permission + SMS permission + Storage permission + + Permission for installing applications + Permission for notification bar + Permission for floating window + Permission for system settings + + There is no network connection at present. Please check your network settings. + There is no more data available. + + The security certificate of the current website has expired or is not trusted. Do you want to continue browsing? + Continue browsing + Return to the previous page + + The current website requires access to your geographical location. + Grant + Reject + + Current Number: %s + Make Call + Cancel + + Loading... + + + Request failed with unknown error + Login has expired. Please log in again + Data parsing failed. Please wait a moment + Server request timed out. Please try again later + Request failed. Please check your network settings + Server response is abnormal. Please try again later. Response code: %d, Response message: %s + Server connection is abnormal. Please try again later + Request has been interrupted. Please retry + Server data returned abnormally. Please try again later + File md5 verification failed + + + Empty + Request failed. Please try again. + Network error. Please try again. + Retry + + Please select a region + Please select + + Please select a date + + Please select a time + + Discover New Version + + Updated Content + + Let\'s talk about it later + Update immediately + + You must first grant the permission to download the update normally + + Downloading in progress + Downloading... %d%% + Download completed. Click to install + Download failed. Click to retry + + This version is already the latest one. + + update + Update Notification + + Share to … + + + WeChat + Moment + QQ + QQ Zone + Copy Link + + Copied to clipboard + + Please enter the payment password + + At least %d items need to be selected + Maximum of %d items can be selected + + Identity Verification + + Press again to exit + Home + Explore + Rewards + My list + Me + + + Register + Forget password? + Log in + + Other Login Methods + + Register + The mobile phone number is only used for login and to protect account security. + Set a login password of 6 to 18 characters. + Please re-enter the password. + + Setting title + Language Switch + Simplified Chinese + Traditional Chinese + Check for Updates + + Change Password + Modify Mobile Phone + + Auto-login + Clear Cache + + + Privacy Agreement + About Us + + Log out + + About Us + Android Wheel Brother + + Copyright © 2018 – 2021 + + Forget Password + + Set Login Password + Set a 6-18 character login password + Re-enter the password + The two passwords do not match. Please re-enter + Success in modifying + + Set New Mobile Phone Number + Please use the new mobile phone number you have changed for login next time + Bind Now + + Binding successful + + Personal Information + Profile Picture + + User ID + Nickname + Set a nickname + + Region + Please select + + Personal Data - Phone Number + Bind Now + + Web page loading.… + + Image Selection + All Images + + Total: %d images + + You can only select a maximum of %d images this time + + Cannot be selected. This image has been deleted. + + Failed to crop image. Your current phone does not support image cropping. + + Video Selection + All Videos + + Total: %d + + You can only select a maximum of %d videos this time + + Cannot be selected. This video has been deleted. + + Failed to launch camera + Invalid target address + + loading.... + HOME + RECOMMEND + REWARDS + ME + The service is abnormal. Check the network. + Watch Now + Watch + Continue Watching + login + My Favorites + Settings + Visitor + No content for the time being~ + Check the network and try again~ + Series + no more data. + UnFavorites + You may not find this collection after you uncollect it + Think again + Short Drama Rankings + More + Join + Sign in with Google + Sign in with Tiktok + Sign in with FaceBook + Google login exception. + Enter the content you want to search for + Search + Historical search + Please enter keywords for search. + Quit + Delete Account + Feedback + Please log in first + 1886904725382038 + fb1886904725382038 + b63e62471e03fc8a1ba13219ebd06363 + XW2aulJv9urKD4MIIFT1xcSCuyTHaDZ9qUbDqygnTLS04GkdX7WMQJviGP5vDRWGsk4OJJIyLGRV3mbLqOWx0W + guyantv + No record of spending at the moment + Top Up + Retry + Today\'s AD viewing limit is reached + 8463666 + Your account is already logged in on another device~ + The AD is still on its way + Please install the tiktok app~ + Google Pay Success + Google Pay Error + Google Pay Canceled + Theater + 2. Paid content can be unlocked using coins or subscription. Member-only content is only accessible after subscribing.
    3. Bonus coins expire after one month.
    4. Coins will be used first when unlocking episodes. If the balance is insufficient, bonus coins will be used automatically.
    5. During the subscription period, you will have unlimited access to all episodes on GuyanTV.
    6. Subscription renewal will be automatically deducted from your Google account within 24 hours before your current subscription expires.
    7. If you want to cancel your subscription, please go to your Google Play account and cancel your subscription at least 24 hours before the end of the current subscription period.
    8. If the recharge payment is successful but your balance is not updated, please try to click Restore to refresh your balance.
    9. Our subscription prices will be converted to the region where you pay.
    If you want to manage your GuyanTV subscription, go to Google Subscription Management.]]>
    + + +
    \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/styles.xml b/Android_Mireo/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..d159236 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/styles.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/values/themes.xml b/Android_Mireo/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..19b0a24 --- /dev/null +++ b/Android_Mireo/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/xml/file_paths.xml b/Android_Mireo/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..6dd23e2 --- /dev/null +++ b/Android_Mireo/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/xml/network_security_config.xml b/Android_Mireo/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..dca93c0 --- /dev/null +++ b/Android_Mireo/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/build.gradle b/Android_Mireo/build.gradle new file mode 100644 index 0000000..b5a430f --- /dev/null +++ b/Android_Mireo/build.gradle @@ -0,0 +1,42 @@ +apply from : 'configs.gradle' + +buildscript { + + apply from : 'maven.gradle' + + repositories { + maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } + addCommonMaven(repositories) + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.3' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20' + classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10' + } +} + +allprojects { + + repositories { + maven { url 'https://repo1.maven.org/maven2' } + addCommonMaven(repositories) + } + + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + } + tasks.withType(Javadoc) { + options { + encoding 'UTF-8' + charSet 'UTF-8' + links 'http://docs.oracle.com/javase/7/docs/api' + } + } + + setBuildDir(new File(rootDir, "build/${path.replaceAll(':', '/')}")) +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/Android_Mireo/common.gradle b/Android_Mireo/common.gradle new file mode 100644 index 0000000..ea356f7 --- /dev/null +++ b/Android_Mireo/common.gradle @@ -0,0 +1,59 @@ +apply plugin: 'kotlin-android' + +android { + + compileSdk 34 + defaultConfig { + minSdk 21 + targetSdk 34 + versionName '1.0.0' + versionCode 32 + } + + compileOptions { + targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main { + jniLibs.srcDirs = ['libs'] + } + } + + buildTypes { + debug {} + preview {} + release {} + } + + lintOptions { + disable 'HardcodedText' + disable 'ContentDescription' + } +} + +afterEvaluate { + if (android.defaultConfig.applicationId == null && "umeng" != getName()) { + generateReleaseBuildConfig.enabled = false + generatePreviewBuildConfig.enabled = false + generateDebugBuildConfig.enabled = false + } +} + +dependencies { + implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') + + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0" + implementation "androidx.fragment:fragment-ktx:1.6.0" +} \ No newline at end of file diff --git a/Android_Mireo/configs.gradle b/Android_Mireo/configs.gradle new file mode 100644 index 0000000..2a5c61b --- /dev/null +++ b/Android_Mireo/configs.gradle @@ -0,0 +1,41 @@ +ext { + def SERVER_TYPE_TEST = "test" + def SERVER_TYPE_PREVIEW = "pre" + def SERVER_TYPE_PRODUCT = "product" + + def taskName = project.gradle.startParameter.taskNames[0] + if (taskName == null) { + taskName = "" + } + println "GradleLog TaskNameOutput " + taskName + + def serverType = SERVER_TYPE_PRODUCT + + if (taskName.endsWith("Debug")) { + serverType = SERVER_TYPE_TEST + } else if (taskName.endsWith("Preview")) { + serverType = SERVER_TYPE_PREVIEW + } + + if (project.hasProperty("ServerType")) { + serverType = project.properties["ServerType"] + } + + println "GradleLog ServerTypeOutput " + serverType + + switch(serverType) { + case SERVER_TYPE_TEST: + case SERVER_TYPE_PREVIEW: + LOG_ENABLE = true + if (serverType == SERVER_TYPE_PREVIEW) { + HOST_URL = "https://api-mireotv.mireotv.com/4da6fd4c/" + } else { + HOST_URL = "https://api-mireotv.mireotv.com/4da6fd4c/" + } + break + case SERVER_TYPE_PRODUCT: + LOG_ENABLE = false + HOST_URL = "https://api-mireotv.mireotv.com/4da6fd4c/" + break + } +} \ No newline at end of file diff --git a/Android_Mireo/gradle.properties b/Android_Mireo/gradle.properties new file mode 100644 index 0000000..8419537 --- /dev/null +++ b/Android_Mireo/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel = true + +# 为 Studio 分配默认的内存大小 +org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 + +# 表示使用 AndroidX +android.useAndroidX = true +# 表示将第三方库迁移到 AndroidX +android.enableJetifier = true \ No newline at end of file diff --git a/Android_Mireo/gradlew b/Android_Mireo/gradlew new file mode 100644 index 0000000..9d82f78 --- /dev/null +++ b/Android_Mireo/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/Android_Mireo/gradlew.bat b/Android_Mireo/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/Android_Mireo/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Android_Mireo/library/base/build.gradle b/Android_Mireo/library/base/build.gradle new file mode 100644 index 0000000..888cf74 --- /dev/null +++ b/Android_Mireo/library/base/build.gradle @@ -0,0 +1,18 @@ +apply plugin : 'com.android.library' +apply from : '../../common.gradle' + +android { + + defaultConfig { + consumerProguardFiles 'proguard-base.pro' + } + + sourceSets { + main { + res.srcDirs( + 'src/main/res', + 'src/main/res-sw', + ) + } + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/proguard-base.pro b/Android_Mireo/library/base/proguard-base.pro new file mode 100644 index 0000000..d076383 --- /dev/null +++ b/Android_Mireo/library/base/proguard-base.pro @@ -0,0 +1,61 @@ +# 基于 sdk/tools/proguard/proguard-android-optimize.txt 修改 +-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* +-optimizationpasses 5 +-allowaccessmodification +-dontpreverify +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-verbose + +# 不要删除无用代码 +-dontshrink + +# 不混淆泛型 +-keepattributes Signature + +# 不混淆注解类 +-keepattributes *Annotation* + +# 不混淆本地方法 +-keepclasseswithmembernames class * { + native ; +} + +# 不混淆 Activity 在 XML 布局所设置的 onClick 属性值 +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +# 不混淆枚举类 +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +# 不混淆 Parcelable 子类 +-keepclassmembers class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator CREATOR; +} + +# 不混淆 Serializable 子类 +-keepclassmembers class * implements java.io.Serializable { + static final long serialVersionUID; + private static final java.io.ObjectStreamField[] serialPersistentFields; + !static !transient ; + !private ; + !private ; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +# 不混淆 R 文件中的字段 +-keepclassmembers class **.R$* { + public static ; +} + +# 不混淆 WebView 设置的 JS 接口的方法名 +-keepclassmembers class * { + @android.webkit.JavascriptInterface ; +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/AndroidManifest.xml b/Android_Mireo/library/base/src/main/AndroidManifest.xml new file mode 100644 index 0000000..47d69f1 --- /dev/null +++ b/Android_Mireo/library/base/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseActivity.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseActivity.kt new file mode 100644 index 0000000..653b7d7 --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseActivity.kt @@ -0,0 +1,141 @@ +package com.hjq.base + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.util.SparseArray +import android.view.KeyEvent +import android.view.ViewGroup +import android.view.Window +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import com.hjq.base.action.* +import java.util.* +import kotlin.math.pow + +abstract class BaseActivity : AppCompatActivity(), ActivityAction, + ClickAction, HandlerAction, BundleAction, KeyboardAction { + + companion object { + + const val RESULT_ERROR: Int = -2 + } + + private val activityCallbacks: SparseArray by lazy { SparseArray(1) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + initActivity() + } + + protected open fun initActivity() { + initLayout() + initView() + initData() + } + + protected abstract fun getLayoutId(): Int + + protected abstract fun initView() + + protected abstract fun initData() + + protected open fun initLayout() { + if (getLayoutId() > 0) { + setContentView(getLayoutId()) + initSoftKeyboard() + } + } + + protected open fun initSoftKeyboard() { + getContentView()?.setOnClickListener { + hideKeyboard(currentFocus) + } + } + + override fun onDestroy() { + super.onDestroy() + removeCallbacks() + } + + override fun finish() { + super.finish() + hideKeyboard(currentFocus) + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + setIntent(intent) + } + + override fun getBundle(): Bundle? { + return intent.extras + } + + open fun getContentView(): ViewGroup? { + return findViewById(Window.ID_ANDROID_CONTENT) + } + + override fun getContext(): Context { + return this + } + + override fun startActivity(intent: Intent) { + return super.startActivity(intent) + } + + override fun dispatchKeyEvent(event: KeyEvent?): Boolean { + val fragments: MutableList = supportFragmentManager.fragments + for (fragment: Fragment? in fragments) { + if (fragment !is BaseFragment<*> || fragment.lifecycle.currentState != Lifecycle.State.RESUMED) { + continue + } + if (fragment.dispatchKeyEvent(event)) { + return true + } + } + return super.dispatchKeyEvent(event) + } + + @Suppress("deprecation") + override fun startActivityForResult(intent: Intent, requestCode: Int, options: Bundle?) { + hideKeyboard(currentFocus) + super.startActivityForResult(intent, requestCode, options) + } + + /** + * startActivityForResult + */ + open fun startActivityForResult(clazz: Class, callback: OnActivityCallback?) { + startActivityForResult(Intent(this, clazz), null, callback) + } + + open fun startActivityForResult(intent: Intent, callback: OnActivityCallback?) { + startActivityForResult(intent, null, callback) + } + + @Suppress("deprecation") + open fun startActivityForResult(intent: Intent, options: Bundle?, callback: OnActivityCallback?) { + val requestCode: Int = Random().nextInt(2.0.pow(16.0).toInt()) + activityCallbacks.put(requestCode, callback) + startActivityForResult(intent, requestCode, options) + } + + @Suppress("deprecation") + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + var callback: OnActivityCallback? + if ((activityCallbacks.get(requestCode).also { callback = it }) != null) { + callback?.onActivityResult(resultCode, data) + activityCallbacks.remove(requestCode) + return + } + super.onActivityResult(requestCode, resultCode, data) + } + + interface OnActivityCallback { + + fun onActivityResult(resultCode: Int, data: Intent?) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseAdapter.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseAdapter.kt new file mode 100644 index 0000000..95c6591 --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseAdapter.kt @@ -0,0 +1,179 @@ +package com.hjq.base + +import android.content.Context +import android.util.SparseArray +import android.view.LayoutInflater +import android.view.View +import android.view.View.OnLongClickListener +import androidx.annotation.IdRes +import androidx.annotation.LayoutRes +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.hjq.base.action.ResourcesAction + +@Suppress("LeakingThis") +abstract class BaseAdapter.BaseViewHolder>(private val context: Context) : + RecyclerView.Adapter(), ResourcesAction { + + private var recyclerView: RecyclerView? = null + + private var itemClickListener: OnItemClickListener? = null + + private var itemLongClickListener: OnItemLongClickListener? = null + + private val childClickListeners: SparseArray by lazy { SparseArray() } + + private val childLongClickListeners: SparseArray by lazy { SparseArray() } + + private var positionOffset: Int = 0 + + override fun onBindViewHolder(holder: VH, position: Int) { + positionOffset = position - holder.adapterPosition + holder.onBindView(position) + } + + open fun getRecyclerView(): RecyclerView? { + return recyclerView + } + + override fun getContext(): Context { + return context + } + + abstract inner class BaseViewHolder constructor(itemView: View) : + RecyclerView.ViewHolder(itemView), View.OnClickListener, OnLongClickListener { + + constructor(@LayoutRes id: Int) : this( + LayoutInflater.from(getContext()).inflate(id, recyclerView, false) + ) + + init { + if (itemClickListener != null) { + itemView.setOnClickListener(this) + } + + if (itemLongClickListener != null) { + itemView.setOnLongClickListener(this) + } + + for (i in 0 until childClickListeners.size()) { + findViewById(childClickListeners.keyAt(i))?.setOnClickListener(this) + } + + for (i in 0 until childLongClickListeners.size()) { + findViewById(childLongClickListeners.keyAt(i))?.setOnLongClickListener(this) + } + } + + abstract fun onBindView(position: Int) + + protected open fun getViewHolderPosition(): Int { + return layoutPosition + positionOffset + } + + /** + * [View.OnClickListener] + */ + override fun onClick(view: View) { + val position: Int = getViewHolderPosition() + if (position < 0 || position >= itemCount) { + return + } + if (view === getItemView()) { + itemClickListener?.onItemClick(recyclerView, view, position) + return + } + childClickListeners.get(view.id)?.onChildClick(recyclerView, view, position) + } + + /** + * [View.OnLongClickListener] + */ + override fun onLongClick(view: View): Boolean { + val position: Int = getViewHolderPosition() + if (position < 0 || position >= itemCount) { + return false + } + if (view === getItemView()) { + if (itemLongClickListener != null) { + return itemLongClickListener!!.onItemLongClick(recyclerView, view, position) + } + return false + } + val listener: OnChildLongClickListener? = childLongClickListeners.get(view.id) + if (listener != null) { + return listener.onChildLongClick(recyclerView, view, position) + } + return false + } + + open fun getItemView(): View { + return itemView + } + + open fun findViewById(@IdRes id: Int): V? { + return getItemView().findViewById(id) + } + } + + override fun onAttachedToRecyclerView(recyclerView: RecyclerView) { + this.recyclerView = recyclerView + if (this.recyclerView?.layoutManager == null) { + this.recyclerView?.layoutManager = generateDefaultLayoutManager(context) + } + } + + override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) { + this.recyclerView = null + } + + protected open fun generateDefaultLayoutManager(context: Context): RecyclerView.LayoutManager? { + return LinearLayoutManager(context) + } + + open fun setOnItemClickListener(listener: OnItemClickListener?) { + checkRecyclerViewState() + itemClickListener = listener + } + + open fun setOnChildClickListener(@IdRes id: Int, listener: OnChildClickListener?) { + checkRecyclerViewState() + childClickListeners.put(id, listener) + } + + open fun setOnItemLongClickListener(listener: OnItemLongClickListener?) { + checkRecyclerViewState() + itemLongClickListener = listener + } + + open fun setOnChildLongClickListener(@IdRes id: Int, listener: OnChildLongClickListener?) { + checkRecyclerViewState() + childLongClickListeners.put(id, listener) + } + + private fun checkRecyclerViewState() { + if (recyclerView != null) { + // 必须在 RecyclerView.setAdapter() 之前设置监听 + throw IllegalStateException("are you ok?") + } + } + + interface OnItemClickListener { + + fun onItemClick(recyclerView: RecyclerView?, itemView: View?, position: Int) + } + + interface OnItemLongClickListener { + + fun onItemLongClick(recyclerView: RecyclerView?, itemView: View?, position: Int): Boolean + } + + interface OnChildClickListener { + + fun onChildClick(recyclerView: RecyclerView?, childView: View?, position: Int) + } + + interface OnChildLongClickListener { + fun onChildLongClick(recyclerView: RecyclerView?, childView: View?, position: Int): Boolean + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseDialog.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseDialog.kt new file mode 100644 index 0000000..fc8a40b --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseDialog.kt @@ -0,0 +1,935 @@ +package com.hjq.base + +import android.app.Activity +import android.app.Application.ActivityLifecycleCallbacks +import android.content.Context +import android.content.DialogInterface +import android.graphics.drawable.Drawable +import android.os.Build +import android.os.Bundle +import android.util.SparseArray +import android.view.Gravity +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.Window +import android.view.WindowManager +import android.view.inputmethod.InputMethodManager +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes +import androidx.annotation.FloatRange +import androidx.annotation.IdRes +import androidx.annotation.LayoutRes +import androidx.annotation.StringRes +import androidx.annotation.StyleRes +import androidx.appcompat.app.AppCompatDialog +import androidx.core.content.ContextCompat +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LifecycleRegistry +import com.hjq.base.action.ActivityAction +import com.hjq.base.action.AnimAction +import com.hjq.base.action.ClickAction +import com.hjq.base.action.HandlerAction +import com.hjq.base.action.KeyboardAction +import com.hjq.base.action.ResourcesAction +import java.lang.ref.SoftReference + +@Suppress("LeakingThis") +open class BaseDialog constructor( + context: Context, + @StyleRes themeResId: Int = R.style.BaseDialogTheme +) : + AppCompatDialog(context, themeResId), LifecycleOwner, ActivityAction, ResourcesAction, + HandlerAction, ClickAction, AnimAction, KeyboardAction, DialogInterface.OnShowListener, + DialogInterface.OnCancelListener, DialogInterface.OnDismissListener { + + private val listeners: ListenersWrapper = ListenersWrapper(this) + override val lifecycle: LifecycleRegistry = LifecycleRegistry(this) + private var showListeners: MutableList? = null + private var cancelListeners: MutableList? = null + private var dismissListeners: MutableList? = null + + open fun getContentView(): View? { + val contentView: View? = findViewById(Window.ID_ANDROID_CONTENT) + if (contentView is ViewGroup && contentView.childCount == 1) { + return contentView.getChildAt(0) + } + return contentView + } + + open fun setWidth(width: Int) { + val window: Window = window ?: return + val params: WindowManager.LayoutParams? = window.attributes + params?.width = width + window.attributes = params + } + + open fun setHeight(height: Int) { + val window: Window = window ?: return + val params: WindowManager.LayoutParams? = window.attributes + params?.height = height + window.attributes = params + } + + open fun setXOffset(offset: Int) { + val window: Window = window ?: return + val params: WindowManager.LayoutParams? = window.attributes + params?.x = offset + window.attributes = params + } + + open fun setYOffset(offset: Int) { + val window: Window = window ?: return + val params: WindowManager.LayoutParams? = window.attributes + params?.y = offset + window.attributes = params + } + + open fun getGravity(): Int { + val window: Window = window ?: return Gravity.NO_GRAVITY + val params: WindowManager.LayoutParams = window.attributes ?: return Gravity.NO_GRAVITY + return params.gravity + } + + open fun setGravity(gravity: Int) { + window?.setGravity(gravity) + } + + open fun setWindowAnimations(@StyleRes id: Int) { + window?.setWindowAnimations(id) + } + + open fun getWindowAnimations(): Int { + val window: Window = window ?: return AnimAction.ANIM_DEFAULT + return window.attributes.windowAnimations + } + + open fun setBackgroundDimEnabled(enabled: Boolean) { + if (enabled) { + window?.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + } else { + window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + } + } + open fun setBackgroundDimAmount(@FloatRange(from = 0.0, to = 1.0) dimAmount: Float) { + window?.setDimAmount(dimAmount) + } + + override fun dismiss() { + removeCallbacks() + val focusView: View? = currentFocus + if (focusView != null) { + getSystemService(InputMethodManager::class.java).hideSoftInputFromWindow( + focusView.windowToken, + 0 + ) + } + super.dismiss() + } + + @Deprecated("Please use {@link #addOnShowListener(BaseDialog.OnShowListener)}}") + override fun setOnShowListener(listener: DialogInterface.OnShowListener?) { + if (listener == null) { + return + } + addOnShowListener(ShowListenerWrapper(listener)) + } + + @Deprecated("Please use {@link #addOnCancelListener(BaseDialog.OnCancelListener)}") + override fun setOnCancelListener(listener: DialogInterface.OnCancelListener?) { + if (listener == null) { + return + } + addOnCancelListener(CancelListenerWrapper(listener)) + } + + @Deprecated("Please use {@link #addOnDismissListener(BaseDialog.OnDismissListener)}") + override fun setOnDismissListener(listener: DialogInterface.OnDismissListener?) { + if (listener == null) { + return + } + addOnDismissListener(DismissListenerWrapper(listener)) + } + + @Deprecated( + "Please use {@link #setOnKeyListener(BaseDialog.OnKeyListener)}", ReplaceWith( + "super.setOnKeyListener(listener)", + "androidx.appcompat.app.AppCompatDialog" + ) + ) + override fun setOnKeyListener(listener: DialogInterface.OnKeyListener?) { + super.setOnKeyListener(listener) + } + + open fun setOnKeyListener(listener: OnKeyListener?) { + super.setOnKeyListener(KeyListenerWrapper(listener)) + } + + open fun addOnShowListener(listener: OnShowListener?) { + if (showListeners == null) { + showListeners = ArrayList() + super.setOnShowListener(listeners) + } + showListeners?.add(listener) + } + + open fun addOnCancelListener(listener: OnCancelListener?) { + if (cancelListeners == null) { + cancelListeners = ArrayList() + super.setOnCancelListener(listeners) + } + cancelListeners?.add(listener) + } + + open fun addOnDismissListener(listener: OnDismissListener?) { + if (dismissListeners == null) { + dismissListeners = ArrayList() + super.setOnDismissListener(listeners) + } + dismissListeners?.add(listener) + } + + open fun removeOnShowListener(listener: OnShowListener?) { + showListeners?.remove(listener) + } + + open fun removeOnCancelListener(listener: OnCancelListener?) { + cancelListeners?.remove(listener) + } + + open fun removeOnDismissListener(listener: OnDismissListener?) { + dismissListeners?.remove(listener) + } + + private fun setOnShowListeners(listeners: MutableList?) { + super.setOnShowListener(this.listeners) + showListeners = listeners + } + + private fun setOnCancelListeners(listeners: MutableList?) { + super.setOnCancelListener(this.listeners) + cancelListeners = listeners + } + + private fun setOnDismissListeners(listeners: MutableList?) { + super.setOnDismissListener(this.listeners) + dismissListeners = listeners + } + + /** + * [DialogInterface.OnShowListener] + */ + override fun onShow(dialog: DialogInterface?) { + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_RESUME) + showListeners?.let { + for (i in it.indices) { + it[i]?.onShow(this) + } + } + } + + /** + * [DialogInterface.OnCancelListener] + */ + override fun onCancel(dialog: DialogInterface?) { + cancelListeners?.let { + for (i in it.indices) { + it[i]?.onCancel(this) + } + } + } + + /** + * [DialogInterface.OnDismissListener] + */ + override fun onDismiss(dialog: DialogInterface?) { + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY) + dismissListeners?.let { + for (i in it.indices) { + it[i]?.onDismiss(this) + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_CREATE) + } + + override fun onStart() { + super.onStart() + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_START) + } + + override fun onStop() { + super.onStop() + lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_STOP) + } + + @Suppress("UNCHECKED_CAST") + open class Builder> constructor(private val context: Context) : + ActivityAction, ResourcesAction, ClickAction, KeyboardAction { + + private var dialog: BaseDialog? = null + + private var contentView: View? = null + + private var themeId: Int = R.style.BaseDialogTheme + + private var animStyle: Int = AnimAction.ANIM_DEFAULT + + private var width: Int = WindowManager.LayoutParams.WRAP_CONTENT + private var height: Int = WindowManager.LayoutParams.WRAP_CONTENT + + private var gravity: Int = Gravity.NO_GRAVITY + + private var xOffset: Int = 0 + + private var yOffset: Int = 0 + + private var cancelable: Boolean = true + + private var canceledOnTouchOutside: Boolean = true + + private var backgroundDimEnabled: Boolean = true + + private var backgroundDimAmount: Float = 0.5f + + private var createListener: OnCreateListener? = null + + private val showListeners: MutableList by lazy { ArrayList() } + + private val cancelListeners: MutableList by lazy { ArrayList() } + + private val dismissListeners: MutableList by lazy { ArrayList() } + + private var keyListener: OnKeyListener? = null + + private var clickArray: SparseArray?>? = null + + open fun setContentView(@LayoutRes id: Int): B { + return setContentView( + LayoutInflater.from(context).inflate(id, FrameLayout(context), false) + ) + } + + open fun setContentView(view: View?): B { + if (view == null) { + throw IllegalArgumentException("are you ok?") + } + contentView = view + if (isCreated()) { + dialog?.setContentView(view) + return this as B + } + val layoutParams: ViewGroup.LayoutParams? = contentView?.layoutParams + if ((layoutParams != null) && (width == ViewGroup.LayoutParams.WRAP_CONTENT) && (height == ViewGroup.LayoutParams.WRAP_CONTENT)) { + setWidth(layoutParams.width) + setHeight(layoutParams.height) + } + + if (gravity == Gravity.NO_GRAVITY) { + if (layoutParams is FrameLayout.LayoutParams) { + val gravity: Int = layoutParams.gravity + if (gravity != FrameLayout.LayoutParams.UNSPECIFIED_GRAVITY) { + setGravity(gravity) + } + } else if (layoutParams is LinearLayout.LayoutParams) { + val gravity: Int = layoutParams.gravity + if (gravity != Gravity.NO_GRAVITY) { + setGravity(gravity) + } + } + if (gravity == Gravity.NO_GRAVITY) { + setGravity(Gravity.CENTER) + } + } + return this as B + } + + open fun setThemeStyle(@StyleRes id: Int): B { + themeId = id + if (isCreated()) { + throw IllegalStateException("are you ok?") + } + return this as B + } + + open fun setAnimStyle(@StyleRes id: Int): B { + animStyle = id + if (isCreated()) { + dialog?.setWindowAnimations(id) + } + return this as B + } + + open fun setWidth(width: Int): B { + this.width = width + if (isCreated()) { + dialog?.setWidth(width) + return this as B + } + + + val params: ViewGroup.LayoutParams? = contentView?.layoutParams + if (params != null) { + params.width = width + contentView?.layoutParams = params + } + return this as B + } + + open fun setHeight(height: Int): B { + this.height = height + if (isCreated()) { + dialog?.setHeight(height) + return this as B + } + + val params: ViewGroup.LayoutParams? = contentView?.layoutParams + if (params != null) { + params.height = height + contentView?.layoutParams = params + } + return this as B + } + + open fun setGravity(gravity: Int): B { + this.gravity = + Gravity.getAbsoluteGravity(gravity, getResources().configuration.layoutDirection) + if (isCreated()) { + dialog?.setGravity(gravity) + } + return this as B + } + + open fun setXOffset(offset: Int): B { + xOffset = offset + if (isCreated()) { + dialog?.setXOffset(offset) + } + return this as B + } + + open fun setYOffset(offset: Int): B { + yOffset = offset + if (isCreated()) { + this.dialog?.setYOffset(offset) + } + return this as B + } + + open fun setCancelable(cancelable: Boolean): B { + this.cancelable = cancelable + if (isCreated()) { + dialog?.setCancelable(cancelable) + } + return this as B + } + + open fun setCanceledOnTouchOutside(cancel: Boolean): B { + canceledOnTouchOutside = cancel + if (isCreated() && cancelable) { + dialog?.setCanceledOnTouchOutside(cancel) + } + return this as B + } + + open fun setBackgroundDimEnabled(enabled: Boolean): B { + backgroundDimEnabled = enabled + if (isCreated()) { + dialog?.setBackgroundDimEnabled(enabled) + } + return this as B + } + + open fun setBackgroundDimAmount(@FloatRange(from = 0.0, to = 1.0) dimAmount: Float): B { + backgroundDimAmount = dimAmount + if (isCreated()) { + dialog?.setBackgroundDimAmount(dimAmount) + } + return this as B + } + + open fun setOnCreateListener(listener: OnCreateListener): B { + createListener = listener + return this as B + } + + open fun addOnShowListener(listener: OnShowListener): B { + showListeners.add(listener) + return this as B + } + + open fun addOnCancelListener(listener: OnCancelListener): B { + cancelListeners.add(listener) + return this as B + } + + open fun addOnDismissListener(listener: OnDismissListener): B { + dismissListeners.add(listener) + return this as B + } + + open fun setOnKeyListener(listener: OnKeyListener): B { + keyListener = listener + if (isCreated()) { + dialog?.setOnKeyListener(listener) + } + return this as B + } + + open fun setText(@IdRes viewId: Int, @StringRes stringId: Int): B { + return setText(viewId, getString(stringId)) + } + + open fun setText(@IdRes id: Int, text: CharSequence?): B { + (findViewById(id) as TextView?)?.text = text + return this as B + } + + open fun setTextColor(@IdRes id: Int, @ColorInt color: Int): B { + (findViewById(id) as TextView?)?.setTextColor(color) + return this as B + } + + open fun setHint(@IdRes viewId: Int, @StringRes stringId: Int): B { + return setHint(viewId, getString(stringId)) + } + + open fun setHint(@IdRes id: Int, text: CharSequence?): B { + (findViewById(id) as TextView?)?.hint = text + return this as B + } + + open fun setVisibility(@IdRes id: Int, visibility: Int): B { + findViewById(id)?.visibility = visibility + return this as B + } + + open fun setBackground(@IdRes viewId: Int, @DrawableRes drawableId: Int): B { + return setBackground(viewId, ContextCompat.getDrawable(context, drawableId)) + } + + open fun setBackground(@IdRes id: Int, drawable: Drawable?): B { + findViewById(id)?.background = drawable + return this as B + } + + open fun setImageDrawable(@IdRes viewId: Int, @DrawableRes drawableId: Int): B { + return setBackground(viewId, ContextCompat.getDrawable(context, drawableId)) + } + + open fun setImageDrawable(@IdRes id: Int, drawable: Drawable?): B { + (findViewById(id) as ImageView?)?.setImageDrawable(drawable) + return this as B + } + + open fun setOnClickListener(@IdRes id: Int, listener: OnClickListener): B { + if (clickArray == null) { + clickArray = SparseArray() + } + clickArray!!.put(id, listener as OnClickListener) + if (isCreated()) { + dialog?.findViewById(id) + ?.setOnClickListener(ViewClickWrapper(dialog, listener)) + } + return this as B + } + + @Suppress("RtlHardcoded") + open fun create(): BaseDialog { + if (contentView == null) { + throw IllegalArgumentException("are you ok?") + } + + if (isShowing()) { + dismiss() + } + + if (gravity == Gravity.NO_GRAVITY) { + gravity = Gravity.CENTER + } + + if (animStyle == AnimAction.ANIM_DEFAULT) { + animStyle = when (gravity) { + Gravity.TOP -> AnimAction.ANIM_TOP + Gravity.BOTTOM -> AnimAction.ANIM_BOTTOM + Gravity.LEFT -> AnimAction.ANIM_LEFT + Gravity.RIGHT -> AnimAction.ANIM_RIGHT + else -> AnimAction.ANIM_DEFAULT + } + } + + dialog = createDialog(context, themeId) + dialog!!.let { dialog -> + dialog.setContentView(contentView!!) + dialog.setCancelable(cancelable) + if (cancelable) { + dialog.setCanceledOnTouchOutside(canceledOnTouchOutside) + } + dialog.setOnShowListeners(showListeners) + dialog.setOnCancelListeners(cancelListeners) + dialog.setOnDismissListeners(dismissListeners) + dialog.setOnKeyListener(keyListener) + val window: Window? = dialog.window + if (window != null) { + val params: WindowManager.LayoutParams = window.attributes + params.width = width + params.height = height + params.gravity = gravity + params.x = xOffset + params.y = yOffset + params.windowAnimations = animStyle + + if (backgroundDimEnabled) { + window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + window.setDimAmount(backgroundDimAmount) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) + } + window.attributes = params + } + + clickArray?.let { array -> + var i = 0 + while (i < array.size()) { + contentView!!.findViewById(array.keyAt(i)) + ?.setOnClickListener(ViewClickWrapper(dialog, array.valueAt(i))) + i++ + } + } + + getActivity()?.let { activity -> + DialogLifecycle.with(activity, dialog) + } + createListener?.onCreate(dialog) + } + return dialog!! + } + + open fun show() { + val activity = getActivity() + if (activity == null || activity.isFinishing || activity.isDestroyed) { + return + } + if (!isCreated()) { + create() + } + if (isShowing()) { + return + } + dialog?.show() + } + + open fun dismiss() { + val activity = getActivity() + if (activity == null || activity.isFinishing || activity.isDestroyed) { + return + } + dialog?.dismiss() + } + + override fun getContext(): Context { + return context + } + + open fun isCreated(): Boolean { + return dialog != null + } + + open fun isShowing(): Boolean { + return isCreated() && dialog!!.isShowing + } + + protected open fun createDialog(context: Context, @StyleRes themeId: Int): BaseDialog { + return BaseDialog(context, themeId) + } + + open fun post(runnable: Runnable) { + if (isShowing()) { + dialog?.post(runnable) + } else { + addOnShowListener(ShowPostWrapper(runnable)) + } + } + + open fun postDelayed(runnable: Runnable, delayMillis: Long) { + if (isShowing()) { + dialog?.postDelayed(runnable, delayMillis) + } else { + addOnShowListener(ShowPostDelayedWrapper(runnable, delayMillis)) + } + } + + open fun postAtTime(runnable: Runnable, uptimeMillis: Long) { + if (isShowing()) { + dialog?.postAtTime(runnable, uptimeMillis) + } else { + addOnShowListener(ShowPostAtTimeWrapper(runnable, uptimeMillis)) + } + } + + open fun getContentView(): View? { + return contentView + } + + override fun findViewById(@IdRes id: Int): V? { + if (contentView == null) { + throw IllegalStateException("are you ok?") + } + return contentView!!.findViewById(id) + } + + open fun getDialog(): BaseDialog? { + return dialog + } + } + + private class DialogLifecycle( + private var activity: Activity?, + private var dialog: BaseDialog? + ) : + ActivityLifecycleCallbacks, OnShowListener, OnDismissListener { + + companion object { + + fun with(activity: Activity, dialog: BaseDialog?) { + DialogLifecycle(activity, dialog) + } + } + + init { + this.dialog?.addOnShowListener(this) + this.dialog?.addOnDismissListener(this) + } + + private var dialogAnim: Int = 0 + + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {} + + override fun onActivityStarted(activity: Activity) {} + + override fun onActivityResumed(activity: Activity) { + if (activity !== activity) { + return + } + + dialog?.let { + if (!it.isShowing) { + return + } + + it.postDelayed({ + if (!it.isShowing) { + return@postDelayed + } + it.setWindowAnimations(dialogAnim) + }, 100) + } + } + + override fun onActivityPaused(activity: Activity) { + if (this.activity !== activity) { + return + } + + this.dialog?.let { + if (!it.isShowing) { + return + } + + dialogAnim = it.getWindowAnimations() + it.setWindowAnimations(AnimAction.ANIM_EMPTY) + } + } + + override fun onActivityStopped(activity: Activity) {} + + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {} + + override fun onActivityDestroyed(activity: Activity) { + if (this.activity !== activity) { + return + } + unregisterActivityLifecycleCallbacks() + this.activity = null + this.dialog?.let { + it.removeOnShowListener(this) + it.removeOnDismissListener(this) + if (it.isShowing) { + it.dismiss() + } + } + this.dialog = null + } + + override fun onShow(dialog: BaseDialog?) { + this.dialog = dialog + registerActivityLifecycleCallbacks() + } + + override fun onDismiss(dialog: BaseDialog?) { + this.dialog = null + unregisterActivityLifecycleCallbacks() + } + + private fun registerActivityLifecycleCallbacks() { + activity?.let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + it.registerActivityLifecycleCallbacks(this) + } else { + it.application.registerActivityLifecycleCallbacks(this) + } + } + } + + private fun unregisterActivityLifecycleCallbacks() { + activity?.let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + it.unregisterActivityLifecycleCallbacks(this) + } else { + it.application.unregisterActivityLifecycleCallbacks(this) + } + } + } + } + + private class ListenersWrapper(referent: T?) : + SoftReference(referent), DialogInterface.OnShowListener, + DialogInterface.OnCancelListener, + DialogInterface.OnDismissListener + where T : DialogInterface.OnShowListener, + T : DialogInterface.OnCancelListener, + T : DialogInterface.OnDismissListener { + + override fun onShow(dialog: DialogInterface?) { + get()?.onShow(dialog) + } + + override fun onCancel(dialog: DialogInterface?) { + get()?.onCancel(dialog) + } + + override fun onDismiss(dialog: DialogInterface?) { + get()?.onDismiss(dialog) + } + } + + private class ViewClickWrapper constructor( + private val dialog: BaseDialog?, + private val listener: OnClickListener? + ) : View.OnClickListener { + + override fun onClick(view: View) { + listener?.onClick(dialog, view) + } + } + + private class ShowListenerWrapper constructor(referent: DialogInterface.OnShowListener?) : + SoftReference(referent), OnShowListener { + + override fun onShow(dialog: BaseDialog?) { + get()?.onShow(dialog) + } + } + + private class CancelListenerWrapper constructor(referent: DialogInterface.OnCancelListener?) : + SoftReference(referent), OnCancelListener { + + override fun onCancel(dialog: BaseDialog?) { + get()?.onCancel(dialog) + } + } + + private class DismissListenerWrapper constructor(referent: DialogInterface.OnDismissListener?) : + SoftReference(referent), OnDismissListener { + + override fun onDismiss(dialog: BaseDialog?) { + get()?.onDismiss(dialog) + } + } + + private class KeyListenerWrapper constructor(private val listener: OnKeyListener?) : + DialogInterface.OnKeyListener { + + override fun onKey(dialog: DialogInterface?, keyCode: Int, event: KeyEvent?): Boolean { + if (listener == null || dialog !is BaseDialog) { + return false + } + return listener.onKey(dialog, event) + } + } + + private class ShowPostWrapper constructor(private val runnable: Runnable?) : OnShowListener { + + override fun onShow(dialog: BaseDialog?) { + if (runnable == null) { + return + } + dialog?.removeOnShowListener(this) + dialog?.post(runnable) + } + } + + private class ShowPostDelayedWrapper constructor( + private val runnable: Runnable?, + private val delayMillis: Long + ) : OnShowListener { + + override fun onShow(dialog: BaseDialog?) { + if (runnable == null) { + return + } + dialog?.removeOnShowListener(this) + dialog?.postDelayed(runnable, delayMillis) + } + } + + private class ShowPostAtTimeWrapper constructor( + private val runnable: Runnable, + private val uptimeMillis: Long + ) : OnShowListener { + + override fun onShow(dialog: BaseDialog?) { + dialog?.removeOnShowListener(this) + dialog?.postAtTime(runnable, uptimeMillis) + } + } + + interface OnClickListener { + + fun onClick(dialog: BaseDialog?, view: V) + } + + interface OnCreateListener { + + fun onCreate(dialog: BaseDialog?) + } + + interface OnShowListener { + + fun onShow(dialog: BaseDialog?) + } + + interface OnCancelListener { + + fun onCancel(dialog: BaseDialog?) + } + + interface OnDismissListener { + + fun onDismiss(dialog: BaseDialog?) + } + + interface OnKeyListener { + + fun onKey(dialog: BaseDialog?, event: KeyEvent?): Boolean + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseFragment.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseFragment.kt new file mode 100644 index 0000000..46c9c1d --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/BaseFragment.kt @@ -0,0 +1,166 @@ +package com.hjq.base + +import android.app.Activity +import android.app.Application +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.IdRes +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import com.hjq.base.BaseActivity.OnActivityCallback +import com.hjq.base.action.BundleAction +import com.hjq.base.action.ClickAction +import com.hjq.base.action.HandlerAction +import com.hjq.base.action.KeyboardAction + +abstract class BaseFragment
    : Fragment(), + HandlerAction, ClickAction, BundleAction, KeyboardAction { + + private var activity: A? = null + + private var rootView: View? = null + + private var loading: Boolean = false + + @Suppress("UNCHECKED_CAST") + override fun onAttach(context: Context) { + super.onAttach(context) + activity = requireActivity() as A + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + if (getLayoutId() <= 0) { + return null + } + loading = false + rootView = inflater.inflate(getLayoutId(), container, false) + initView() + return rootView + } + + override fun onResume() { + super.onResume() + if (!loading) { + loading = true + initData() + onFragmentResume(true) + return + } + + if (this.activity?.lifecycle?.currentState == Lifecycle.State.STARTED) { + onActivityResume() + } else { + onFragmentResume(false) + } + } + + protected open fun onFragmentResume(first: Boolean) {} + + protected open fun onActivityResume() {} + + override fun onDestroyView() { + super.onDestroyView() + rootView = null + } + + override fun onDestroy() { + super.onDestroy() + loading = false + removeCallbacks() + } + + override fun onDetach() { + super.onDetach() + activity = null + } + + open fun isLoading(): Boolean { + return loading + } + + override fun getView(): View? { + return rootView + } + + open fun getAttachActivity(): A? { + return activity + } + + open fun getApplication(): Application? { + activity?.let { return it.application } + return null + } + + protected abstract fun getLayoutId(): Int + + protected abstract fun initView() + + protected abstract fun initData() + + override fun findViewById(@IdRes id: Int): V? { + return rootView?.findViewById(id) + } + + override fun getBundle(): Bundle? { + return arguments + } + + open fun startActivity(clazz: Class) { + startActivity(Intent(context, clazz)) + } + + open fun startActivityForResult(clazz: Class, callback: OnActivityCallback?) { + activity?.startActivityForResult(clazz, callback) + } + + open fun startActivityForResult(intent: Intent, callback: OnActivityCallback?) { + activity?.startActivityForResult(intent, null, callback) + } + + open fun startActivityForResult(intent: Intent, options: Bundle?, callback: OnActivityCallback?) { + activity?.startActivityForResult(intent, options, callback) + } + + open fun finish() { + this.activity?.let { + if (it.isFinishing || it.isDestroyed) { + return + } + it.finish() + } + } + + open fun dispatchKeyEvent(event: KeyEvent?): Boolean { + val fragments: MutableList = childFragmentManager.fragments + for (fragment: Fragment? in fragments) { + if (fragment !is BaseFragment<*> || fragment.lifecycle.currentState != Lifecycle.State.RESUMED) { + continue + } + if (fragment.dispatchKeyEvent(event)) { + return true + } + } + return when (event?.action) { + KeyEvent.ACTION_DOWN -> onKeyDown(event.keyCode, event) + KeyEvent.ACTION_UP -> onKeyUp(event.keyCode, event) + else -> false + } + } + + open fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { + return false + } + + open fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { + return false + } + + override fun getContext(): Context? { + return activity + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/FragmentPagerAdapter.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/FragmentPagerAdapter.kt new file mode 100644 index 0000000..9d64bfc --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/FragmentPagerAdapter.kt @@ -0,0 +1,99 @@ +package com.hjq.base + +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter +import androidx.viewpager.widget.ViewPager +import java.util.* + +@Suppress("deprecation") +open class FragmentPagerAdapter constructor(manager: FragmentManager) : + FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { + + private val fragmentSet: MutableList = ArrayList() + + private val fragmentTitle: MutableList = ArrayList() + + private var showFragment: F? = null + + private var viewPager: ViewPager? = null + + private var lazyMode: Boolean = true + + constructor(activity: FragmentActivity) : this(activity.supportFragmentManager) + + constructor(fragment: Fragment) : this(fragment.childFragmentManager) + + override fun getItem(position: Int): F { + return fragmentSet[position] + } + + override fun getItemId(position: Int): Long { + return getItem(position).hashCode().toLong() + } + + override fun getCount(): Int { + return fragmentSet.size + } + + override fun getPageTitle(position: Int): CharSequence? { + return fragmentTitle[position] + } + + @Suppress("UNCHECKED_CAST") + override fun setPrimaryItem(container: ViewGroup, position: Int, `object`: Any) { + super.setPrimaryItem(container, position, `object`) + if (getShowFragment() !== `object`) { + showFragment = `object` as F + } + } + + @JvmOverloads + open fun addFragment(fragment: F, title: CharSequence? = null) { + fragmentSet.add(fragment) + fragmentTitle.add(title ?: "") + if (viewPager == null) { + return + } + notifyDataSetChanged() + viewPager?.offscreenPageLimit = if (lazyMode) count else 1 + } + + open fun getShowFragment(): F? { + return showFragment + } + + open fun getFragmentIndex(clazz: Class?): Int { + if (clazz == null) { + return -1 + } + for (i in fragmentSet.indices) { + if ((clazz.name == fragmentSet[i].javaClass.name)) { + return i + } + } + return -1 + } + + override fun startUpdate(container: ViewGroup) { + super.startUpdate(container) + if (container is ViewPager) { + viewPager = container + refreshLazyMode() + } + } + + open fun setLazyMode(lazy: Boolean) { + lazyMode = lazy + refreshLazyMode() + } + + private fun refreshLazyMode() { + if (viewPager == null) { + return + } + viewPager?.offscreenPageLimit = if (lazyMode) count else 1 + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ActivityAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ActivityAction.kt new file mode 100644 index 0000000..db8ed88 --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/ActivityAction.kt @@ -0,0 +1,40 @@ +package com.hjq.base.action + +import android.app.Activity +import android.content.Context +import android.content.ContextWrapper +import android.content.Intent + +interface ActivityAction { + + fun getContext(): Context + + fun getActivity(): Activity? { + var context: Context? = getContext() + do { + when (context) { + is Activity -> { + return context + } + is ContextWrapper -> { + context = context.baseContext + } + else -> { + return null + } + } + } while (context != null) + return null + } + + fun startActivity(clazz: Class) { + startActivity(Intent(getContext(), clazz)) + } + + fun startActivity(intent: Intent) { + if (getContext() !is Activity) { + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + getContext().startActivity(intent) + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/AnimAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/AnimAction.kt new file mode 100644 index 0000000..5710167 --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/AnimAction.kt @@ -0,0 +1,27 @@ +package com.hjq.base.action + +import com.hjq.base.R + +interface AnimAction { + + companion object { + + const val ANIM_DEFAULT: Int = -1 + + const val ANIM_EMPTY: Int = 0 + + val ANIM_SCALE: Int = R.style.ScaleAnimStyle + + val ANIM_IOS: Int = R.style.IOSAnimStyle + + const val ANIM_TOAST: Int = android.R.style.Animation_Toast + + val ANIM_TOP: Int = R.style.TopAnimStyle + + val ANIM_BOTTOM: Int = R.style.BottomAnimStyle + + val ANIM_LEFT: Int = R.style.LeftAnimStyle + + val ANIM_RIGHT: Int = R.style.RightAnimStyle + } +} \ No newline at end of file diff --git a/Android_Mireo/library/base/src/main/java/com/hjq/base/action/BundleAction.kt b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/BundleAction.kt new file mode 100644 index 0000000..1bd63ce --- /dev/null +++ b/Android_Mireo/library/base/src/main/java/com/hjq/base/action/BundleAction.kt @@ -0,0 +1,82 @@ +package com.hjq.base.action + +import android.os.Bundle +import android.os.Parcelable +import java.io.Serializable +import java.util.* + +interface BundleAction { + + fun getBundle(): Bundle? + + fun getInt(name: String): Int { + return getInt(name, 0) + } + + fun getInt(name: String, defaultValue: Int): Int { + val bundle: Bundle = getBundle() ?: return defaultValue + return bundle.getInt(name, defaultValue) + } + + fun getLong(name: String): Long { + return getLong(name, 0) + } + + fun getLong(name: String, defaultValue: Long): Long { + val bundle: Bundle = getBundle() ?: return defaultValue + return bundle.getLong(name, defaultValue) + } + + fun getFloat(name: String): Float { + return getFloat(name, 0f) + } + + fun getFloat(name: String, defaultValue: Float): Float { + val bundle: Bundle = getBundle() ?: return defaultValue + return bundle.getFloat(name, defaultValue) + } + + fun getDouble(name: String): Double { + return getDouble(name, 0.0) + } + + fun getDouble(name: String, defaultValue: Double): Double { + val bundle: Bundle = getBundle() ?: return defaultValue + return bundle.getDouble(name, defaultValue) + } + + fun getBoolean(name: String): Boolean { + return getBoolean(name, false) + } + + fun getBoolean(name: String, defaultValue: Boolean): Boolean { + val bundle: Bundle = getBundle() ?: return defaultValue + return bundle.getBoolean(name, defaultValue) + } + + fun getString(name: String): String? { + val bundle: Bundle = getBundle() ?: return null + return bundle.getString(name) + } + + fun

  • p^ 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 JRL&&e{{X?2!gT-u literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable-xxhdpi/update_app_top_bg.png b/Android_Mireo/app/src/main/res/drawable-xxhdpi/update_app_top_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7f812f8d3168ffed1b94453917a37ab3be9af708 GIT binary patch literal 189650 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 Va{l7N(pT_DK}JQoPSPys{{Y;Y<{bb4 literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/drawable/add_ic.xml b/Android_Mireo/app/src/main/res/drawable/add_ic.xml new file mode 100644 index 0000000..43eaf96 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/add_ic.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/arrows_bottom_ic.xml b/Android_Mireo/app/src/main/res/drawable/arrows_bottom_ic.xml new file mode 100644 index 0000000..e6d04ad --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/arrows_bottom_ic.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/arrows_left_ic.xml b/Android_Mireo/app/src/main/res/drawable/arrows_left_ic.xml new file mode 100644 index 0000000..c3361c8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/arrows_left_ic.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/arrows_right_ic.xml b/Android_Mireo/app/src/main/res/drawable/arrows_right_ic.xml new file mode 100644 index 0000000..71feb85 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/arrows_right_ic.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/arrows_top_ic.xml b/Android_Mireo/app/src/main/res/drawable/arrows_top_ic.xml new file mode 100644 index 0000000..821ae8b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/arrows_top_ic.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/avatar_placeholder_ic.xml b/Android_Mireo/app/src/main/res/drawable/avatar_placeholder_ic.xml new file mode 100644 index 0000000..a92bf8d --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/avatar_placeholder_ic.xml @@ -0,0 +1,64 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_bule_17.xml b/Android_Mireo/app/src/main/res/drawable/bg_bule_17.xml new file mode 100644 index 0000000..090ca67 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_bule_17.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_series.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_series.xml new file mode 100644 index 0000000..9d08a75 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_series.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_un_collection.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_un_collection.xml new file mode 100644 index 0000000..a683cee --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_dialog_un_collection.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_me_login.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_me_login.xml new file mode 100644 index 0000000..04f970e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_me_login.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_num_h.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_num_h.xml new file mode 100644 index 0000000..db734e6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_num_h.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_num_n.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_num_n.xml new file mode 100644 index 0000000..67afb7d --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_num_n.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_seekbar_player.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_seekbar_player.xml new file mode 100644 index 0000000..93f2b13 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_seekbar_player.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_shape_seekbar_player.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_shape_seekbar_player.xml new file mode 100644 index 0000000..0b473f2 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_shape_seekbar_player.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_text_think_again.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_text_think_again.xml new file mode 100644 index 0000000..794e760 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_text_think_again.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Android_Mireo/app/src/main/res/drawable/bg_example_text_un_collection.xml b/Android_Mireo/app/src/main/res/drawable/bg_example_text_un_collection.xml new file mode 100644 index 0000000..d5b8841 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_example_text_un_collection.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_powder_red_17.xml b/Android_Mireo/app/src/main/res/drawable/bg_powder_red_17.xml new file mode 100644 index 0000000..50c22a5 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_powder_red_17.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_seekbar_player.xml b/Android_Mireo/app/src/main/res/drawable/bg_seekbar_player.xml new file mode 100644 index 0000000..93f2b13 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_seekbar_player.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_thumb_seekbar_player.xml b/Android_Mireo/app/src/main/res/drawable/bg_thumb_seekbar_player.xml new file mode 100644 index 0000000..0b473f2 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_thumb_seekbar_player.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_unlocking.xml b/Android_Mireo/app/src/main/res/drawable/bg_unlocking.xml new file mode 100644 index 0000000..7121804 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_unlocking.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_unlocking_ads.xml b/Android_Mireo/app/src/main/res/drawable/bg_unlocking_ads.xml new file mode 100644 index 0000000..d8bf167 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_unlocking_ads.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/bg_white_20.xml b/Android_Mireo/app/src/main/res/drawable/bg_white_20.xml new file mode 100644 index 0000000..d8c4b4b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/bg_white_20.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/button_circle_selector.xml b/Android_Mireo/app/src/main/res/drawable/button_circle_selector.xml new file mode 100644 index 0000000..97ff0a7 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/button_circle_selector.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/button_rect_selector.xml b/Android_Mireo/app/src/main/res/drawable/button_rect_selector.xml new file mode 100644 index 0000000..2681932 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/button_rect_selector.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/camera_ic.xml b/Android_Mireo/app/src/main/res/drawable/camera_ic.xml new file mode 100644 index 0000000..ca10f5e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/camera_ic.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/checkbox_checked_ic.xml b/Android_Mireo/app/src/main/res/drawable/checkbox_checked_ic.xml new file mode 100644 index 0000000..3b54b67 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/checkbox_checked_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/checkbox_disable_ic.xml b/Android_Mireo/app/src/main/res/drawable/checkbox_disable_ic.xml new file mode 100644 index 0000000..6286230 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/checkbox_disable_ic.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/checkbox_selector.xml b/Android_Mireo/app/src/main/res/drawable/checkbox_selector.xml new file mode 100644 index 0000000..8b59d92 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/checkbox_selector.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/checkbox_selector_2.xml b/Android_Mireo/app/src/main/res/drawable/checkbox_selector_2.xml new file mode 100644 index 0000000..0478b0c --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/checkbox_selector_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/close_icon.xml b/Android_Mireo/app/src/main/res/drawable/close_icon.xml new file mode 100644 index 0000000..f2b1d4b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/close_icon.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/compound_normal_ic.xml b/Android_Mireo/app/src/main/res/drawable/compound_normal_ic.xml new file mode 100644 index 0000000..81dbf68 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/compound_normal_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/countdown_color_selector.xml b/Android_Mireo/app/src/main/res/drawable/countdown_color_selector.xml new file mode 100644 index 0000000..43a5372 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/countdown_color_selector.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/countdown_selector.xml b/Android_Mireo/app/src/main/res/drawable/countdown_selector.xml new file mode 100644 index 0000000..ba8a69c --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/countdown_selector.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/delete_ic.xml b/Android_Mireo/app/src/main/res/drawable/delete_ic.xml new file mode 100644 index 0000000..18baed8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/delete_ic.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/dialog_input_bg.xml b/Android_Mireo/app/src/main/res/drawable/dialog_input_bg.xml new file mode 100644 index 0000000..1a7c53b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/dialog_input_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/example_bg.xml b/Android_Mireo/app/src/main/res/drawable/example_bg.xml new file mode 100644 index 0000000..e66f37d --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/example_bg.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/guide_indicator_selected.xml b/Android_Mireo/app/src/main/res/drawable/guide_indicator_selected.xml new file mode 100644 index 0000000..6c1cb31 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/guide_indicator_selected.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/guide_indicator_unselected.xml b/Android_Mireo/app/src/main/res/drawable/guide_indicator_unselected.xml new file mode 100644 index 0000000..aad2111 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/guide_indicator_unselected.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_explore_selector.xml b/Android_Mireo/app/src/main/res/drawable/home_explore_selector.xml new file mode 100644 index 0000000..d9c1ebf --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_explore_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_home_off_ic.xml b/Android_Mireo/app/src/main/res/drawable/home_home_off_ic.xml new file mode 100644 index 0000000..e97da5e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_home_off_ic.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_home_on_ic.xml b/Android_Mireo/app/src/main/res/drawable/home_home_on_ic.xml new file mode 100644 index 0000000..a5e0757 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_home_on_ic.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_home_selector.xml b/Android_Mireo/app/src/main/res/drawable/home_home_selector.xml new file mode 100644 index 0000000..9f61cc7 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_home_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_me_selector.xml b/Android_Mireo/app/src/main/res/drawable/home_me_selector.xml new file mode 100644 index 0000000..af770d3 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_me_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_my_list_selector.xml b/Android_Mireo/app/src/main/res/drawable/home_my_list_selector.xml new file mode 100644 index 0000000..7b40a99 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_my_list_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_rewards_selector.xml b/Android_Mireo/app/src/main/res/drawable/home_rewards_selector.xml new file mode 100644 index 0000000..2839d79 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_rewards_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_search_bar_gray_bg.xml b/Android_Mireo/app/src/main/res/drawable/home_search_bar_gray_bg.xml new file mode 100644 index 0000000..067418e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_search_bar_gray_bg.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/home_search_bar_transparent_bg.xml b/Android_Mireo/app/src/main/res/drawable/home_search_bar_transparent_bg.xml new file mode 100644 index 0000000..29b243b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/home_search_bar_transparent_bg.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/image_error_ic.xml b/Android_Mireo/app/src/main/res/drawable/image_error_ic.xml new file mode 100644 index 0000000..2a70e3c --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/image_error_ic.xml @@ -0,0 +1,40 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/image_loading_ic.xml b/Android_Mireo/app/src/main/res/drawable/image_loading_ic.xml new file mode 100644 index 0000000..a1987e8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/image_loading_ic.xml @@ -0,0 +1,43 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/image_preview_indicator.xml b/Android_Mireo/app/src/main/res/drawable/image_preview_indicator.xml new file mode 100644 index 0000000..bcae118 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/image_preview_indicator.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/info_ic.xml b/Android_Mireo/app/src/main/res/drawable/info_ic.xml new file mode 100644 index 0000000..2c330fa --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/info_ic.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/login_qq_ic.xml b/Android_Mireo/app/src/main/res/drawable/login_qq_ic.xml new file mode 100644 index 0000000..c0509ee --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/login_qq_ic.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/login_wechat_ic.xml b/Android_Mireo/app/src/main/res/drawable/login_wechat_ic.xml new file mode 100644 index 0000000..63a5e3c --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/login_wechat_ic.xml @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/my_loading.xml b/Android_Mireo/app/src/main/res/drawable/my_loading.xml new file mode 100644 index 0000000..71f80cc --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/my_loading.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/my_refresh_head.xml b/Android_Mireo/app/src/main/res/drawable/my_refresh_head.xml new file mode 100644 index 0000000..f1c2aa1 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/my_refresh_head.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/phone_ic.xml b/Android_Mireo/app/src/main/res/drawable/phone_ic.xml new file mode 100644 index 0000000..bcd8c67 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/phone_ic.xml @@ -0,0 +1,24 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/progress_gradient_bg.xml b/Android_Mireo/app/src/main/res/drawable/progress_gradient_bg.xml new file mode 100644 index 0000000..3ba3755 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/progress_gradient_bg.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/progress_loading_bg.xml b/Android_Mireo/app/src/main/res/drawable/progress_loading_bg.xml new file mode 100644 index 0000000..b469f2e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/progress_loading_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/radiobutton_checked_ic.xml b/Android_Mireo/app/src/main/res/drawable/radiobutton_checked_ic.xml new file mode 100644 index 0000000..8ed357f --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/radiobutton_checked_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/radiobutton_disable_ic.xml b/Android_Mireo/app/src/main/res/drawable/radiobutton_disable_ic.xml new file mode 100644 index 0000000..2686fb6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/radiobutton_disable_ic.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/radiobutton_selector.xml b/Android_Mireo/app/src/main/res/drawable/radiobutton_selector.xml new file mode 100644 index 0000000..f9a9ae3 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/radiobutton_selector.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/reboot_ic.xml b/Android_Mireo/app/src/main/res/drawable/reboot_ic.xml new file mode 100644 index 0000000..5c44055 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/reboot_ic.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/roll_accent_bg.xml b/Android_Mireo/app/src/main/res/drawable/roll_accent_bg.xml new file mode 100644 index 0000000..ee43ce2 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/roll_accent_bg.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/safe_ic.xml b/Android_Mireo/app/src/main/res/drawable/safe_ic.xml new file mode 100644 index 0000000..c243d7e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/safe_ic.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/search_ic.xml b/Android_Mireo/app/src/main/res/drawable/search_ic.xml new file mode 100644 index 0000000..99a573e --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/search_ic.xml @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_ic.xml new file mode 100644 index 0000000..5cb14c7 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_ic.xml @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_link_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_link_ic.xml new file mode 100644 index 0000000..56bbc99 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_link_ic.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_moment_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_moment_ic.xml new file mode 100644 index 0000000..cba78f6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_moment_ic.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_qq_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_qq_ic.xml new file mode 100644 index 0000000..4f82c71 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_qq_ic.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_qzone_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_qzone_ic.xml new file mode 100644 index 0000000..dacfbc8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_qzone_ic.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/share_wechat_ic.xml b/Android_Mireo/app/src/main/res/drawable/share_wechat_ic.xml new file mode 100644 index 0000000..28afc05 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/share_wechat_ic.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/status_empty_ic.xml b/Android_Mireo/app/src/main/res/drawable/status_empty_ic.xml new file mode 100644 index 0000000..bd74466 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/status_empty_ic.xml @@ -0,0 +1,709 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/status_error_ic.xml b/Android_Mireo/app/src/main/res/drawable/status_error_ic.xml new file mode 100644 index 0000000..952e92f --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/status_error_ic.xml @@ -0,0 +1,799 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/status_network_ic.xml b/Android_Mireo/app/src/main/res/drawable/status_network_ic.xml new file mode 100644 index 0000000..17a339b --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/status_network_ic.xml @@ -0,0 +1,723 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/status_order_ic.xml b/Android_Mireo/app/src/main/res/drawable/status_order_ic.xml new file mode 100644 index 0000000..def8674 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/status_order_ic.xml @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/succeed_ic.xml b/Android_Mireo/app/src/main/res/drawable/succeed_ic.xml new file mode 100644 index 0000000..9c0ed11 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/succeed_ic.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/tips_error_ic.xml b/Android_Mireo/app/src/main/res/drawable/tips_error_ic.xml new file mode 100644 index 0000000..85ea1c7 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/tips_error_ic.xml @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/tips_finish_ic.xml b/Android_Mireo/app/src/main/res/drawable/tips_finish_ic.xml new file mode 100644 index 0000000..39c7c6d --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/tips_finish_ic.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/tips_warning_ic.xml b/Android_Mireo/app/src/main/res/drawable/tips_warning_ic.xml new file mode 100644 index 0000000..be868ec --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/tips_warning_ic.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/transparent_selector.xml b/Android_Mireo/app/src/main/res/drawable/transparent_selector.xml new file mode 100644 index 0000000..e10d84f --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/transparent_selector.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_brightness_high_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_brightness_high_ic.xml new file mode 100644 index 0000000..7a695f1 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_brightness_high_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_brightness_low_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_brightness_low_ic.xml new file mode 100644 index 0000000..aed3511 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_brightness_low_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_brightness_medium_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_brightness_medium_ic.xml new file mode 100644 index 0000000..d751f86 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_brightness_medium_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_lock_close_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_lock_close_ic.xml new file mode 100644 index 0000000..c225f08 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_lock_close_ic.xml @@ -0,0 +1,11 @@ + + + + diff --git a/Android_Mireo/app/src/main/res/drawable/video_lock_open_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_lock_open_ic.xml new file mode 100644 index 0000000..b5a5f28 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_lock_open_ic.xml @@ -0,0 +1,11 @@ + + + + diff --git a/Android_Mireo/app/src/main/res/drawable/video_progress_ball_bg.xml b/Android_Mireo/app/src/main/res/drawable/video_progress_ball_bg.xml new file mode 100644 index 0000000..7dc9c36 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_progress_ball_bg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_progress_bg.xml b/Android_Mireo/app/src/main/res/drawable/video_progress_bg.xml new file mode 100644 index 0000000..326bfaa --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_progress_bg.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_schedule_forward_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_schedule_forward_ic.xml new file mode 100644 index 0000000..4477558 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_schedule_forward_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_schedule_rewind_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_schedule_rewind_ic.xml new file mode 100644 index 0000000..828f064 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_schedule_rewind_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_volume_high_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_volume_high_ic.xml new file mode 100644 index 0000000..29bcc6f --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_volume_high_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_volume_low_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_volume_low_ic.xml new file mode 100644 index 0000000..0ebdbec --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_volume_low_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_volume_medium_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_volume_medium_ic.xml new file mode 100644 index 0000000..b913cd4 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_volume_medium_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/video_volume_mute_ic.xml b/Android_Mireo/app/src/main/res/drawable/video_volume_mute_ic.xml new file mode 100644 index 0000000..d50b605 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/video_volume_mute_ic.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/videocam_ic.xml b/Android_Mireo/app/src/main/res/drawable/videocam_ic.xml new file mode 100644 index 0000000..faf3992 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/videocam_ic.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/drawable/white_selector.xml b/Android_Mireo/app/src/main/res/drawable/white_selector.xml new file mode 100644 index 0000000..c378a12 --- /dev/null +++ b/Android_Mireo/app/src/main/res/drawable/white_selector.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/about_activity.xml b/Android_Mireo/app/src/main/res/layout/about_activity.xml new file mode 100644 index 0000000..2c6b06e --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/about_activity.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/activity_video_play_dh.xml b/Android_Mireo/app/src/main/res/layout/activity_video_play_dh.xml new file mode 100644 index 0000000..aabee81 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/activity_video_play_dh.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/browser_activity.xml b/Android_Mireo/app/src/main/res/layout/browser_activity.xml new file mode 100644 index 0000000..7c64611 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/browser_activity.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/browser_fragment.xml b/Android_Mireo/app/src/main/res/layout/browser_fragment.xml new file mode 100644 index 0000000..e1aff96 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/browser_fragment.xml @@ -0,0 +1,27 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/custom_bubble_attach_popup.xml b/Android_Mireo/app/src/main/res/layout/custom_bubble_attach_popup.xml new file mode 100644 index 0000000..4c73bdb --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/custom_bubble_attach_popup.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/custom_progress_dialog_view_dh.xml b/Android_Mireo/app/src/main/res/layout/custom_progress_dialog_view_dh.xml new file mode 100644 index 0000000..40d4519 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/custom_progress_dialog_view_dh.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_detail_player_view.xml b/Android_Mireo/app/src/main/res/layout/example_detail_player_view.xml new file mode 100644 index 0000000..b732530 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_detail_player_view.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_detail_player_view_controller.xml b/Android_Mireo/app/src/main/res/layout/example_detail_player_view_controller.xml new file mode 100644 index 0000000..eae0ba5 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_detail_player_view_controller.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_dialog_series.xml b/Android_Mireo/app/src/main/res/layout/example_dialog_series.xml new file mode 100644 index 0000000..f30f87d --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_dialog_series.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_dialog_un_collection.xml b/Android_Mireo/app/src/main/res/layout/example_dialog_un_collection.xml new file mode 100644 index 0000000..fb7628f --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_dialog_un_collection.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_emptyview.xml b/Android_Mireo/app/src/main/res/layout/example_emptyview.xml new file mode 100644 index 0000000..a045fe6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_emptyview.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_item_detail.xml b/Android_Mireo/app/src/main/res/layout/example_item_detail.xml new file mode 100644 index 0000000..6fcddcd --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_item_detail.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_item_num_data.xml b/Android_Mireo/app/src/main/res/layout/example_item_num_data.xml new file mode 100644 index 0000000..ee70b7f --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_item_num_data.xml @@ -0,0 +1,43 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_item_recommend.xml b/Android_Mireo/app/src/main/res/layout/example_item_recommend.xml new file mode 100644 index 0000000..3deb45f --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_item_recommend.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_item_series_top.xml b/Android_Mireo/app/src/main/res/layout/example_item_series_top.xml new file mode 100644 index 0000000..b94d19f --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_item_series_top.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_network_error.xml b/Android_Mireo/app/src/main/res/layout/example_network_error.xml new file mode 100644 index 0000000..e0a7e78 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_network_error.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_recommend_player_view.xml b/Android_Mireo/app/src/main/res/layout/example_recommend_player_view.xml new file mode 100644 index 0000000..320a9b7 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_recommend_player_view.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_recommend_player_view_controller.xml b/Android_Mireo/app/src/main/res/layout/example_recommend_player_view_controller.xml new file mode 100644 index 0000000..7ab6ce8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_recommend_player_view_controller.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/example_refresh_head.xml b/Android_Mireo/app/src/main/res/layout/example_refresh_head.xml new file mode 100644 index 0000000..e1e8462 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/example_refresh_head.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/find_fragment.xml b/Android_Mireo/app/src/main/res/layout/find_fragment.xml new file mode 100644 index 0000000..225ed24 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/find_fragment.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/fragment_categories_tab.xml b/Android_Mireo/app/src/main/res/layout/fragment_categories_tab.xml new file mode 100644 index 0000000..f9391e3 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/fragment_categories_tab.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/fragment_list_tab.xml b/Android_Mireo/app/src/main/res/layout/fragment_list_tab.xml new file mode 100644 index 0000000..c757f15 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/fragment_list_tab.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/home_activity.xml b/Android_Mireo/app/src/main/res/layout/home_activity.xml new file mode 100644 index 0000000..3086f2b --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/home_activity.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/home_banner_item.xml b/Android_Mireo/app/src/main/res/layout/home_banner_item.xml new file mode 100644 index 0000000..491b0eb --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/home_banner_item.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/home_fragment.xml b/Android_Mireo/app/src/main/res/layout/home_fragment.xml new file mode 100644 index 0000000..3971258 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/home_fragment.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/home_navigation_item.xml b/Android_Mireo/app/src/main/res/layout/home_navigation_item.xml new file mode 100644 index 0000000..52fd215 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/home_navigation_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/image_preview_item.xml b/Android_Mireo/app/src/main/res/layout/image_preview_item.xml new file mode 100644 index 0000000..c617d3e --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/image_preview_item.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/input_dialog.xml b/Android_Mireo/app/src/main/res/layout/input_dialog.xml new file mode 100644 index 0000000..fd9dd74 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/input_dialog.xml @@ -0,0 +1,16 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_home_critically.xml b/Android_Mireo/app/src/main/res/layout/item_home_critically.xml new file mode 100644 index 0000000..de6dfe0 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_home_critically.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_home_genres.xml b/Android_Mireo/app/src/main/res/layout/item_home_genres.xml new file mode 100644 index 0000000..d7a8bd3 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_home_genres.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_home_short.xml b/Android_Mireo/app/src/main/res/layout/item_home_short.xml new file mode 100644 index 0000000..28008e1 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_home_short.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_home_top.xml b/Android_Mireo/app/src/main/res/layout/item_home_top.xml new file mode 100644 index 0000000..62c4532 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_home_top.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_list_tab.xml b/Android_Mireo/app/src/main/res/layout/item_list_tab.xml new file mode 100644 index 0000000..674f3a6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_list_tab.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_me_history.xml b/Android_Mireo/app/src/main/res/layout/item_me_history.xml new file mode 100644 index 0000000..100ac27 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_me_history.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_search_hot.xml b/Android_Mireo/app/src/main/res/layout/item_search_hot.xml new file mode 100644 index 0000000..38f92b6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_search_hot.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/item_search_search.xml b/Android_Mireo/app/src/main/res/layout/item_search_search.xml new file mode 100644 index 0000000..6c78509 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/item_search_search.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/layout_controller_player_dh.xml b/Android_Mireo/app/src/main/res/layout/layout_controller_player_dh.xml new file mode 100644 index 0000000..8291f06 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/layout_controller_player_dh.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/layout_home_top_item.xml b/Android_Mireo/app/src/main/res/layout/layout_home_top_item.xml new file mode 100644 index 0000000..7189a32 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/layout_home_top_item.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/layout_item_video_dh.xml b/Android_Mireo/app/src/main/res/layout/layout_item_video_dh.xml new file mode 100644 index 0000000..b7aefbb --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/layout_item_video_dh.xml @@ -0,0 +1,19 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/layout_progress_dh.xml b/Android_Mireo/app/src/main/res/layout/layout_progress_dh.xml new file mode 100644 index 0000000..d8f5a10 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/layout_progress_dh.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/line_layout.xml b/Android_Mireo/app/src/main/res/layout/line_layout.xml new file mode 100644 index 0000000..d8f5a10 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/line_layout.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/message_dialog.xml b/Android_Mireo/app/src/main/res/layout/message_dialog.xml new file mode 100644 index 0000000..ea03cf5 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/message_dialog.xml @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/message_fragment.xml b/Android_Mireo/app/src/main/res/layout/message_fragment.xml new file mode 100644 index 0000000..aede3b9 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/message_fragment.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/mine_fragment.xml b/Android_Mireo/app/src/main/res/layout/mine_fragment.xml new file mode 100644 index 0000000..aae68b8 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/mine_fragment.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/setting_activity.xml b/Android_Mireo/app/src/main/res/layout/setting_activity.xml new file mode 100644 index 0000000..93ebdd2 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/setting_activity.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/splash_activity.xml b/Android_Mireo/app/src/main/res/layout/splash_activity.xml new file mode 100644 index 0000000..83dd830 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/splash_activity.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/status_activity.xml b/Android_Mireo/app/src/main/res/layout/status_activity.xml new file mode 100644 index 0000000..aa450b6 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/status_activity.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/tab_item_design.xml b/Android_Mireo/app/src/main/res/layout/tab_item_design.xml new file mode 100644 index 0000000..4c53a74 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/tab_item_design.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/tab_item_sliding.xml b/Android_Mireo/app/src/main/res/layout/tab_item_sliding.xml new file mode 100644 index 0000000..722144a --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/tab_item_sliding.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/tips_dialog.xml b/Android_Mireo/app/src/main/res/layout/tips_dialog.xml new file mode 100644 index 0000000..f652dde --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/tips_dialog.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/ui_dialog.xml b/Android_Mireo/app/src/main/res/layout/ui_dialog.xml new file mode 100644 index 0000000..53ef48f --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/ui_dialog.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/video_play_activity.xml b/Android_Mireo/app/src/main/res/layout/video_play_activity.xml new file mode 100644 index 0000000..3ae07eb --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/video_play_activity.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/wait_dialog.xml b/Android_Mireo/app/src/main/res/layout/wait_dialog.xml new file mode 100644 index 0000000..cbae7aa --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/wait_dialog.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/widget_player_view.xml b/Android_Mireo/app/src/main/res/layout/widget_player_view.xml new file mode 100644 index 0000000..2e7e0f0 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/widget_player_view.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/layout/widget_status_layout.xml b/Android_Mireo/app/src/main/res/layout/widget_status_layout.xml new file mode 100644 index 0000000..a6b9d49 --- /dev/null +++ b/Android_Mireo/app/src/main/res/layout/widget_status_layout.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android_Mireo/app/src/main/res/mipmap-xhdpi/launcher_ic.png b/Android_Mireo/app/src/main/res/mipmap-xhdpi/launcher_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..b48d43fcf7254462a00d4af538af866b444211af GIT binary patch literal 19156 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 Pt^rgOH03K~Enxo(wRu); literal 0 HcmV?d00001 diff --git a/Android_Mireo/app/src/main/res/mipmap-xxhdpi/bg_splash.webp b/Android_Mireo/app/src/main/res/mipmap-xxhdpi/bg_splash.webp new file mode 100644 index 0000000000000000000000000000000000000000..7a5472ab0a9b8064563c3e02d9cca2994d9c398b GIT binary patch literal 760178 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