Administrator
2021-11-15 63e7aa59d22ada28fd14d39900f41a2e1ed2c325
启动页 及部分资源、依赖和框架文件
207 files added
17 files modified
22 files deleted
2641 ■■■■ changed files
app/build.gradle 21 ●●●●● patch | view | raw | blame | history
app/libs/alipaySdk-15.7.5.aar patch | view | raw | blame | history
app/proguard-rules.pro 6 ●●●● patch | view | raw | blame | history
app/src/main/AndroidManifest.xml 38 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/MyApplication.java 36 ●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java 33 ●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/listener/CustomClickListener.java 37 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java 24 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/dashboard/DashboardFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/dashboard/DashboardViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/home/HomeFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/home/HomeViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/login/LoggedInUser.java 10 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/login/LoginDataSource.java 7 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java 30 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java 278 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/dashboard/DashboardFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/dashboard/DashboardViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/notifications/NotificationsFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/main/notifications/NotificationsViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/notifications/NotificationsFragment.java 44 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/notifications/NotificationsViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java 93 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/ui/splash/SplashViewModel.java 87 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/util/AlgorithmUtils.java 75 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/util/Configuration.java 48 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/runt/open/mvvm/util/SpUtils.java 4 ●●●● patch | view | raw | blame | history
app/src/main/res/anim/anima_make_none.xml 16 ●●●●● patch | view | raw | blame | history
app/src/main/res/color/home_nav_color.xml 5 ●●●●● patch | view | raw | blame | history
app/src/main/res/color/verify_code.xml 5 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/bg_circle_default.xml 24 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/bg_white.xml 27 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/bg_white_circle.xml 30 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_blue_border.xml 37 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_blue_circle_border.xml 37 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_blue_corner.xml 31 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_circle.xml 34 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_circle_blue.xml 31 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_circle_red.xml 25 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_gray_border.xml 37 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_gray_circle.xml 24 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_white_lb_corner.xml 36 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/btn_white_rb_corner.xml 35 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/enable_corner_border.xml 38 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/theme_corner_border.xml 38 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v21/white_corner_border.xml 38 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable-v24/ic_launcher_foreground.xml 30 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_black_circle.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_blue_circle.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_enable_circle.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_enable_circle_border.xml 15 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_gradient_blue.xml 12 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_gradient_gray.xml 12 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_num.xml 25 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_red_border_circle.xml 14 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_red_circle.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_seekbar_progress_drawable.xml 26 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_them_circle.xml 12 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_theme_border.xml 14 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_white.xml 21 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_white_circle.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_white_corner.xml 11 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/bg_white_corner_8.xml 5 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/calender_last.xml 7 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/calender_next.xml 7 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/check_selector.xml 9 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/enable_corner_border.xml 33 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/ic_dashboard_black_24dp.xml 9 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/ic_home_black_24dp.xml 9 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/ic_launcher_background.xml 134 ●●●● patch | view | raw | blame | history
app/src/main/res/drawable/ic_notifications_black_24dp.xml 9 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/item_check_pass.xml 7 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/picture_icon_delete.png patch | view | raw | blame | history
app/src/main/res/drawable/picture_icon_shadow_bg.png patch | view | raw | blame | history
app/src/main/res/drawable/picture_icon_video.png patch | view | raw | blame | history
app/src/main/res/drawable/theme_corner_border.xml 32 ●●●●● patch | view | raw | blame | history
app/src/main/res/drawable/white_corner_border.xml 31 ●●●●● patch | view | raw | blame | history
app/src/main/res/layout/activity_splash.xml 21 ●●●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_dashboard.xml 2 ●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_home.xml 2 ●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_notifications.xml 2 ●●● patch | view | raw | blame | history
app/src/main/res/layout/item_btn_text_with_text.xml 74 ●●●●● patch | view | raw | blame | history
app/src/main/res/menu/bottom_nav_menu.xml 24 ●●●● patch | view | raw | blame | history
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml 5 ●●●●● patch | view | raw | blame | history
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml 5 ●●●●● patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/arrow_bottom_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/arrow_bottom_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/arrow_top_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/arrow_top_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/bg_seekbar_display1.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/bg_seekbar_display2.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/data_null.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_add_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_arrow_back_black_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_arrow_back_white_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_launcher.webp patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_launcher_round.webp patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_stay_primary_landscape_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/ic_stay_primary_portrait_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_delete.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_more_hor_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_more_hor_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_more_vert_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_more_vert_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_seekbar_thumb.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_white_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-hdpi/icon_white_setting.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/arrow_bottom_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/arrow_bottom_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/arrow_top_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/arrow_top_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/data_null.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_add_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_arrow_back_black_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_arrow_back_white_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_launcher.webp patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_launcher_round.webp patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_stay_primary_landscape_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/ic_stay_primary_portrait_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_more_hor_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_more_hor_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_more_vert_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_more_vert_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_white_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-mdpi/icon_white_setting.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/alipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/arrow_bottom_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/arrow_bottom_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/arrow_right.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/arrow_top_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/arrow_top_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/birth.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/coin.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/coin_d.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/data_null.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/default_head.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_add_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_arrow_back_black_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_arrow_back_white_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_delete.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_launcher.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_stay_primary_landscape_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/ic_stay_primary_portrait_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_coin.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_delete.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_more_hor_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_more_hor_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_more_vert_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_more_vert_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_white_back.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_white_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/icon_white_setting.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/location_dark.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/location_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/select.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/selected.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/sign.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/top_left_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/top_left_g.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/top_right_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/top_right_g.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/user_back.png patch | view | raw | blame | history
app/src/main/res/mipmap-xhdpi/weipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/alipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/app_icon.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/arrow_bottom_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/arrow_bottom_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/arrow_right.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/arrow_top_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/arrow_top_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/bg_bozhong.jpg patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/bg_uav.jpg patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/bg_xiaomai.jpg patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/bg_yumi.jpg patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/birth.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/data_null.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/default_head.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/female.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_add_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_arrow_back_black_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_arrow_back_white_24dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_launcher.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_stay_primary_landscape_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/ic_stay_primary_portrait_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_coin.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_more_hor_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_more_hor_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_more_vert_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_more_vert_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_white_back.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_white_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/icon_white_setting.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/location_dark.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/location_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/male.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/select.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/selected.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/sign.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/top_left_g.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/top_right_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxhdpi/weipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/alipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/arrow_bottom_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/arrow_bottom_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/arrow_right.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/arrow_top_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/arrow_top_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/birth.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/data_null.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/default_head.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/female.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/ic_add_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/ic_stay_primary_landscape_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/ic_stay_primary_portrait_black_48dp.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_coin.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_home.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_more_hor_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_more_hor_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_more_vert_black.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_more_vert_white.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_news.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_white_back.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_white_mine.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/icon_white_setting.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/location_dark.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/location_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/male.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/select.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/selected.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/top_left_g.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/top_right_e.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/weipay.png patch | view | raw | blame | history
app/src/main/res/mipmap-xxxhdpi/welcom.png patch | view | raw | blame | history
app/src/main/res/navigation/mobile_navigation.xml 6 ●●●● patch | view | raw | blame | history
app/src/main/res/values/colors.xml 108 ●●●●● patch | view | raw | blame | history
app/src/main/res/values/dimens.xml 45 ●●●●● patch | view | raw | blame | history
app/src/main/res/values/styles.xml 51 ●●●●● patch | view | raw | blame | history
app/src/main/res/values/themes.xml 2 ●●●●● patch | view | raw | blame | history
settings.gradle 2 ●●●●● patch | view | raw | blame | history
app/build.gradle
@@ -38,10 +38,24 @@
    buildFeatures {
        viewBinding true
    }
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            def viron
            if (buildType.name.equals('release')) {
                viron = "正式版";
            }else if (buildType.name.equals('debug')) {
                viron = "开发版";
            }
            outputFileName =  "MVVM开源项目-" + viron + "-v" +
                    defaultConfig.versionName +"-" + defaultConfig.versionCode +"-" + new Date().format("MMddHHmm", TimeZone.getTimeZone("UTC"))+
                    ".apk"
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
@@ -63,4 +77,9 @@
    implementation 'com.permissionx.guolindev:permissionx:1.2.2'    //权限依赖让你推广你就发群里?没有别的群了?
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
    implementation 'com.pangle.cn:ads-sdk-pro:4.0.2.2'//字节跳动  穿山甲广告
    implementation 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
    implementation 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
    implementation 'com.facebook.rebound:rebound:0.3.6'//Rebound  “弹簧”动画效果的第三方工具包,由FaceBook
    implementation 'com.github.zhaolei9527:BottomMenu:v1.0.1'//底部菜单弹框
}
app/libs/alipaySdk-15.7.5.aar
Binary files differ
app/proguard-rules.pro
@@ -18,4 +18,8 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile
#穿山甲混淆代码
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.pgl.sys.ces.* {*;}
app/src/main/AndroidManifest.xml
@@ -1,16 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.runt.open.mvvm" >
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!--写入SD卡的权限:如果你希望保存相机拍照后的照片-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--读取SD卡的权限:打开相册选取图片所必须的权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_LOGS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:icon="@mipmap/app_icon"
        android:name=".MyApplication"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/Theme.OpemMvvm" >
        <activity
            android:name=".MainActivity"
            android:name=".ui.splash.SplashActivity"
            android:exported="true"
            android:label="@string/app_name" >
            <intent-filter>
