()
21 |
22 | /**
23 | * 获取当前用户信息
24 | */
25 | fun getUserById() {
26 | requestAsync {
27 | repository.getUserById(kv.decodeInt(ID))
28 | }.then(viewModelScope, {
29 | user.value = it.data
30 | }, {
31 | errMsg.value = it
32 | })
33 | }
34 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_back_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_lock_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_phone_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_share_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi/ic_sms_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_avatar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_avatar.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_change_key.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_change_key.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_change_skin.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_change_skin.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_clear.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_clear.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_nickname.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_nickname.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_province_flow.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_province_flow.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_setting_center.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_setting_center.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_update.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_update.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/acc_user.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/acc_user.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/avatar_default.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/avatar_default.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/bg_shake.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/bg_shake.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/bg_vip.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/bg_vip.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/bg_welcome_page.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/bg_welcome_page.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/check_normal.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/check_normal.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/check_pressed.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/check_pressed.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/good_morning_img.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/good_morning_img.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/good_night_img.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/good_night_img.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/guide_img_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/guide_img_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/guide_img_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/guide_img_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/guide_img_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/guide_img_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_ac.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_ac.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_add_to_cart.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_add_to_cart.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_buy.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_buy.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_cart.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_cart.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_close.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_close.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_delete.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_delete.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_get.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_get.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_hc.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_hc.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_index_integration_shop.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_index_integration_shop.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_index_question.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_index_question.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_index_shake.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_index_shake.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_index_sign_in.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_index_sign_in.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_level.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_level.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_line.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_line.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_logo_kb.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_logo_kb.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_about.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_about.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_attention.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_attention.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_encourage.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_encourage.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_feedback.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_feedback.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_option.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_option.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_me_share.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_me_share.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_message.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_message.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_nc.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_nc.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_network_disabled.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_network_disabled.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_nickname.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_nickname.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_no_data.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_no_data.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_open.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_open.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_order_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_order_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_order_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_order_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_order_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_order_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_order_4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_order_4.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_price.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_price.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_risk_money.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_risk_money.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_search.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_search.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_select.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_select.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_top.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_top.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_top_bar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_top_bar.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_baby.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_baby.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_bag.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_bag.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_beauty.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_beauty.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_car.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_car.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_clothes.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_clothes.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_digital.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_digital.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_life.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_life.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_type_snacks.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_type_snacks.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_unselect.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_unselect.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_update_banner.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_update_banner.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_voice_close.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_voice_close.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_voice_open.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/ic_voice_open.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_0.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_0.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_10.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_10.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_4.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_5.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_6.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_6.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_7.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_7.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_8.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_8.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/level_9.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/level_9.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sc_arrow_right.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/sc_arrow_right.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_0.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_0.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_4.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_0.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_0.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_banner_4.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_0.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_0.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_1.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_2.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_3.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/selfcenter_bg_main_4.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/shake_image.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/shake_image.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/shake_luck.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/shake_luck.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/shake_original_image.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/shake_original_image.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/shake_unluck.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/shake_unluck.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sign_in_a.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/sign_in_a.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sign_in_b.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/sign_in_b.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sign_in_c.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable-xxhdpi/sign_in_c.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_buy_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_buy_btn_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_corner_pink.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_corner_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_text_focused.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_text_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_get_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_get_btn_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_type.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | -
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/global_click_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/global_red_click_with_corner_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 | -
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/global_red_clickable_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 | -
16 |
17 |
18 |
19 |
20 |
21 | -
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_local_mall_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_local_offer_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_person_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_subject_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_visibility_off_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_visibility_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_error.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable/icon_error.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_stub.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/drawable/icon_stub.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_card_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_credit_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
26 |
27 |
28 |
29 |
33 |
34 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_goods_details.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
25 |
26 |
32 |
33 |
37 |
38 |
46 |
47 |
50 |
51 |
52 |
53 |
60 |
61 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_guide.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
19 |
20 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_search_result.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
25 |
26 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_banner.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_guide.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_goods_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_main_index.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_main_nine_goods.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
22 |
29 |
30 |
34 |
35 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_main_ranking_goods.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
22 |
29 |
30 |
34 |
35 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/include_credit_history_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/include_main_index_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
21 |
22 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/include_no_data.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_item_credit_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
22 |
23 |
30 |
31 |
39 |
40 |
41 |
42 |
50 |
51 |
52 |
53 |
58 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/list_item_key_words.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
21 |
22 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/bottom_nav_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #fd5353
4 | #e41e1e
5 | #D81B60
6 |
7 |
8 | #5f606d
9 | #d7d7d7
10 | #999999
11 | #f2f2f2
12 | #96ffffff
13 | #80C0C0C0
14 |
15 |
16 | #af000000
17 | #44d6d4d4
18 |
19 |
20 | #fd5353
21 | #e41e1e
22 | #ff40dc91
23 | #333333
24 | #037BFF
25 | #fe9200
26 | #F88283
27 | #b6b6b6
28 |
29 | #FF181821
30 | #FFFFFFFF
31 | #FF2371FA
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 12.0sp
4 | 16.0sp
5 | 18.0sp
6 |
7 | 45.0dip
8 | 18.0dip
9 | 0.5dip
10 |
11 | 10.0dip
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
18 |
19 |
28 |
29 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/test/java/cn/neday/sheep/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.sheep
2 |
3 | import org.junit.Assert.assertEquals
4 | import org.junit.Test
5 |
6 | /**
7 | * Example local unit test, which will execute on the development machine (host).
8 | *
9 | * See [testing documentation](http://d.android.com/tools/testing).
10 | */
11 | class ExampleUnitTest {
12 | @Test
13 | fun addition_isCorrect() {
14 | assertEquals(4, 2 + 2)
15 | }
16 | }
--------------------------------------------------------------------------------
/base/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/base/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/base/src/androidTest/java/cn/neday/base/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package cn.neday.base;
2 |
3 | import android.content.Context;
4 | import androidx.test.InstrumentationRegistry;
5 | import androidx.test.runner.AndroidJUnit4;
6 | import org.junit.Test;
7 | import org.junit.runner.RunWith;
8 |
9 | import static org.junit.Assert.assertEquals;
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * @see Testing documentation
15 | */
16 | @RunWith(AndroidJUnit4.class)
17 | public class ExampleInstrumentedTest {
18 | @Test
19 | public void useAppContext() {
20 | // Context of the app under test.
21 | Context appContext = InstrumentationRegistry.getTargetContext();
22 |
23 | assertEquals("cn.neday.base.test", appContext.getPackageName());
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/base/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/SingleLiveEvent.java:
--------------------------------------------------------------------------------
1 | package cn.neday.base;
2 |
3 | import android.util.Log;
4 | import androidx.annotation.MainThread;
5 | import androidx.annotation.NonNull;
6 | import androidx.annotation.Nullable;
7 | import androidx.lifecycle.LifecycleOwner;
8 | import androidx.lifecycle.MutableLiveData;
9 | import androidx.lifecycle.Observer;
10 | import org.jetbrains.annotations.NotNull;
11 |
12 | import java.util.concurrent.atomic.AtomicBoolean;
13 |
14 | /**
15 | * A lifecycle-aware observable that sends only new updates after subscription, used for events like
16 | * navigation and Snackbar messages.
17 | *
18 | * This avoids a common problem with events: on configuration change (like rotation) an update
19 | * can be emitted if the observer is active. This LiveData only calls the observable if there's an
20 | * explicit call to setValue() or call().
21 | *
22 | * Note that only one observer is going to be notified of changes.
23 | */
24 | public class SingleLiveEvent extends MutableLiveData {
25 |
26 | private static final String TAG = "SingleLiveEvent";
27 |
28 | private final AtomicBoolean mPending = new AtomicBoolean(false);
29 |
30 | @MainThread
31 | @Override
32 | public void observe(@NonNull LifecycleOwner owner, @NotNull final Observer super T> observer) {
33 | if (hasActiveObservers()) {
34 | Log.w(TAG, "Multiple observers registered but only one will be notified of changes.");
35 | }
36 |
37 | // Observe the internal MutableLiveData
38 | super.observe(owner, t -> {
39 | if (mPending.compareAndSet(true, false)) {
40 | observer.onChanged(t);
41 | }
42 | });
43 | }
44 |
45 | @MainThread
46 | @Override
47 | public void setValue(@Nullable T t) {
48 | mPending.set(true);
49 | super.setValue(t);
50 | }
51 |
52 | /**
53 | * Used for cases where T is Void, to make calls cleaner.
54 | */
55 | @MainThread
56 | public void call() {
57 | setValue(null);
58 | }
59 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/activity/BaseActivity.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.activity
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import androidx.annotation.LayoutRes
6 | import androidx.appcompat.app.AppCompatActivity
7 | import cn.neday.base.config.MMKVConfig.TOKEN
8 | import cn.neday.base.config.MMKVConfig.kv
9 | import cn.neday.base.router.Router
10 | import cn.neday.base.router.RouterPath
11 | import com.blankj.utilcode.util.ActivityUtils
12 | import com.blankj.utilcode.util.StringUtils
13 |
14 | /**
15 | * Activity基类
16 | *
17 | * @author nEdAy
18 | */
19 | abstract class BaseActivity(@get:LayoutRes val layoutId: Int?) : AppCompatActivity() {
20 |
21 | open val isCheckLogin = false
22 |
23 | override fun onCreate(savedInstanceState: Bundle?) {
24 | super.onCreate(savedInstanceState)
25 | if (isCheckLogin && StringUtils.isTrimEmpty(kv.decodeString(TOKEN))) {
26 | Router.navigation(RouterPath.LoginActivity)
27 | ActivityUtils.finishActivity(this)
28 | }
29 | layoutId?.let {
30 | setContentView(LayoutInflater.from(this).inflate(it, null))
31 | }
32 | prepareInitView()
33 | initView()
34 | }
35 |
36 | open fun prepareInitView() {
37 | // do nothing
38 | }
39 |
40 | /**
41 | * onCreate
42 | */
43 | abstract fun initView()
44 |
45 | override fun onDestroy() {
46 | super.onDestroy()
47 | Router.alibabaService.destroySDK()
48 | }
49 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/activity/BaseVMActivity.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.activity
2 |
3 | import androidx.lifecycle.Observer
4 | import cn.neday.base.viewmodel.BaseViewModel
5 | import com.blankj.utilcode.util.LogUtils
6 | import org.koin.androidx.viewmodel.ext.android.viewModel
7 | import java.lang.reflect.ParameterizedType
8 |
9 | /**
10 | * Activity基类 + ViewModel
11 | *
12 | * @author nEdAy
13 | */
14 | abstract class BaseVMActivity(layoutId: Int) : BaseActivity(layoutId) {
15 |
16 | @Suppress("UNCHECKED_CAST")
17 | protected val mViewModel: VM by viewModel(((javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class).kotlin)
18 |
19 | override fun prepareInitView() {
20 | super.prepareInitView()
21 | lifecycle.addObserver(mViewModel)
22 | mViewModel.errMsg.observe(this, Observer {
23 | LogUtils.e(it)
24 | })
25 | }
26 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/config/BuglyConfig.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.config
2 |
3 | import cn.neday.base.BuildConfig
4 | import com.blankj.utilcode.util.Utils
5 | import com.tencent.bugly.Bugly
6 | import com.tencent.bugly.beta.Beta
7 |
8 | object BuglyConfig {
9 |
10 | private const val BUGLY_APP_ID = "923c0825a2"
11 |
12 | fun init() {
13 | Bugly.init(Utils.getApp(), BUGLY_APP_ID, BuildConfig.DEBUG)
14 | }
15 |
16 | fun checkUpgrade() {
17 | Beta.checkUpgrade()
18 | }
19 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/config/DoraemonKitConfig.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.config
2 |
3 | import com.blankj.utilcode.util.Utils
4 | import com.didichuxing.doraemonkit.DoraemonKit
5 |
6 | object DoraemonKitConfig {
7 |
8 | fun init() {
9 | DoraemonKit.install(Utils.getApp())
10 | }
11 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/config/LogConfig.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.config
2 |
3 | import com.blankj.utilcode.util.AppUtils
4 | import com.blankj.utilcode.util.LogUtils
5 |
6 | object LogConfig {
7 |
8 | fun init() {
9 | LogUtils.getConfig().isLogSwitch = AppUtils.isAppDebug()
10 | }
11 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/config/MMKVConfig.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.config
2 |
3 | import com.blankj.utilcode.util.Utils
4 | import com.tencent.mmkv.MMKV
5 |
6 | object MMKVConfig {
7 |
8 | lateinit var kv: MMKV
9 |
10 | fun init() {
11 | MMKV.initialize(Utils.getApp())
12 | kv = MMKV.defaultMMKV()
13 | }
14 |
15 | const val ID = "Id"
16 | const val TOKEN = "Token"
17 | const val MOBILE = "Mobile"
18 | const val HOTWORDS = "HotWords"
19 | const val HISTORY_WORDS = "HistoryWords"
20 | const val IS_FIRST_START_APP = "isFirstStartApp"
21 |
22 | fun login(id: Int?, token: String?, mobile: String?) {
23 | kv.encode(ID, id ?: 0)
24 | kv.encode(TOKEN, token)
25 | kv.encode(MOBILE, mobile)
26 | }
27 |
28 | fun logout() {
29 | kv.removeValueForKey(ID)
30 | kv.removeValueForKey(TOKEN)
31 | kv.removeValueForKey(MOBILE)
32 | }
33 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/di/HttpClientModule.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.di
2 |
3 | import cn.neday.base.BuildConfig
4 | import cn.neday.base.network.interceptor.AuthenticationInterceptor
5 | import com.blankj.utilcode.util.Utils
6 | import com.readystatesoftware.chuck.ChuckInterceptor
7 | import okhttp3.Interceptor
8 | import okhttp3.OkHttpClient
9 | import okhttp3.logging.HttpLoggingInterceptor
10 | import org.koin.core.qualifier.named
11 | import org.koin.dsl.module
12 | import retrofit2.Retrofit
13 | import retrofit2.converter.moshi.MoshiConverterFactory
14 | import java.util.concurrent.TimeUnit
15 |
16 | private const val TIME_OUT_SECONDS = 10L
17 | private const val BASE_URL = "https://www.neday.cn/v1/"
18 |
19 | val httpClientModule = module {
20 |
21 | single { Retrofit.Builder() }
22 |
23 | single { OkHttpClient.Builder() }
24 |
25 | single {
26 | get()
27 | .baseUrl(BASE_URL)
28 | .client(get())
29 | .addConverterFactory(MoshiConverterFactory.create())
30 | .build()
31 | }
32 |
33 | single(named()) {
34 | AuthenticationInterceptor()
35 | }
36 |
37 | single(named()) {
38 | HttpLoggingInterceptor().apply {
39 | level = when (BuildConfig.DEBUG) {
40 | true -> HttpLoggingInterceptor.Level.BODY
41 | false -> HttpLoggingInterceptor.Level.NONE
42 | }
43 | }
44 | }
45 |
46 | single(named()) {
47 | ChuckInterceptor(Utils.getApp())
48 | }
49 |
50 | single {
51 | get()
52 | .connectTimeout(TIME_OUT_SECONDS, TimeUnit.SECONDS)
53 | .readTimeout(TIME_OUT_SECONDS, TimeUnit.SECONDS)
54 | .addInterceptor(get(named()) as Interceptor)
55 | .addInterceptor(get(named()) as Interceptor)
56 | .addInterceptor(get(named()) as Interceptor)
57 | .build()
58 | }
59 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/fragment/BaseFragment.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.fragment
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.annotation.LayoutRes
8 | import androidx.fragment.app.Fragment
9 | import cn.neday.base.router.Router
10 |
11 | /**
12 | * Fragment基类
13 | *
14 | * @author nEdAy
15 | */
16 | abstract class BaseFragment(@get:LayoutRes val layoutId: Int) : Fragment() {
17 |
18 | private var mRootView: View? = null
19 |
20 | override fun onCreateView(
21 | inflater: LayoutInflater,
22 | container: ViewGroup?,
23 | savedInstanceState: Bundle?
24 | ): View {
25 | mRootView = LayoutInflater.from(context).inflate(layoutId, container, false)
26 | return mRootView!!
27 | }
28 |
29 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
30 | super.onViewCreated(view, savedInstanceState)
31 | prepareInitView()
32 | initView()
33 | }
34 |
35 | open fun prepareInitView() {
36 | // do nothing
37 | }
38 |
39 | abstract fun initView()
40 |
41 | override fun onDestroyView() {
42 | super.onDestroyView()
43 | Router.alibabaService.destroySDK()
44 | mRootView = null
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/fragment/BaseVMFragment.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.fragment
2 |
3 | import androidx.lifecycle.Observer
4 | import cn.neday.base.viewmodel.BaseViewModel
5 | import com.blankj.utilcode.util.LogUtils
6 | import org.koin.androidx.viewmodel.ext.android.viewModel
7 | import java.lang.reflect.ParameterizedType
8 |
9 | /**
10 | * Fragment基类 + ViewModel
11 | *
12 | * @author nEdAy
13 | */
14 | abstract class BaseVMFragment(layoutId: Int) : BaseFragment(layoutId) {
15 |
16 | @Suppress("UNCHECKED_CAST")
17 | protected val mViewModel: VM by viewModel(((javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class).kotlin)
18 |
19 | override fun prepareInitView() {
20 | super.prepareInitView()
21 | lifecycle.addObserver(mViewModel)
22 | mViewModel.errMsg.observe(this, Observer {
23 | LogUtils.e(it)
24 | })
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/model/BaseModel.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.model
2 |
3 | import com.squareup.moshi.Json
4 |
5 | open class BaseModel {
6 | @Json(name = "ID")
7 | val id: Int? = null
8 | @Json(name = "CreateAt")
9 | val createAt: String? = null
10 | @Json(name = "UpdatedAt")
11 | val updatedAt: String? = null
12 | @Json(name = "DeletedAt")
13 | val deletedAt: String? = null
14 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/model/Pages.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.model
2 |
3 | data class Pages(
4 | val list: List?,
5 | val totalNum: Int?,
6 | val pageId: String?
7 | )
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/model/Response.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.model
2 |
3 | data class Response(
4 | // 时间戳 1556418473705
5 | val time: Long?,
6 | // 返回状态,0-正确,其他见错误码列表
7 | val code: Int?,
8 | // 返回状态描述 “成功”
9 | val msg: String?,
10 | val data: T?
11 | )
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/network/CoroutineDSL.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.network
2 |
3 | import androidx.lifecycle.ViewModel
4 | import androidx.lifecycle.viewModelScope
5 | import cn.neday.base.model.Response
6 | import com.blankj.utilcode.util.NetworkUtils
7 | import kotlinx.coroutines.*
8 | import java.net.SocketTimeoutException
9 | import java.net.UnknownHostException
10 | import java.util.concurrent.TimeoutException
11 |
12 | /**
13 | * execute in main thread
14 | * @param start doSomeThing first
15 | */
16 | fun ViewModel.start(start: (() -> Unit)): ViewModel {
17 | viewModelScope.launch(Dispatchers.Main) {
18 | if (NetworkUtils.isConnected()) {
19 | start()
20 | } else {
21 | // errMsg.value = StringUtils.getString(R.string.network_tips)
22 | }
23 | }
24 | return this
25 | }
26 |
27 | /**
28 | * execute in io thread pool
29 | * @param loader http request
30 | */
31 | fun ViewModel.requestAsync(loader: suspend () -> Response): Deferred> {
32 | return viewModelScope.async(Dispatchers.IO, start = CoroutineStart.LAZY) {
33 | loader()
34 | }
35 | }
36 |
37 | /**
38 | * execute in main thread
39 | * @param onSuccess callback for onSuccess
40 | * @param onError callback for onError
41 | * @param onComplete callback for onComplete
42 | */
43 | fun Deferred>.then(
44 | viewModelScope: CoroutineScope,
45 | onSuccess: suspend (Response) -> Unit,
46 | onError: suspend (String) -> Unit,
47 | onComplete: (() -> Unit)? = null
48 | ): Job {
49 | return viewModelScope.launch(context = Dispatchers.Main) {
50 | try {
51 | val response = this@then.await()
52 | if (response.code != 0) {
53 | onError("code : " + response.code + "msg : " + response.msg)
54 | } else {
55 | onSuccess(response)
56 | }
57 | } catch (e: Exception) {
58 | if (e is CancellationException) {
59 | return@launch
60 | }
61 | e.printStackTrace()
62 | when (e) {
63 | is UnknownHostException -> onError("Unknown Host Exception!")
64 | is TimeoutException -> onError("Timeout Exception!")
65 | is SocketTimeoutException -> onError("Socket Timeout Exception!")
66 | else -> onError("Other Exception!")
67 | }
68 | } finally {
69 | onComplete?.invoke()
70 | }
71 | }
72 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/network/interceptor/AuthenticationInterceptor.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.network.interceptor
2 |
3 | import cn.neday.base.config.MMKVConfig.TOKEN
4 | import com.tencent.mmkv.MMKV
5 | import okhttp3.Interceptor
6 | import okhttp3.Response
7 |
8 | class AuthenticationInterceptor : Interceptor {
9 |
10 | override fun intercept(chain: Interceptor.Chain): Response = chain
11 | .request()
12 | .newBuilder()
13 | .header("Authorization", MMKV.defaultMMKV().decodeString(TOKEN) ?: "")
14 | .build()
15 | .let { chain.proceed(it) }
16 | }
17 |
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/router/AlibabaService.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.router
2 |
3 | import android.app.Activity
4 | import com.alibaba.android.arouter.facade.template.IProvider
5 |
6 | interface AlibabaService : IProvider {
7 |
8 | fun destroySDK()
9 |
10 | fun showDetailPage(activity: Activity?, itemId: String)
11 |
12 | fun showShopPage(activity: Activity?, shopId: String)
13 |
14 | fun showAddCartPage(activity: Activity?, itemId: String)
15 |
16 | fun showMyOrdersPage(activity: Activity?, status: Int, allOrder: Boolean)
17 |
18 | fun showMyCartsPage(activity: Activity?)
19 |
20 | fun showItemURLPage(activity: Activity?, url: String)
21 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/router/AppService.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.router
2 |
3 | import com.alibaba.android.arouter.facade.template.IProvider
4 |
5 | interface AppService : IProvider
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/router/Router.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.router
2 |
3 | import com.alibaba.android.arouter.facade.Postcard
4 | import com.alibaba.android.arouter.launcher.ARouter
5 |
6 | /**
7 | * SMT Router
8 | * ARouter Helper
9 | *
10 | * @author Kevin.SuTJ
11 | */
12 | object Router {
13 | /**
14 | * Get instance of router. A
15 | * All feature U use, will be starts here.
16 | */
17 | private val instance = ARouter.getInstance()
18 |
19 | val alibabaService = getService(AlibabaService::class.java)
20 | val appService = getService(AppService::class.java)
21 |
22 | /**
23 | * Build the road map, draw a postcard.
24 | *
25 | * @param path Where you go.
26 | */
27 | fun build(path: String): Postcard {
28 | return instance.build(path)
29 | }
30 |
31 | /**
32 | * Navigation to the route with path in postcard.
33 | * No param, will be use application context.
34 | */
35 | fun navigation(path: String) {
36 | build(path).navigation()
37 | }
38 |
39 | /**
40 | * Launch the navigation by type
41 | *
42 | * @param service interface of service
43 | * @param return type
44 | * @return instance of service
45 | */
46 | private fun getService(service: Class): T {
47 | return instance.navigation(service)
48 | }
49 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/router/RouterPath.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.router
2 |
3 | object RouterPath {
4 |
5 | /**
6 | * app
7 | */
8 | const val AppService = "/app/AppService"
9 | const val LoginActivity = "/app/LoginActivity"
10 |
11 | /**
12 | * alibaba
13 | */
14 | const val AlibabaService = "/alibaba/AlibabaService"
15 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/util/ClipboardUtils.java:
--------------------------------------------------------------------------------
1 | package cn.neday.base.util;
2 |
3 | import android.content.ClipData;
4 | import android.content.ClipboardManager;
5 | import android.content.Context;
6 | import com.blankj.utilcode.util.Utils;
7 |
8 | /**
9 | *
10 | * author: Blankj
11 | * blog : http://blankj.com
12 | * time : 2016/09/25
13 | * desc : 剪贴板相关工具类
14 | *
15 | */
16 | public final class ClipboardUtils {
17 |
18 | private ClipboardUtils() {
19 | throw new UnsupportedOperationException("u can't instantiate me...");
20 | }
21 |
22 | /**
23 | * 复制文本到剪贴板
24 | *
25 | * @param text 文本
26 | */
27 | public static void copyText(final CharSequence text) {
28 | ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
29 | // noinspection ConstantConditions
30 | cm.setPrimaryClip(ClipData.newPlainText("text", text));
31 | }
32 |
33 | /**
34 | * 获取剪贴板的文本
35 | *
36 | * @return 剪贴板的文本
37 | */
38 | public static CharSequence getText() {
39 | ClipboardManager cm = (ClipboardManager) Utils.getApp().getSystemService(Context.CLIPBOARD_SERVICE);
40 | // noinspection ConstantConditions
41 | ClipData clip = cm.getPrimaryClip();
42 | if (clip != null && clip.getItemCount() > 0) {
43 | return clip.getItemAt(0).coerceToText(Utils.getApp());
44 | }
45 | return null;
46 | }
47 | }
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/util/SecurityUtils.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.util
2 |
3 | import cn.neday.base.BuildConfig
4 | import cn.neday.base.R
5 | import com.blankj.utilcode.util.AppUtils
6 | import com.blankj.utilcode.util.DeviceUtils
7 | import com.blankj.utilcode.util.StringUtils
8 | import com.blankj.utilcode.util.StringUtils.getString
9 | import com.blankj.utilcode.util.ToastUtils
10 |
11 | object SecurityUtils {
12 |
13 | private const val SIGNATURE_RELEASE = "EBB32FEB587FAA0B80C7DB915B3511ECC33BD7FF"
14 |
15 | fun checkIsAppRoot() {
16 | if (DeviceUtils.isDeviceRooted() && AppUtils.isAppRoot()) {
17 | ToastUtils.showLong(getString(R.string.root_tips))
18 | }
19 | }
20 |
21 | fun checkIsAppDebug() {
22 | if (!BuildConfig.DEBUG && AppUtils.isAppDebug()) {
23 | ToastUtils.showLong(getString(R.string.debug_tips))
24 | AppUtils.exitApp()
25 | }
26 | }
27 |
28 | // TODO : 类似token, 修改为网络验证
29 | fun checkSignature() {
30 | if (!BuildConfig.DEBUG && StringUtils.equalsIgnoreCase(SIGNATURE_RELEASE, AppUtils.getAppSignatureSHA1())) {
31 | ToastUtils.showLong(getString(R.string.signature_tips))
32 | AppUtils.exitApp()
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/base/src/main/java/cn/neday/base/viewmodel/BaseViewModel.kt:
--------------------------------------------------------------------------------
1 | package cn.neday.base.viewmodel
2 |
3 | import androidx.lifecycle.LifecycleObserver
4 | import androidx.lifecycle.ViewModel
5 | import cn.neday.base.SingleLiveEvent
6 |
7 | /**
8 | * ViewModel基类
9 | *
10 | * @author nEdAy
11 | */
12 | open class BaseViewModel : ViewModel(), LifecycleObserver {
13 |
14 | val errMsg = SingleLiveEvent()
15 | val onComplete = SingleLiveEvent()
16 | }
--------------------------------------------------------------------------------
/base/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 口袋快爆
3 | 实 惠 多 到 爆
4 | 当前版本v%1$s
5 |
6 | neday@bk.ru
7 | www.neday.cn
8 | nEdAy_
9 | 1582703866
10 |
11 | TODO
12 | 尚未开放,敬请期待
13 |
14 | 程序被修改为可调试状态
15 | 证书签名已被篡改
16 | 出于安全原因,不建议在已经ROOT的设备上运行
17 | 您已进入没有网络的异次元,请检查您的网络
18 |
19 |
--------------------------------------------------------------------------------
/base/src/test/java/cn/neday/base/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package cn.neday.base;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertEquals;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.61'
3 | repositories {
4 | google()
5 | jcenter()
6 | maven { url 'https://maven.aliyun.com/repository/public' }
7 | maven { url 'https://maven.aliyun.com/repository/google' }
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.6.0'
11 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
12 | classpath "com.alibaba:arouter-register:1.0.2"
13 | classpath 'org.jacoco:org.jacoco.core:0.8.5'
14 | classpath 'com.tencent.bugly:symtabfileuploader:2.2.1'
15 | classpath 'com.mob.sdk:MobSDK:2018.0319.1724'
16 | classpath 'com.zf.plugins:JiaGu360:1.0.1'
17 | }
18 | }
19 |
20 | allprojects {
21 | repositories {
22 | google()
23 | jcenter()
24 | maven { url 'https://jitpack.io' }
25 | maven { url 'https://maven.aliyun.com/repository/public' }
26 | maven { url 'https://maven.aliyun.com/repository/google' }
27 | maven { url 'https://maven.aliyun.com/repository/jcenter' }
28 | maven { url 'https://dl.bintray.com/umsdk/release' }
29 | maven { url 'http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/' }
30 | }
31 | }
32 |
33 | task clean(type: Delete) {
34 | delete rootProject.buildDir
35 | }
36 |
37 | ext {
38 | compileSdkVersion = 29
39 | minSdkVersion = 21
40 | targetSdkVersion = 29
41 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx4096m -XX\:MaxPermSize\=1024m -XX\:+HeapDumpOnOutOfMemoryError -Dfile.encoding\=UTF-8
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 | # Kotlin code style for this project: "official" or "obsolete":
21 | kotlin.code.style=official
22 | # Signing properties
23 | debug-signing.properties=./keystore/debug-signing.properties
24 | release-signing.properties=./keystore/release-signing.properties
25 | # Gradle
26 | org.gradle.daemon=true
27 | org.gradle.caching=true
28 | android.enableBuildCache=true
29 | # Kotlin
30 | kotlin.incremental=true
31 | kotlin.incremental.java=true
32 | kotlin.incremental.js=true
33 | kotlin.caching.enabled=true
34 | kotlin.parallel.tasks.in.project=true
35 | kapt.use.worker.api=true
36 | kapt.incremental.apt=true
37 | kapt.include.compile.classpath=false
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nEdAy/Sheep/584bc01304ba9faf03b341fb0d6590830118f572/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Aug 22 17:51:04 CST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | set DIRNAME=%~dp0
12 | if "%DIRNAME%" == "" set DIRNAME=.
13 | set APP_BASE_NAME=%~n0
14 | set APP_HOME=%DIRNAME%
15 |
16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17 | set DEFAULT_JVM_OPTS=
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windows variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 |
53 | :win9xME_args
54 | @rem Slurp the command line arguments.
55 | set CMD_LINE_ARGS=
56 | set _SKIP=2
57 |
58 | :win9xME_args_slurp
59 | if "x%~1" == "x" goto execute
60 |
61 | set CMD_LINE_ARGS=%*
62 |
63 | :execute
64 | @rem Setup the command line
65 |
66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67 |
68 | @rem Execute Gradle
69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70 |
71 | :end
72 | @rem End local scope for the variables with windows NT shell
73 | if "%ERRORLEVEL%"=="0" goto mainEnd
74 |
75 | :fail
76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77 | rem the _cmd.exe /c_ return code!
78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79 | exit /b 1
80 |
81 | :mainEnd
82 | if "%OS%"=="Windows_NT" endlocal
83 |
84 | :omega
85 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':base', ':alibaba'
2 |
--------------------------------------------------------------------------------