@@ -19,6 +41,16 @@
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"
            android:launchMode="singleTask"
            tools:ignore="WrongManifestParent"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="com.zfwl.merchant.activities.MainActivity" />
            </intent-filter>
        </activity>
    </application>
</manifest>
app/src/main/java/com/runt/open/mvvm/MyApplication.java
@@ -8,6 +8,9 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bytedance.sdk.openadsdk.TTAdConfig;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.runt.open.mvvm.util.MyLog;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.header.ClassicsHeader;
@@ -17,6 +20,7 @@
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshFooterCreator;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshHeaderCreator;
import com.tencent.bugly.crashreport.CrashReport;
import java.util.ArrayList;
import java.util.List;
@@ -42,6 +46,7 @@
    @Override
    public void onCreate() {
        super.onCreate();
        MyLog.i(TAG,"onCreate");
        application = this;
        //CrashReport.initCrashReport(getApplicationContext(), "8d88679ae9", false);//注册bugly
        //设置全局的Header构建器
@@ -109,6 +114,29 @@
                }
            }
        });
        CrashReport.initCrashReport(getApplicationContext(), "8d88679ae9", false);//注册bugly
        TTAdConfig.Builder builder = new TTAdConfig.Builder()
                .appId("5106813")
                .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView
                .appName(getString(R.string.app_name))
                .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
                .allowShowNotify(true) //是否允许sdk展示通知栏提示
                .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
                .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允许直接下载的网络状态集合
                .supportMultiProcess(true) //是否支持多进程,true支持
                .asyncInit(true) ;//异步初始化sdk,开启可减少初始化耗时
        //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
        TTAdSdk.init(this, builder.build(), new TTAdSdk.InitCallback() {
            @Override
            public void success() {
                MyLog.i(TAG,"TTAdSdk success");
            }
            @Override
            public void fail(int i, String s) {
                MyLog.e(TAG,"TTAdSdk fail");
            }
        });
    }
    /**
@@ -121,14 +149,6 @@
        System.exit(0);
    }
    public void clearActivities(){
        for(Activity activity:activities){
            /*if(activity instanceof LoginActivity){
                continue;
            }*/
            activity.finish();
        }
    }
    public boolean isInfront(){
        return isInfront;
app/src/main/java/com/runt/open/mvvm/base/activities/BaseActivity.java
@@ -2,17 +2,11 @@
import android.Manifest;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -25,7 +19,6 @@
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import androidx.lifecycle.ViewModelProvider;
import androidx.viewbinding.ViewBinding;
@@ -33,32 +26,12 @@
import com.runt.open.mvvm.R;
import com.runt.open.mvvm.base.model.BaseViewModel;
import com.runt.open.mvvm.base.model.ViewModelFactory;
import com.runt.open.mvvm.data.ApkUpGradeResult;
import com.runt.open.mvvm.util.MyLog;
import com.runt.open.mvvm.util.SpUtils;
import com.permissionx.guolindev.PermissionX;
import com.permissionx.guolindev.callback.ExplainReasonCallbackWithBeforeParam;
import com.permissionx.guolindev.callback.ForwardToSettingsCallback;
import com.permissionx.guolindev.callback.RequestCallback;
import com.permissionx.guolindev.request.ExplainScope;
import com.permissionx.guolindev.request.ForwardScope;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.util.Date;
import java.util.List;
import dmax.dialog.SpotsDialog;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
/**
 * activity 封装
@@ -134,6 +107,12 @@
    public abstract void initViews();
    public boolean isNull(Object object){
        return object == null || object.toString().trim().equals("") || object.equals("null");
    }
    AlertDialog loadingDialog;
    /**
     * 显示加载弹框
app/src/main/java/com/runt/open/mvvm/listener/CustomClickListener.java
New file
@@ -0,0 +1,37 @@
package com.runt.open.mvvm.listener;
import android.view.View;
/**
 * My father is Object, ites purpose of
 *
 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-4-14.
 */
public abstract class CustomClickListener implements View.OnClickListener {
    private long mLastClickTime;
    private long timeInterval = 500L;
    public CustomClickListener() {
    }
    public CustomClickListener(long interval) {
        this.timeInterval = interval;
    }
    @Override
    public void onClick(View v) {
        long nowTime = System.currentTimeMillis();
        if (nowTime - mLastClickTime > timeInterval) {
            // 单次点击事件
            onSingleClick(v);
            mLastClickTime = nowTime;
        } else {
            // 快速点击事件
            onFastClick(v);
        }
    }
    protected abstract void onSingleClick(View view);
    protected void onFastClick(View v){};
}
app/src/main/java/com/runt/open/mvvm/retrofit/api/LoginApiCenter.java
New file
@@ -0,0 +1,24 @@
package com.runt.open.mvvm.retrofit.api;
import com.runt.open.mvvm.ui.login.LoggedInUser;
import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
public interface LoginApiCenter {
    @FormUrlEncoded
    @POST("login")
    Observable<LoggedInUser> login(@Field("phone") String phone,@Field("pass") String pass);
    @FormUrlEncoded
    @POST("login")
    Observable<LoggedInUser> loginByCode(@Field("phone") String phone,@Field("code") String code);
}
app/src/main/java/com/runt/open/mvvm/ui/dashboard/DashboardFragment.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/dashboard/DashboardViewModel.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/home/HomeFragment.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/home/HomeViewModel.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/login/LoggedInUser.java
New file
@@ -0,0 +1,10 @@
package com.runt.open.mvvm.ui.login;
import com.runt.open.mvvm.data.BaseApiResult;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
public class LoggedInUser extends BaseApiResult<UserBean> {
}
app/src/main/java/com/runt/open/mvvm/ui/login/LoginDataSource.java
New file
@@ -0,0 +1,7 @@
package com.runt.open.mvvm.ui.login;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
public class LoginDataSource {
}
app/src/main/java/com/runt/open/mvvm/ui/login/LoginViewModel.java
New file
@@ -0,0 +1,30 @@
package com.runt.open.mvvm.ui.login;
import androidx.lifecycle.MutableLiveData;
import com.runt.open.mvvm.base.model.BaseViewModel;
import com.runt.open.mvvm.retrofit.api.LoginApiCenter;
import com.runt.open.mvvm.retrofit.observable.HttpObserver;
import com.runt.open.mvvm.retrofit.utils.RetrofitUtils;
import io.reactivex.Observable;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
public class LoginViewModel extends BaseViewModel {
    MutableLiveData<LoggedInUser> loginResult = new MutableLiveData<>();
    public MutableLiveData<LoggedInUser> getLoginResult() {
        return loginResult;
    }
    public void login(String username, String password) {
        // can be launched in a separate asynchronous job
        final Observable<LoggedInUser> userObservable = RetrofitUtils.getInstance().getRetrofit(LoginApiCenter.class).login(username, password);
        httpObserverOn(userObservable,new HttpObserver<LoggedInUser>(loginResult){});
    }
}
app/src/main/java/com/runt/open/mvvm/ui/login/UserBean.java
New file
@@ -0,0 +1,278 @@
package com.runt.open.mvvm.ui.login;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 用户表 AdvertCustomer
 * @author Runt_自动生成
 * @email qingingrunt2010@qq.com
 * @date 2020-04-17 20:28:26
 */
public class UserBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private static UserBean user;
    public static UserBean getUser() {
        return user;
    }
    public static void setUser(UserBean user) {
        UserBean.user = user;
    }
    /** 主键 **/
    private String id;
    /** 手机号 **/
    private String phone;
    /** 登录token **/
    private String token;
    /** 昵称 **/
    private String username;
    /** 头像 **/
    private String head;
    /** 金币数量 **/
    private int coin;
    /* 连续签到天数 */
    private int sign;
    /** 用户类型(0推广,1店员,2商家,3广告商) **/
    private Integer type;
    /** 上级管理者 **/
    private String upuser;
    /** 余额 **/
    private BigDecimal balance;
    /** 会员等级(0普通用户,1会员) **/
    private Integer vlevel;
    /** 会员到期时间 **/
    private Date vtime;
    /** 状态0通过,1审核中,-1封收益 , -2 限制支付 , -3限制广告 ,-4限制发送短信,-5永久限制发送短信,-6 限制登录 **/
    private String status;
    /** 真实姓名 **/
    private String realname;
    /** 银行卡 **/
    private String bank;
    /** 支付宝 **/
    private String alipay;
    /** 微信 **/
    private String wechat;
    /** QQ **/
    private String qq;
    /** 创建时间 **/
    private Date ctime;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getHead() {
        return head;
    }
    public void setHead(String head) {
        this.head = head;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getUpuser() {
        return upuser;
    }
    public void setUpuser(String upuser) {
        this.upuser = upuser;
    }
    public BigDecimal getBalance() {
        return balance;
    }
    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }
    public Integer getVlevel() {
        return vlevel;
    }
    public void setVlevel(Integer vlevel) {
        this.vlevel = vlevel;
    }
    public Date getVtime() {
        return vtime;
    }
    public void setVtime(Date vtime) {
        this.vtime = vtime;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getRealname() {
        return realname;
    }
    public void setRealname(String realname) {
        this.realname = realname;
    }
    public String getBank() {
        return bank;
    }
    public void setBank(String bank) {
        this.bank = bank;
    }
    public String getAlipay() {
        return alipay;
    }
    public void setAlipay(String alipay) {
        this.alipay = alipay;
    }
    public String getWechat() {
        return wechat;
    }
    public void setWechat(String wechat) {
        this.wechat = wechat;
    }
    public String getQq() {
        return qq;
    }
    public void setQq(String qq) {
        this.qq = qq;
    }
    public Date getCtime() {
        return ctime;
    }
    public void setCtime(Date ctime) {
        this.ctime = ctime;
    }
    public int getCoin() {
        return coin;
    }
    public void setCoin(int coin) {
        this.coin = coin;
    }
    public int getSign() {
        return sign;
    }
    public void setSign(int sign) {
        this.sign = sign;
    }
    @Override
    public String toString() {
        return "UserBean{" +
                "id='" + id + '\'' +
                ", phone='" + phone + '\'' +
                ", token='" + token + '\'' +
                ", username='" + username + '\'' +
                ", head='" + head + '\'' +
                ", coin=" + coin +
                ", sign=" + sign +
                ", type=" + type +
                ", upuser='" + upuser + '\'' +
                ", balance=" + balance +
                ", vlevel=" + vlevel +
                ", vtime=" + vtime +
                ", status=" + status +
                ", wechat='" + wechat + '\'' +
                ", qq='" + qq + '\'' +
                ", ctime=" + ctime +
                '}';
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/dashboard/DashboardFragment.java
New file
@@ -0,0 +1,44 @@
package com.runt.open.mvvm.ui.main.dashboard;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.runt.open.mvvm.databinding.FragmentDashboardBinding;
public class DashboardFragment extends Fragment {
    private DashboardViewModel dashboardViewModel;
private FragmentDashboardBinding binding;
    public View onCreateView(@NonNull LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        dashboardViewModel =
                new ViewModelProvider(this).get(DashboardViewModel.class);
    binding = FragmentDashboardBinding.inflate(inflater, container, false);
    View root = binding.getRoot();
        final TextView textView = binding.textDashboard;
        dashboardViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }
@Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/dashboard/DashboardViewModel.java
New file
@@ -0,0 +1,19 @@
package com.runt.open.mvvm.ui.main.dashboard;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class DashboardViewModel extends ViewModel {
    private MutableLiveData<String> mText;
    public DashboardViewModel() {
        mText = new MutableLiveData<>();
        mText.setValue("This is dashboard fragment");
    }
    public LiveData<String> getText() {
        return mText;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeFragment.java
New file
@@ -0,0 +1,44 @@
package com.runt.open.mvvm.ui.main.home;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.runt.open.mvvm.databinding.FragmentHomeBinding;
public class HomeFragment extends Fragment {
    private HomeViewModel homeViewModel;
private FragmentHomeBinding binding;
    public View onCreateView(@NonNull LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        homeViewModel =
                new ViewModelProvider(this).get(HomeViewModel.class);
    binding = FragmentHomeBinding.inflate(inflater, container, false);
    View root = binding.getRoot();
        final TextView textView = binding.textHome;
        homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }
@Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/home/HomeViewModel.java
New file
@@ -0,0 +1,19 @@
package com.runt.open.mvvm.ui.main.home;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class HomeViewModel extends ViewModel {
    private MutableLiveData<String> mText;
    public HomeViewModel() {
        mText = new MutableLiveData<>();
        mText.setValue("This is home fragment");
    }
    public LiveData<String> getText() {
        return mText;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/notifications/NotificationsFragment.java
New file
@@ -0,0 +1,44 @@
package com.runt.open.mvvm.ui.main.notifications;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import com.runt.open.mvvm.databinding.FragmentNotificationsBinding;
public class NotificationsFragment extends Fragment {
    private NotificationsViewModel notificationsViewModel;
private FragmentNotificationsBinding binding;
    public View onCreateView(@NonNull LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        notificationsViewModel =
                new ViewModelProvider(this).get(NotificationsViewModel.class);
    binding = FragmentNotificationsBinding.inflate(inflater, container, false);
    View root = binding.getRoot();
        final TextView textView = binding.textNotifications;
        notificationsViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }
@Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/main/notifications/NotificationsViewModel.java
New file
@@ -0,0 +1,19 @@
package com.runt.open.mvvm.ui.main.notifications;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class NotificationsViewModel extends ViewModel {
    private MutableLiveData<String> mText;
    public NotificationsViewModel() {
        mText = new MutableLiveData<>();
        mText.setValue("This is notifications fragment");
    }
    public LiveData<String> getText() {
        return mText;
    }
}
app/src/main/java/com/runt/open/mvvm/ui/notifications/NotificationsFragment.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/notifications/NotificationsViewModel.java
File was deleted
app/src/main/java/com/runt/open/mvvm/ui/splash/SplashActivity.java
New file
@@ -0,0 +1,93 @@
package com.runt.open.mvvm.ui.splash;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.lifecycle.Observer;
import com.bytedance.sdk.openadsdk.TTSplashAd;
import com.runt.open.mvvm.MainActivity;
import com.runt.open.mvvm.base.activities.BaseActivity;
import com.runt.open.mvvm.databinding.ActivitySplashBinding;
/**
 * My father is Object, ites purpose of 启动页
 *
 * @purpose Created by Runt (qingingrunt2010@qq.com) on 2020-4-16.
 */
public class SplashActivity extends BaseActivity<ActivitySplashBinding,SplashViewModel> {
    final String TAG = "WelcomeActivity";
    Handler handler = new Handler(){
        boolean started = false;
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            if(!started) {//确保该语句只执行一次
                started = true;
                Intent intent = new Intent(mContext, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    };
    @Override
    public void initViews() {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏
        hideBottomUIMenu();
        viewModel.getSplashAd().observe(this, new Observer<TTSplashAd>() {
            @Override
            public void onChanged(TTSplashAd ttSplashAd) {
                binding.splashAdContainer.addView(ttSplashAd.getSplashView());
                //设置SplashView的交互监听器
                ttSplashAd.setSplashInteractionListener(new TTSplashAd.AdInteractionListener() {
                    @Override
                    public void onAdClicked(View view, int type) {
                        Log.d(TAG, "onAdClicked");
                    }
                    @Override
                    public void onAdShow(View view, int type) {
                        Log.d(TAG, "onAdShow");
                    }
                    @Override
                    public void onAdSkip() {
                        Log.d(TAG, "onAdSkip");
                        handler.sendMessage(new Message());
                    }
                    @Override
                    public void onAdTimeOver() {
                        Log.d(TAG, "onAdTimeOver");
                        handler.sendMessage(new Message());
                    }
                });
            }
        });
        viewModel.getTimeOut().observe(this, new Observer<Integer>() {
            @Override
            public void onChanged(Integer integer) {
                handler.sendMessage(new Message());
            }
        });
        viewModel.applyTdAd(mContext);;//请求广告
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        binding.splashAdContainer.removeAllViews();
    }
}
app/src/main/java/com/runt/open/mvvm/ui/splash/SplashViewModel.java
New file
@@ -0,0 +1,87 @@
package com.runt.open.mvvm.ui.splash;
import android.content.Context;
import android.os.Handler;
import android.util.Log;
import androidx.lifecycle.MutableLiveData;
import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.bytedance.sdk.openadsdk.TTSplashAd;
import com.runt.open.mvvm.base.model.BaseViewModel;
import java.util.Date;
/**
 * Created by Administrator on 2021/11/15 0015.
 */
public class SplashViewModel extends BaseViewModel {
    final String TAG = "SplashViewModel";
    long cTime = new Date().getTime(),limitTime = 2000;
    private MutableLiveData<TTSplashAd> splashAd = new MutableLiveData<>();
    private MutableLiveData<Integer> timeOut = new MutableLiveData<>();
    public MutableLiveData<TTSplashAd> getSplashAd() {
        return splashAd;
    }
    public MutableLiveData<Integer> getTimeOut() {
        return timeOut;
    }
    public void countdown(){
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                timeOut.setValue(0);
            }
        },limitTime);
    }
    /**
     * 请求广告
     * @param context
     */
    public void applyTdAd(Context context){
        countdown();
        TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(context);
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId("887382769")//广告id
                .setSupportDeepLink(true)
                .setImageAcceptedSize(1080,1920)
                //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看
                //.setExpressViewAcceptedSize(expressViewWidth, expressViewHeight)
                .build();
        mTTAdNative.loadSplashAd(adSlot,new TTAdNative.SplashAdListener() {
            @Override
            public void onError(int i, String s) {
                Log.i(TAG,"code:"+i+" message:"+s);
            }
            @Override
            public void onTimeout() {
                Log.i(TAG,"超时");
            }
            @Override
            public void onSplashAdLoad(TTSplashAd ttSplashAd) {
                Log.d(TAG, "开屏广告请求成功");
                long waitTime = limitTime - (new Date().getTime() - cTime);
                if(waitTime > 0){//是否超过限定时间  没有超时则继续
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            splashAd.setValue(ttSplashAd);
                        }
                    }, waitTime > 0 ? waitTime : 0);
                }
            }
        });
    }
}
app/src/main/java/com/runt/open/mvvm/util/AlgorithmUtils.java
New file
@@ -0,0 +1,75 @@
package com.runt.open.mvvm.util;
import android.graphics.Point;
/**
 * Created by Administrator on 2018/4/24.
 */
public class AlgorithmUtils {
    /**
     * 密码等级算法
     * @param pwd
     * @return
     */
    public static int pwdLevel(String pwd){
        int level = 0 ;
        boolean flag = false;
        try{
            Integer.parseInt(pwd);
        }catch (Exception e){
            flag =true;
        }
        boolean isHigh = false;
        boolean hasUp = false;
        boolean hasLow = false;
        boolean hasNum = false;
        for(int i = 0 ; i < pwd.length(); i ++ ){
            int chars = (int)pwd.toCharArray()[i];
            if(chars>64 && chars<91){//包含大写字母
                hasUp = true;
            }else if(chars>96 && chars<123){//包含小写字母
                hasLow = true;
            }else if(chars>47 && chars<58){//数字
                hasNum = true;
            }else{//特殊字符
                isHigh = true;
            }
        }
        int length = 7;
        if(pwd.length()>length && isHigh && hasLow && hasUp && hasNum){//长度足够,包含大小写+特殊字符+数字
            level = 4 ;
        }else if(pwd.length()>length &&  isHigh && !hasLow && hasUp && hasNum){//长度足够,包含大写+特殊字符+数字
            level = 3 ;
        }else if(pwd.length()>length && isHigh && hasLow && !hasUp && hasNum){//长度足够,包含小写+特殊字符+数字
            level = 3 ;
        }else if(pwd.length()>length &&  !isHigh && hasLow && hasUp && hasNum){//长度足够,包含大、小写+数字
            level = 3 ;
        }else if(pwd.length()>length && isHigh && !hasLow && !hasUp && hasNum){//长度足够,只包含特殊符号+数字
            level = 2 ;
        }else if(pwd.length()>length && !isHigh && !hasLow && hasUp && hasNum){//长度足够,只包含大写字母+数字
            level = 2 ;
        }else if(pwd.length()>length &&  !isHigh && hasLow && !hasUp && hasNum){//长度足够,只包含小写字母+数字
            level = 2 ;
        }else if(pwd.length()>length && isHigh && !hasLow && !hasUp && !hasNum){//长度足够,只包含特殊符号
            level = 1 ;
        }else if(pwd.length()>length && !isHigh && !hasLow && hasUp && !hasNum){//长度足够,只包含大写字母
            level = 1 ;
        }else if(pwd.length()>length &&  !isHigh && hasLow && !hasUp && !hasNum){//长度足够,只包含小写字母
            level = 1 ;
        }else if((pwd.length()<length+1 && pwd.length() > 0 ) || !flag){//全是数字或长度太小
            level = 0 ;
        }else if(pwd.length() == 0){
            level = -1 ;
        }
        //MyMyLog.i("AlgorithmUtils", String.format("pwdLevel isHigh:%s , hasLow:%s , hasUp:%s , hasNum:%s ,level:%s",isHigh , hasLow , hasUp , hasNum ,level));
        return  level;
    }
}
app/src/main/java/com/runt/open/mvvm/util/Configuration.java
New file
@@ -0,0 +1,48 @@
package com.runt.open.mvvm.util;
/**
 * Created by xanarry on 2016/5/22.
 */
public class Configuration {
    public static final int REQUEST_CODE_PIC = 303;
    public final static String MESS_TIP_NET_ERROR = "网络连接不畅,请稍后再试!!!";
    public final static String KEY_MES_CODE= "code";
    public final static String KEY_MES_TIME= "time";
    public final static String KEY_MES_MESSAGE= "msg";
    public final static String KEY_MES_ERROR= "error";
    public final static String KEY_CODE_SUCCESS= "0";//code 0 成功
    public final static int KEY_CODE_INFO= 101;//修改资料
    public final static String KEY_USER = "user";
    public final static String KEY_ADVERT= "advert";
    public final static String KEY_DATA= "data";
    public final static String KEY_FILES= "files";
    public final static String KEY_SCREEN_TYPE = "screen_type";//屏幕类型
    public final static String KEY_SCREEN_FILES= "screen_files";//播放的资源文件列表
    public final static String KEY_NAME= "name";
    public final static String KEY_MARk= "mark";
    public final static String KEY_ORDER= "order";
    public final static String FILENAME_MK = "fileName";
    public final static String FILEPATH = "path";
    public final static String STR_APPLY_DATA = "apply datas";
    public final static String STR_FILE_PLAN_FAILED = "file plan failed";
    public final static String STR_START_FILE_PLAN = "start file plan";
    public final static String STR_FINISHED_FILE_PLAN = "finished plan";
    public final static String FILESIZE_MK = "fileSize";
    public static final String KEY_EXTRAS = "extras";
    public static final String KEY_USERID = "customerId";
    public static final String KEY_TOKEN = "token";
    public static final String KEY_USERNAME = "username";
    public static final String KEY_PHONE = "phone";
    public static final String KEY_USERPASS = "userpass";
    public static final String MESSAGE_RECEIVED_ACTION = "MESSAGE_RECEIVED_ACTION";
    public static  final String KEY_REGION = "region",
            IS_LOGIN = "is_login";
}
app/src/main/java/com/runt/open/mvvm/util/SpUtils.java
@@ -27,8 +27,8 @@
    }
    
    public final String PROJECT = "project";
    public final String USER = "user";
    public final static String PROJECT = "project";
    public final static String USER = "user";
    public boolean clearData(Context context, String keyShared){
app/src/main/res/anim/anima_make_none.xml
New file
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="together">
    <objectAnimator
        android:duration="150"
        android:propertyName="scaleX"
        android:valueFrom="1"
        android:valueTo="0"
        ></objectAnimator>
    <objectAnimator
        android:duration="150"
        android:propertyName="scaleY"
        android:valueFrom="1"
        android:valueTo="0"
        ></objectAnimator>
</set>
app/src/main/res/color/home_nav_color.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_checked="false" android:color="@color/gray_pressed"  />
    <item android:state_checked="true" android:color="@color/txt_normal"  />
</selector>
app/src/main/res/color/verify_code.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:ignore="MissingDefaultResource">
    <item android:state_enabled="false" android:color="@color/holo_red_light"  />
    <item  android:color="@color/txt_normal"  />
</selector>
app/src/main/res/drawable-v21/bg_circle_default.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_gray" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_focused="true">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/input_bg" />
                    <corners android:radius="@dimen/circle" />
                </shape>
            </item>
            <item>
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/input_bg" />
                    <corners android:radius="@dimen/circle" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/bg_white.xml
New file
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_gray">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <solid android:color="@color/gray_pressed" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="@color/white" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/bg_white_circle.xml
New file
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_gray" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_enabled="false">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/color_gray" />
                    <corners android:radius="@dimen/circle" />
                </shape>
            </item>
            <item android:state_pressed="true">
                <shape>
                    <solid android:color="@color/gray_pressed" />
                    <corners android:radius="@dimen/circle" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
            <item>
                <shape>
                    <solid android:color="@color/white" />
                    <corners android:radius="@dimen/circle" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_blue_border.xml
New file
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/deep_blue">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/cut_off_line" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/link" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <gradient
                        android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/link" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_blue_circle_border.xml
New file
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/deep_blue">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/cut_off_line" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/link" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <gradient
                        android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/link" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_blue_corner.xml
New file
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/deep_blue">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/deep_blue" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <gradient
                        android:angle="270" android:endColor="@color/link" android:startColor="@color/link" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_circle.xml
New file
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/cut_off_line">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/white" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <gradient
                        android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/cut_off_circle" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_circle_blue.xml
New file
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/cut_off_line">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/deep_blue" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <solid android:color="@color/btn_gray_normal" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/circle" />
                    <gradient
                        android:angle="270" android:endColor="@color/theme" android:startColor="@color/theme" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_circle_red.xml
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/err" />
        </shape>
    </item>
    <item android:state_enabled="false">
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/cut_off_line" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <gradient
                android:angle="270" android:endColor="@color/err" android:startColor="@color/err" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable-v21/btn_gray_border.xml
New file
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/txt_enable">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/cut_off_line" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <solid android:color="@color/cut_off_line" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:radius="@dimen/corner" />
                    <gradient
                        android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
                    <stroke
                        android:width="1dp"
                        android:color="@color/cut_off_line" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_gray_circle.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_gray" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_focused="true">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/input_bg" />
                    <corners android:radius="@dimen/circle" />
                </shape>
            </item>
            <item>
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/color_gray8" />
                    <corners android:radius="@dimen/circle" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_white_lb_corner.xml
New file
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/black_20">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:bottomLeftRadius="8dp" />
                    <solid android:color="@color/black_10" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:bottomLeftRadius="8dp" />
                    <solid android:color="@color/black_10" />
                </shape>
            </item>
            <item android:state_focused="true">
                <shape android:shape="rectangle">
                    <corners android:bottomLeftRadius="8dp" />
                    <solid android:color="@color/gray_normal" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:bottomLeftRadius="8dp" />
                    <solid android:color="@color/white" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/btn_white_rb_corner.xml
New file
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/black_20">
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true">
                <shape android:shape="rectangle">
                    <corners android:bottomRightRadius="8dp" />
                    <solid android:color="@color/black_10" />
                </shape>
            </item>
            <item android:state_enabled="false">
                <shape android:shape="rectangle">
                    <corners android:bottomRightRadius="8dp" />
                    <solid android:color="@color/black_10" />
                </shape>
            </item>
            <item android:state_focused="true">
                <shape android:shape="rectangle">
                    <corners android:bottomRightRadius="8dp" />
                    <solid android:color="@color/black" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <corners android:bottomRightRadius="8dp" />
                    <solid android:color="@color/white" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/enable_corner_border.xml
New file
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/enable_color" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_enabled="false">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/enable_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item android:state_pressed="true">
                <shape>
                    <solid android:color="@color/white" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
            <item android:state_checked="true">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/theme_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item>
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/enable_color" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/theme_corner_border.xml
New file
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/enable_color" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_enabled="false">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/enable_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item android:state_pressed="true">
                <shape>
                    <solid android:color="@color/white" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
            <item android:state_checked="true">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/theme_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item>
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/theme_color" />
                    <solid android:color="@color/theme_tint_color" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v21/white_corner_border.xml
New file
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/enable_color" >
    <item>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_enabled="false">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/enable_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item android:state_pressed="true">
                <shape>
                    <solid android:color="@color/white" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
            <item android:state_checked="true">
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/white" />
                    <solid android:color="@color/theme_color" />
                    <corners android:radius="@dimen/radius" />
                </shape>
            </item>
            <item>
                <shape>
                    <stroke android:width="0.5dp" android:color="@color/enable_color" />
                    <solid android:color="@color/white" />
                    <corners android:radius="@dimen/radius" />
                    <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
                </shape>
            </item>
        </selector>
    </item>
</ripple>
app/src/main/res/drawable-v24/ic_launcher_foreground.xml
File was deleted
app/src/main/res/drawable/bg_black_circle.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/black" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_blue_circle.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/ske_blue" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_enable_circle.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/gray_normal" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_enable_circle_border.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <padding android:bottom="100dp" />
            <gradient
                android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
            <stroke
                android:width="1dp"
                android:color="@color/txt_enable" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_gradient_blue.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
            <shape>
                <corners android:radius="5dp" />
                <gradient
                    android:angle="360"
                    android:endColor="@color/blue_sky"
                    android:startColor="@color/color_blue"/>
            </shape>
    </item>
</layer-list>
app/src/main/res/drawable/bg_gradient_gray.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape>
            <corners android:radius="2.0dip" />
            <gradient
                android:angle="180"
                android:startColor="@color/color_gray"
                android:endColor="@color/color_gray8" />
        </shape>
    </item>
</layer-list>
app/src/main/res/drawable/bg_num.xml
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/corsor_color" />
            <solid android:color="@color/cameralist_gray" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/ui_content" />
         </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <solid android:color="@color/trans_blue" />
        </shape>
    </item>
    <item>
        <shape>
            <stroke android:color="@color/cut_off_line" />
            <solid android:color="@color/white" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_red_border_circle.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <gradient
                android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
            <stroke
                android:width="1dp"
                android:color="@color/sign_today" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_red_circle.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/sign_today" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_seekbar_progress_drawable.xml
New file
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 背景图 -->
    <item android:id="@android:id/background" android:height="3dp">
        <shape>
            <corners android:radius="10dp"/>
            <size android:height="5dp" />
            <solid android:color="#eeeff3"/>
        </shape>
    </item>
    <!-- 进和能量图 -->
    <item android:id="@android:id/progress" android:height="3dp">
        <clip>
            <shape>
                <corners android:radius="10dp"/>
                <size android:height="5dp" />
                <gradient
                    android:endColor="#10A2F1"
                    android:startColor="#0079FF" />
            </shape>
        </clip>
    </item>
</layer-list>
app/src/main/res/drawable/bg_them_circle.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <gradient
                android:angle="270" android:endColor="@color/theme" android:startColor="@color/theme" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_theme_border.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner" />
            <gradient
                android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
            <stroke
                android:width="1dp"
                android:color="@color/theme" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_white.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/gray_pressed" />
        </shape>
    </item>
    <item android:state_enabled="false">
        <shape android:shape="rectangle">
            <solid android:color="@color/cut_off_line" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/white" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_white_circle.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/circle" />
            <solid android:color="@color/white" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_white_corner.xml
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="@dimen/corner" />
            <gradient
                android:angle="270" android:endColor="@color/white" android:startColor="@color/white" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/bg_white_corner_8.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white" />
    <corners android:radius="8dp" />
</shape>
app/src/main/res/drawable/calender_last.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"  android:drawable="@mipmap/top_left_e" />
    <item android:state_pressed="true"  android:drawable="@mipmap/top_left_e" />
    <item android:drawable="@mipmap/top_left_g" />
</selector>
app/src/main/res/drawable/calender_next.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"  android:drawable="@mipmap/top_right_e" />
    <item android:state_pressed="true"  android:drawable="@mipmap/top_right_e" />
    <item android:drawable="@mipmap/top_right_g" />
</selector>
app/src/main/res/drawable/check_selector.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/selected" android:state_checked="true"/>
    <item android:drawable="@mipmap/selected" android:state_selected="true"/>
    <item android:drawable="@mipmap/select" android:state_checked="false"/>
    <item android:drawable="@mipmap/select" />
</selector>
app/src/main/res/drawable/enable_corner_border.xml
New file
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/enable_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/white" />
            <corners android:radius="@dimen/radius" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape>
    </item>
    <item android:state_checked="true">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/theme_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item>
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/enable_color" />
            <corners android:radius="@dimen/radius" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/ic_dashboard_black_24dp.xml
File was deleted
app/src/main/res/drawable/ic_home_black_24dp.xml
File was deleted
app/src/main/res/drawable/ic_launcher_background.xml
@@ -2,169 +2,169 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">
    android:viewportHeight="108"
    android:viewportWidth="108">
    <path
        android:fillColor="#3DDC84"
        android:fillColor="#008577"
        android:pathData="M0,0h108v108h-108z" />
    <path
        android:fillColor="#00000000"
        android:pathData="M9,0L9,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,0L19,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M29,0L29,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M39,0L39,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M49,0L49,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M59,0L59,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M69,0L69,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M79,0L79,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M89,0L89,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M99,0L99,108"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,9L108,9"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,19L108,19"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,29L108,29"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,39L108,39"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,49L108,49"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,59L108,59"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,69L108,69"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,79L108,79"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,89L108,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M0,99L108,99"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,29L89,29"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,39L89,39"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,49L89,49"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,59L89,59"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,69L89,69"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M19,79L89,79"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M29,19L29,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M39,19L39,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M49,19L49,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M59,19L59,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M69,19L69,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
    <path
        android:fillColor="#00000000"
        android:pathData="M79,19L79,89"
        android:strokeWidth="0.8"
        android:strokeColor="#33FFFFFF" />
        android:strokeColor="#33FFFFFF"
        android:strokeWidth="0.8" />
</vector>
app/src/main/res/drawable/ic_notifications_black_24dp.xml
File was deleted
app/src/main/res/drawable/item_check_pass.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_black_circle" android:state_checked="true"/>
    <item android:drawable="@drawable/bg_white_circle" android:state_checked="false"/>
</selector>
app/src/main/res/drawable/picture_icon_delete.png
app/src/main/res/drawable/picture_icon_shadow_bg.png
app/src/main/res/drawable/picture_icon_video.png
app/src/main/res/drawable/theme_corner_border.xml
New file
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/enable_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/white" />
            <corners android:radius="@dimen/radius" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape>
    </item>
    <item android:state_checked="true">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/theme_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item>
        <shape>
            <stroke android:width="0.5dp" android:color="@color/theme_color" />
            <solid android:color="@color/theme_tint_color" />
            <corners android:radius="@dimen/radius" />
            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape>
    </item>
</selector>
app/src/main/res/drawable/white_corner_border.xml
New file
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/enable_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/enable_color" />
            <solid android:color="@color/press_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item android:state_checked="true">
        <shape>
            <stroke android:width="0.5dp" android:color="@color/white" />
            <solid android:color="@color/theme_color" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
    <item>
        <shape>
            <stroke android:width="0.5dp" android:color="@color/enable_color" />
            <solid android:color="@color/white" />
            <corners android:radius="@dimen/radius" />
        </shape>
    </item>
</selector>
app/src/main/res/layout/activity_splash.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rel_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/welcom"
        android:scaleType="centerCrop"
        />
    <FrameLayout
        android:id="@+id/splash_ad_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"   />
</RelativeLayout>
app/src/main/res/layout/fragment_dashboard.xml
@@ -5,7 +5,7 @@
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.dashboard.DashboardFragment" >
    tools:context=".ui.main.dashboard.DashboardFragment" >
    <TextView
        android:id="@+id/text_dashboard"
app/src/main/res/layout/fragment_home.xml
@@ -5,7 +5,7 @@
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.home.HomeFragment" >
    tools:context=".ui.main.home.HomeFragment" >
    <TextView
        android:id="@+id/text_home"
app/src/main/res/layout/fragment_notifications.xml
@@ -5,7 +5,7 @@
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.notifications.NotificationsFragment" >
    tools:context=".ui.main.notifications.NotificationsFragment" >
    <TextView
        android:id="@+id/text_notifications"
app/src/main/res/layout/item_btn_text_with_text.xml
New file
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg_white"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/lin_item_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/bg_white"
        android:clickable="false"
        android:gravity="center_vertical"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/txt_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:text="标题"
            android:textColor="@color/black"
            android:textSize="17sp" />
        <TextView
            android:id="@+id/txt_red_point"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginLeft="10dp"
            android:background="@drawable/btn_circle_red"
            android:gravity="center"
            android:text="1"
            android:textColor="@color/white"
            android:visibility="gone"/>
        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1.0">
            <TextView
                android:id="@+id/txt_right"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:drawablePadding="5dp"
                android:drawableRight="@mipmap/arrow_right"
                android:gravity="center_vertical|right"
                android:maxLines="1"
                android:text=""
                android:textColor="@color/txt_enable"
                android:textSize="17sp" />
            <TextView
                android:id="@+id/txt_right_red_point"
                android:layout_width="10dp"
                android:layout_height="10dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:background="@drawable/btn_circle_red"
                android:visibility="gone"
                android:textColor="@color/white" />
        </RelativeLayout>
    </LinearLayout>
    <View
        android:id="@+id/view_divider"
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="@color/color_gray" />
</LinearLayout>
app/src/main/res/menu/bottom_nav_menu.xml
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home_black_24dp"
        android:title="@string/title_home"/>
        android:id="@+id/nav_msg"
        android:icon="@mipmap/icon_news"
        android:title="资讯" />
    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard_black_24dp"
        android:title="@string/title_dashboard"/>
        android:id="@+id/nav_service"
        android:icon="@mipmap/icon_home"
        android:title="服务" />
    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications_black_24dp"
        android:title="@string/title_notifications"/>
        android:id="@+id/nav_mine"
        android:icon="@mipmap/icon_mine"
        android:title="我的" />
</menu>
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
File was deleted
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
File was deleted
app/src/main/res/mipmap-hdpi/arrow_bottom_black.png
app/src/main/res/mipmap-hdpi/arrow_bottom_white.png
app/src/main/res/mipmap-hdpi/arrow_top_black.png
app/src/main/res/mipmap-hdpi/arrow_top_white.png
app/src/main/res/mipmap-hdpi/bg_seekbar_display1.png
app/src/main/res/mipmap-hdpi/bg_seekbar_display2.png
app/src/main/res/mipmap-hdpi/data_null.png
app/src/main/res/mipmap-hdpi/ic_add_black_48dp.png
app/src/main/res/mipmap-hdpi/ic_arrow_back_black_24dp.png
app/src/main/res/mipmap-hdpi/ic_arrow_back_white_24dp.png
app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-hdpi/ic_stay_primary_landscape_black_48dp.png
app/src/main/res/mipmap-hdpi/ic_stay_primary_portrait_black_48dp.png
app/src/main/res/mipmap-hdpi/icon_delete.png
app/src/main/res/mipmap-hdpi/icon_more_hor_black.png
app/src/main/res/mipmap-hdpi/icon_more_hor_white.png
app/src/main/res/mipmap-hdpi/icon_more_vert_black.png
app/src/main/res/mipmap-hdpi/icon_more_vert_white.png
app/src/main/res/mipmap-hdpi/icon_seekbar_thumb.png
app/src/main/res/mipmap-hdpi/icon_white_mine.png
app/src/main/res/mipmap-hdpi/icon_white_setting.png
app/src/main/res/mipmap-mdpi/arrow_bottom_black.png
app/src/main/res/mipmap-mdpi/arrow_bottom_white.png
app/src/main/res/mipmap-mdpi/arrow_top_black.png
app/src/main/res/mipmap-mdpi/arrow_top_white.png
app/src/main/res/mipmap-mdpi/data_null.png
app/src/main/res/mipmap-mdpi/ic_add_black_48dp.png
app/src/main/res/mipmap-mdpi/ic_arrow_back_black_24dp.png
app/src/main/res/mipmap-mdpi/ic_arrow_back_white_24dp.png
app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-mdpi/ic_stay_primary_landscape_black_48dp.png
app/src/main/res/mipmap-mdpi/ic_stay_primary_portrait_black_48dp.png
app/src/main/res/mipmap-mdpi/icon_more_hor_black.png
app/src/main/res/mipmap-mdpi/icon_more_hor_white.png
app/src/main/res/mipmap-mdpi/icon_more_vert_black.png
app/src/main/res/mipmap-mdpi/icon_more_vert_white.png
app/src/main/res/mipmap-mdpi/icon_white_mine.png
app/src/main/res/mipmap-mdpi/icon_white_setting.png
app/src/main/res/mipmap-xhdpi/alipay.png
app/src/main/res/mipmap-xhdpi/arrow_bottom_black.png
app/src/main/res/mipmap-xhdpi/arrow_bottom_white.png
app/src/main/res/mipmap-xhdpi/arrow_right.png
app/src/main/res/mipmap-xhdpi/arrow_top_black.png
app/src/main/res/mipmap-xhdpi/arrow_top_white.png
app/src/main/res/mipmap-xhdpi/birth.png
app/src/main/res/mipmap-xhdpi/coin.png
app/src/main/res/mipmap-xhdpi/coin_d.png
app/src/main/res/mipmap-xhdpi/data_null.png
app/src/main/res/mipmap-xhdpi/default_head.png
app/src/main/res/mipmap-xhdpi/ic_add_black_48dp.png
app/src/main/res/mipmap-xhdpi/ic_arrow_back_black_24dp.png
app/src/main/res/mipmap-xhdpi/ic_arrow_back_white_24dp.png
app/src/main/res/mipmap-xhdpi/ic_delete.png
app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-xhdpi/ic_stay_primary_landscape_black_48dp.png
app/src/main/res/mipmap-xhdpi/ic_stay_primary_portrait_black_48dp.png
app/src/main/res/mipmap-xhdpi/icon_coin.png
app/src/main/res/mipmap-xhdpi/icon_delete.png
app/src/main/res/mipmap-xhdpi/icon_more_hor_black.png
app/src/main/res/mipmap-xhdpi/icon_more_hor_white.png
app/src/main/res/mipmap-xhdpi/icon_more_vert_black.png
app/src/main/res/mipmap-xhdpi/icon_more_vert_white.png
app/src/main/res/mipmap-xhdpi/icon_white_back.png
app/src/main/res/mipmap-xhdpi/icon_white_mine.png
app/src/main/res/mipmap-xhdpi/icon_white_setting.png
app/src/main/res/mipmap-xhdpi/location_dark.png
app/src/main/res/mipmap-xhdpi/location_e.png
app/src/main/res/mipmap-xhdpi/select.png
app/src/main/res/mipmap-xhdpi/selected.png
app/src/main/res/mipmap-xhdpi/sign.png
app/src/main/res/mipmap-xhdpi/top_left_e.png
app/src/main/res/mipmap-xhdpi/top_left_g.png
app/src/main/res/mipmap-xhdpi/top_right_e.png
app/src/main/res/mipmap-xhdpi/top_right_g.png
app/src/main/res/mipmap-xhdpi/user_back.png
app/src/main/res/mipmap-xhdpi/weipay.png
app/src/main/res/mipmap-xxhdpi/alipay.png
app/src/main/res/mipmap-xxhdpi/app_icon.png
app/src/main/res/mipmap-xxhdpi/arrow_bottom_black.png
app/src/main/res/mipmap-xxhdpi/arrow_bottom_white.png
app/src/main/res/mipmap-xxhdpi/arrow_right.png
app/src/main/res/mipmap-xxhdpi/arrow_top_black.png
app/src/main/res/mipmap-xxhdpi/arrow_top_white.png
app/src/main/res/mipmap-xxhdpi/bg_bozhong.jpg
app/src/main/res/mipmap-xxhdpi/bg_uav.jpg
app/src/main/res/mipmap-xxhdpi/bg_xiaomai.jpg
app/src/main/res/mipmap-xxhdpi/bg_yumi.jpg
app/src/main/res/mipmap-xxhdpi/birth.png
app/src/main/res/mipmap-xxhdpi/data_null.png
app/src/main/res/mipmap-xxhdpi/default_head.png
app/src/main/res/mipmap-xxhdpi/female.png
app/src/main/res/mipmap-xxhdpi/ic_add_black_48dp.png
app/src/main/res/mipmap-xxhdpi/ic_arrow_back_black_24dp.png
app/src/main/res/mipmap-xxhdpi/ic_arrow_back_white_24dp.png
app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_stay_primary_landscape_black_48dp.png
app/src/main/res/mipmap-xxhdpi/ic_stay_primary_portrait_black_48dp.png
app/src/main/res/mipmap-xxhdpi/icon_coin.png
app/src/main/res/mipmap-xxhdpi/icon_more_hor_black.png
app/src/main/res/mipmap-xxhdpi/icon_more_hor_white.png
app/src/main/res/mipmap-xxhdpi/icon_more_vert_black.png
app/src/main/res/mipmap-xxhdpi/icon_more_vert_white.png
app/src/main/res/mipmap-xxhdpi/icon_white_back.png
app/src/main/res/mipmap-xxhdpi/icon_white_mine.png
app/src/main/res/mipmap-xxhdpi/icon_white_setting.png
app/src/main/res/mipmap-xxhdpi/location_dark.png
app/src/main/res/mipmap-xxhdpi/location_e.png
app/src/main/res/mipmap-xxhdpi/male.png
app/src/main/res/mipmap-xxhdpi/select.png
app/src/main/res/mipmap-xxhdpi/selected.png
app/src/main/res/mipmap-xxhdpi/sign.png
app/src/main/res/mipmap-xxhdpi/top_left_g.png
app/src/main/res/mipmap-xxhdpi/top_right_e.png
app/src/main/res/mipmap-xxhdpi/weipay.png
app/src/main/res/mipmap-xxxhdpi/alipay.png
app/src/main/res/mipmap-xxxhdpi/arrow_bottom_black.png
app/src/main/res/mipmap-xxxhdpi/arrow_bottom_white.png
app/src/main/res/mipmap-xxxhdpi/arrow_right.png
app/src/main/res/mipmap-xxxhdpi/arrow_top_black.png
app/src/main/res/mipmap-xxxhdpi/arrow_top_white.png
app/src/main/res/mipmap-xxxhdpi/birth.png
app/src/main/res/mipmap-xxxhdpi/data_null.png
app/src/main/res/mipmap-xxxhdpi/default_head.png
app/src/main/res/mipmap-xxxhdpi/female.png
app/src/main/res/mipmap-xxxhdpi/ic_add_black_48dp.png
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-xxxhdpi/ic_stay_primary_landscape_black_48dp.png
app/src/main/res/mipmap-xxxhdpi/ic_stay_primary_portrait_black_48dp.png
app/src/main/res/mipmap-xxxhdpi/icon_coin.png
app/src/main/res/mipmap-xxxhdpi/icon_home.png
app/src/main/res/mipmap-xxxhdpi/icon_mine.png
app/src/main/res/mipmap-xxxhdpi/icon_more_hor_black.png
app/src/main/res/mipmap-xxxhdpi/icon_more_hor_white.png
app/src/main/res/mipmap-xxxhdpi/icon_more_vert_black.png
app/src/main/res/mipmap-xxxhdpi/icon_more_vert_white.png
app/src/main/res/mipmap-xxxhdpi/icon_news.png
app/src/main/res/mipmap-xxxhdpi/icon_white_back.png
app/src/main/res/mipmap-xxxhdpi/icon_white_mine.png
app/src/main/res/mipmap-xxxhdpi/icon_white_setting.png
app/src/main/res/mipmap-xxxhdpi/location_dark.png
app/src/main/res/mipmap-xxxhdpi/location_e.png
app/src/main/res/mipmap-xxxhdpi/male.png
app/src/main/res/mipmap-xxxhdpi/select.png
app/src/main/res/mipmap-xxxhdpi/selected.png
app/src/main/res/mipmap-xxxhdpi/top_left_g.png
app/src/main/res/mipmap-xxxhdpi/top_right_e.png
app/src/main/res/mipmap-xxxhdpi/weipay.png
app/src/main/res/mipmap-xxxhdpi/welcom.png
app/src/main/res/navigation/mobile_navigation.xml
@@ -7,19 +7,19 @@
    <fragment
        android:id="@+id/navigation_home"
        android:name="com.runt.open.mvvm.ui.home.HomeFragment"
        android:name="com.runt.open.mvvm.ui.main.home.HomeFragment"
        android:label="@string/title_home"
        tools:layout="@layout/fragment_home" />
    <fragment
        android:id="@+id/navigation_dashboard"
        android:name="com.runt.open.mvvm.ui.dashboard.DashboardFragment"
        android:name="com.runt.open.mvvm.ui.main.dashboard.DashboardFragment"
        android:label="@string/title_dashboard"
        tools:layout="@layout/fragment_dashboard" />
    <fragment
        android:id="@+id/navigation_notifications"
        android:name="com.runt.open.mvvm.ui.notifications.NotificationsFragment"
        android:name="com.runt.open.mvvm.ui.main.notifications.NotificationsFragment"
        android:label="@string/title_notifications"
        tools:layout="@layout/fragment_notifications" />
</navigation>
app/src/main/res/values/colors.xml
@@ -1,5 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">@color/theme_color</color>
    <color name="colorPrimaryDark">#17B4A0</color>
    <color name="colorAccent">#D81B60</color>
    <color name="theme_color">#3475F8</color>
    <color name="theme_tint_color">#A7C3FA</color>
    <color name="press_color">#8B8C8D</color>
    <color name="enable_color">#646161</color>
    <color name="enable_txt_color">#D5D2D2</color>
    <color name="txt_color">#2C2C2C</color>
    <color name="txt_cusor_color">#FFFFFF</color>
    <color name="shade_color">#F0F0F0</color>
    <color name="btn_login_normal">@color/theme</color>
    <color name="btn_logout_normal">#d33f3f</color>
    <color name="btn_logout_pressed">#DA5A4D</color>
    <color name="btn_register_normal">#ffffff</color>
    <color name="btn_register_pressed">@color/theme</color>
    <color name="common_bottom_bar_normal_bg">#2d2f31</color>
    <color name="common_bottom_bar_selected_bg">#161718</color>
    <color name="common_botton_bar_blue">#2ea7e0</color>
    <color name="common_bg">#fcfcfc</color>
    <color name="btn_pressed_green_solid">#B6DA53</color>
    <color name="divider_list">#d4d4d4</color>
    <color name="top_bar_normal_bg">@color/theme</color>
    <color name="error_item_color">#F6EBE6</color>
    <color name="bottom_bar_normal_bg">#2D2F31</color>
    <color name="bottom_text_color_normal">#ffffff</color>
    <color name="btn_white_normal">#f7f8f8</color>
    <color name="btn_white_pressed">#b5b5b6</color>
    <color name="btn_green_noraml">#68C270</color>
    <color name="btn_green_pressed">#6FCD78</color>
    <color name="btn_gray_normal">#c0c0c0</color>
    <color name="btn_gray_pressed_status">#b5b5b6</color>
    <color name="btn_gray_pressed">#666667</color>
    <color name="btn_blue_normal">#1e90ff</color>
    <color name="btn_blue_pressed">#0066FF</color>
    <color name="blue_sky">#34a2ff</color>
    <color name="color_blue">#5070b2</color>
    <color name="orange">#FFA500</color>
    <color name="gray_pressed">#b5b5b6</color>
    <color name="gray_normal">#666667</color>
    <color name="grid_state_pressed">#1Affffff</color>
    <color name="grid_state_focused">#80000000</color>
    <color name="voip_interface_text_color">#bababa</color>
    <color name="black_deep">#FF000000</color>
    <color name="btn_answer_pressed">#4ebcd3</color>
    <color name="btn_answer_normal">#2dafa3</color>
    <color name="list_item_secondary_color">#888888</color>
    <color name="list_item_primary_color">#000</color>
    <color name="holo_blue_bright">#ff00ddff</color>
    <color name="holo_green_light">#ff99cc00</color>
    <color name="holo_orange_light">#ffffbb33</color>
    <color name="holo_red_light">#ffff4444</color>
    <color name="holo_black">#ff111111</color>
    <color name="bg_tools_panel">#2F2F2F</color>
    <color name="color_transparent">#00000000</color>
    <color name="em_blue">#1E88E5</color>
    <color name="em_blue_pressed">#0000aF</color>
    <color name="em_indicator_select">#9E9E9E</color>
    <color name="em_indicator_normal">#1AFFFFFF</color>
    <color name="btn_normal">@color/theme</color>
    <color name="btn_press">#03a687</color>
    <color name="anv_normal">#FFBDBEC0</color>
    <color name="transparent">#00000000</color>
    <color name="err">#f90c10</color>
    <color name="green">#06ae3b</color>
    <color name="theme">#3D71E5</color>
    <color name="link">@color/theme</color>
    <color name="deep_blue">#0864ce</color>
    <color name="txt_enable">#9D9D9D</color>
    <color name="cut_off_line">#DDDDDD</color>
    <color name="cut_off_circle">#A4A4A4</color>
    <color name="txt_normal">#333333</color>
    <color name="txt_hint">#F9FAFC</color>
    <color name="input_bg">#F9FAFC</color>
    <color name="background_color">#f7f7f7</color>
    <color name="color_gray">#e6ebee</color>
    <color name="color_gray8">#e6e6e6</color>
    <color name="ske_blue">#34a7ff</color>
    <color name="gold">#ffba02</color>
    <color name="sign_today">#ff6b6a</color>
    <color name="black_10">#1A000000</color>
    <color name="black_20">#43000000</color>
    <color name="bottom_menu_btn_bg_common_color">#FFFFFF</color>
    <color name="bottom_menu_btn_bg_press_color">#EEEEEE</color>
    <color name="bottom_menu_btn_text_commom_color">#5B729A</color>
    <color name="bottom_menu_btn_text_press_colot">#3F51B5</color>
    <color name="bottom_menu_btn_text_stress_color">#FF0000</color>
    <color name="bottom_menu_layout_color">#00000000</color>
    <color name="teal_700">#FF018786</color>
    <color name="black">#FF000000</color>
    <color name="black_4">#373737</color>
@@ -15,5 +115,11 @@
    <color name="enable_sky">#889DB6</color>
    <color name="deep_sky">#4184D6</color>
    <color name="sky">#509CFA</color>
    <color name="gold">#FAD550</color>
    <color name="main_bg">#1C2250</color>
    <color name="color_pink">#E45CB0</color>
    <color name="color_prog">#52E5C7</color>
    <color name="trans_blue">#62B8F6</color>
    <color name="ui_content">#fff8f8f8</color>
    <color name="cameralist_gray">#e3e3e3</color>
    <color name="corsor_color">#adadad</color>
</resources>
app/src/main/res/values/dimens.xml
@@ -1,9 +1,48 @@
<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
    <dimen name="small_radios">3dp</dimen>
    <dimen name="circle">1000dp</dimen>
    <dimen name="radios">10dp</dimen>
    <dimen name="frame_margin_lr">10dp</dimen>
    <!-- 间距 -->
    <dimen name="activity_title_bar_height">45dp</dimen>
    <dimen name="btn_top_buttom_padding">10dp</dimen>
    <dimen name="edit_text_padding">12dp</dimen>
    <!-- titleBar或底部栏分割线高度 -->
    <dimen name="bar_divider_height">4dp</dimen>
    <!-- 字体 -->
    <dimen name="top_bar_title_size">18sp</dimen>
    <dimen name="normal_text_size">16sp</dimen>
    <dimen name="small_text_size">14sp</dimen>
    <dimen name="smaller_text_size">12sp</dimen>
    <dimen name="activity_horizontal_margin">10dp</dimen>
    <dimen name="activity_vertical_margin">10dp</dimen>
    <dimen name="normal_margin">5dp</dimen>
    <dimen name="large_margin">15dp</dimen>
    <dimen name="normal_padding">10dp</dimen>
    <dimen name="radius">10dp</dimen>
    <dimen name="title_height">47dp</dimen>
    <dimen name="pt_title_height">27pt</dimen>
    <dimen name="title_size">16sp</dimen>
    <dimen name="txt_small_size">12sp</dimen>
    <dimen name="txt_size">12sp</dimen>
    <dimen name="tab_icon_width">22dp</dimen>
    <dimen name="tab_icon_height">22dp</dimen>
    <dimen name="edit_height">40dp</dimen>
    <dimen name="circle">1000dp</dimen>
    <dimen name="corner">10dp</dimen>
    <dimen name="edit_corner">3dp</dimen>
    <dimen name="pageLeftPadding">20dp</dimen>
    <dimen name="pic_size">150dp</dimen>
    <dimen name="sign_text_size">12sp</dimen>
    <dimen name="sign_text_margin">12dp</dimen>
    <dimen name="text_padding_left">15dp</dimen>
    <!-- 间距 -->
    <dimen name="default_margin_lr">27dp</dimen>
    <dimen name="default_margin_td">12dp</dimen>
</resources>
app/src/main/res/values/styles.xml
@@ -12,4 +12,55 @@
        <attr name="rightTextSize" format="dimension" />
        <attr name="rightTextColor" format="color" />
    </declare-styleable>
    <declare-styleable name="LinearLayoutWithText">
        <attr name="linbackgroundColor" format="color" />
        <attr name="text_title" format="string" />
        <attr name="text_titleColor"  format="color"/>
        <attr name="text_right"  format="string"/>
        <attr name="hint_right" format="string" />
        <attr name="hint_title" format="string" />
        <attr name="text_rightColor"  format="color"/>
        <attr name="divider_visible">
            <enum name="visible" value="0" />
            <enum name="invisible" value="4" />
            <enum name="gone" value="8" />
        </attr>
        <attr name="img_visible">
            <enum name="visible" value="0" />
            <enum name="invisible" value="4" />
            <enum name="gone" value="8" />
        </attr>
        <attr name="text_rightSize"  format="integer"/>
        <attr name="text_titleSize"  format="integer"/>
        <attr name="red_poit_count"  format="integer"/>
        <attr name="paddingLeft" format="dimension" />
        <attr name="paddingRight" format="dimension" />
        <attr name="paddingTop" format="dimension" />
        <attr name="paddingBottom" format="dimension" />
        <attr name="padding" format="dimension" />
        <attr name="hint_titleColor"  format="color"/>
        <attr name="hint_rightColor"  format="color"/>
        <attr name="leftCompoundDrawable" format="reference" />
        <attr name="leftCompoundDrawableSize"  format="integer"/>
        <attr name="rightCompoundDrawable" format="reference" />
        <attr name="enable" format="boolean" />
    </declare-styleable>
    <declare-styleable name="CircleImageView">
        <attr name="border_width" format="dimension" />
        <attr name="border_color" format="color" />
    </declare-styleable>
    <style name="txt_normal">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">@dimen/normal_text_size</item>
        <item name="android:textColor">@color/txt_color</item>
    </style>
    <style name="TransparentDialog" parent="Theme.AppCompat.Dialog">
        <item name="android:windowBackground">@color/transparent</item>
    </style>
</resources>
app/src/main/res/values/themes.xml
@@ -13,4 +13,6 @@
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>
settings.gradle
@@ -4,6 +4,8 @@
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven { url 'https://artifact.bytedance.com/repository/pangle' }
        maven { url "https://jitpack.io" }
    }
}
rootProject.name = "OpemMvvm"