From fdd0db1b72f5677c4863058bb74f8f79ffe0cc0d Mon Sep 17 00:00:00 2001 From: Cyh020229 <2782998497@qq.com> Date: Tue, 9 May 2023 23:50:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=BA=94=E6=AC=A1=E5=AE=9E=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lucky_clothes/.gitignore | 14 + Lucky_clothes/.idea/.gitignore | 3 + Lucky_clothes/.idea/compiler.xml | 6 + Lucky_clothes/.idea/dbnavigator.xml | 420 ++++++++++++++++++ Lucky_clothes/.idea/gradle.xml | 20 + Lucky_clothes/.idea/jarRepositories.xml | 25 ++ Lucky_clothes/.idea/misc.xml | 10 + Lucky_clothes/app/.gitignore | 1 + Lucky_clothes/app/build.gradle | 36 ++ Lucky_clothes/app/proguard-rules.pro | 21 + .../ExampleInstrumentedTest.java | 27 ++ .../app/src/main/AndroidManifest.xml | 30 ++ .../example/orangesale_end/MainActivity.java | 92 ++++ .../activity/CategoryActivity.java | 90 ++++ .../activity/IndexActivity.java | 128 ++++++ .../activity/RegisterActivity.java | 176 ++++++++ .../orangesale_end/activity/UserActivity.java | 66 +++ .../orangesale_end/adapter/Adapter.java | 69 +++ .../adapter/ListViewAdapter.java | 78 ++++ .../adapter/ProductAdapter.java | 68 +++ .../orangesale_end/entity/Condition.java | 30 ++ .../orangesale_end/entity/OrangeMessage.java | 52 +++ .../orangesale_end/entity/OrangeProduct.java | 64 +++ .../entity/OrangeProductPack.java | 66 +++ .../orangesale_end/entity/OrangeUser.java | 59 +++ .../orangesale_end/entity/Product.java | 43 ++ .../orangesale_end/entity/ShoppingCart.java | 44 ++ .../fragment/IndexFragment.java | 137 ++++++ .../fragment/PearsonFragment.java | 64 +++ .../fragment/ProductFragment.java | 102 +++++ .../fragment/SetDetailFragment.java | 53 +++ .../fragment/ShoppingCartFragment.java | 61 +++ .../netrequest/OkHttpClientProduct.java | 80 ++++ .../netrequest/OkHttpMessage.java | 39 ++ .../orangesale_end/netrequest/OkHttpUser.java | 71 +++ .../orangesale_end/service/TimeService.java | 105 +++++ .../drawable-v24/ic_launcher_foreground.xml | 34 ++ .../app/src/main/res/drawable/address.png | Bin 0 -> 1028 bytes .../app/src/main/res/drawable/all.png | Bin 0 -> 1045 bytes .../app/src/main/res/drawable/arrow_down.png | Bin 0 -> 368 bytes .../app/src/main/res/drawable/arrow_left.png | Bin 0 -> 231 bytes .../app/src/main/res/drawable/arrow_right.png | Bin 0 -> 233 bytes .../src/main/res/drawable/button_login.xml | 15 + .../src/main/res/drawable/button_register.xml | 15 + .../app/src/main/res/drawable/cart.png | Bin 0 -> 5573 bytes .../app/src/main/res/drawable/city.png | Bin 0 -> 790 bytes .../res/drawable/ic_launcher_background.xml | 170 +++++++ .../res/drawable/ic_launcher_foreground.xml | 34 ++ .../app/src/main/res/drawable/index.png | Bin 0 -> 1272 bytes .../app/src/main/res/drawable/index_menu.xml | 16 + .../app/src/main/res/drawable/kuzhuang.jpg | Bin 0 -> 1452 bytes .../app/src/main/res/drawable/lianyiqun.jpg | Bin 0 -> 2110 bytes .../app/src/main/res/drawable/niuzaiku.jpg | Bin 0 -> 1387 bytes .../app/src/main/res/drawable/password.png | Bin 0 -> 1462 bytes .../app/src/main/res/drawable/pearson.png | Bin 0 -> 3302 bytes .../app/src/main/res/drawable/price.png | Bin 0 -> 1047 bytes .../app/src/main/res/drawable/product.png | Bin 0 -> 1315 bytes .../app/src/main/res/drawable/qunzhuang.jpg | Bin 0 -> 1801 bytes .../app/src/main/res/drawable/salenum.png | Bin 0 -> 1294 bytes .../app/src/main/res/drawable/search.png | Bin 0 -> 1299 bytes .../app/src/main/res/drawable/setting.png | Bin 0 -> 1101 bytes .../app/src/main/res/drawable/sex.png | Bin 0 -> 1509 bytes .../src/main/res/drawable/shoppingcart.png | Bin 0 -> 1155 bytes .../src/main/res/drawable/shuangzhuang.jpg | Bin 0 -> 1653 bytes .../app/src/main/res/drawable/shuiguo.png | Bin 0 -> 1212 bytes .../res/drawable/spinner_drop_down_shape.xml | 16 + .../src/main/res/drawable/sure_apssword.png | Bin 0 -> 799 bytes .../src/main/res/drawable/tab_menu_text.xml | 5 + .../app/src/main/res/drawable/time.png | Bin 0 -> 2219 bytes .../app/src/main/res/drawable/title_yi.png | Bin 0 -> 2446 bytes .../app/src/main/res/drawable/touzhuang.jpg | Bin 0 -> 1574 bytes .../app/src/main/res/drawable/user.png | Bin 0 -> 2173 bytes .../src/main/res/drawable/user_account.png | Bin 0 -> 1045 bytes .../src/main/res/drawable/user_general.png | Bin 0 -> 402 bytes .../app/src/main/res/drawable/user_icon.png | Bin 0 -> 5995 bytes .../app/src/main/res/drawable/user_pay.png | Bin 0 -> 554 bytes .../app/src/main/res/drawable/user_sex.png | Bin 0 -> 1123 bytes .../app/src/main/res/drawable/waitao.jpg | Bin 0 -> 1824 bytes .../app/src/main/res/drawable/weiyi.jpg | Bin 0 -> 1430 bytes .../app/src/main/res/layout/activity_main.xml | 29 ++ .../src/main/res/layout/cart_have_product.xml | 15 + .../src/main/res/layout/cart_no_product.xml | 45 ++ .../src/main/res/layout/category_detail.xml | 16 + .../main/res/layout/category_list_item.xml | 14 + .../res/layout/categoty_detail_content.xml | 32 ++ .../src/main/res/layout/content_category.xml | 29 ++ .../app/src/main/res/layout/content_index.xml | 221 +++++++++ .../app/src/main/res/layout/content_nav.xml | 120 +++++ .../src/main/res/layout/content_product.xml | 27 ++ .../main/res/layout/content_product_title.xml | 33 ++ .../app/src/main/res/layout/content_user.xml | 234 ++++++++++ .../app/src/main/res/layout/index_famous.xml | 55 +++ .../res/layout/product_condition_item.xml | 39 ++ .../main/res/layout/shopping_cart_product.xml | 12 + .../main/res/layout/shoppingcart_title.xml | 32 ++ .../app/src/main/res/layout/user_login.xml | 99 +++++ .../app/src/main/res/layout/user_register.xml | 168 +++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 5 + .../app/src/main/res/values/styles.xml | 11 + .../orangesale_end/ExampleUnitTest.java | 17 + Lucky_clothes/build.gradle | 27 ++ Lucky_clothes/gradle.properties | 20 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Lucky_clothes/gradlew | 172 +++++++ Lucky_clothes/gradlew.bat | 84 ++++ Lucky_clothes/settings.gradle | 2 + Lucky_clothes_end/.gitignore | 31 ++ .../.mvn/wrapper/MavenWrapperDownloader.java | 118 +++++ .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + Lucky_clothes_end/mvnw | 310 +++++++++++++ Lucky_clothes_end/mvnw.cmd | 182 ++++++++ Lucky_clothes_end/pom.xml | 83 ++++ .../com/orangesale/cn/OrangeApplication.java | 13 + .../orangesale/cn/config/WebMvcConfigure.java | 30 ++ .../controller/OrangeMessageController.java | 82 ++++ .../controller/OrangeProductController.java | 152 +++++++ .../cn/controller/OrangeSaleController.java | 82 ++++ .../OrangeShoppingCartController.java | 15 + .../cn/controller/OrangeUserController.java | 64 +++ .../orangesale/cn/entity/OrangeMessage.java | 17 + .../orangesale/cn/entity/OrangeProduct.java | 21 + .../cn/entity/OrangeProductSale.java | 20 + .../com/orangesale/cn/entity/OrangeSale.java | 14 + .../cn/entity/OrangeShoppingCart.java | 15 + .../com/orangesale/cn/entity/OrangeUser.java | 16 + .../orangesale/cn/mapper/MessageMapper.java | 32 ++ .../orangesale/cn/mapper/ProductMapper.java | 55 +++ .../com/orangesale/cn/mapper/SaleMapper.java | 40 ++ .../cn/mapper/ShoppingCartMapper.java | 11 + .../com/orangesale/cn/mapper/UserMapper.java | 28 ++ .../orangesale/cn/service/MessageService.java | 44 ++ .../orangesale/cn/service/ProductService.java | 67 +++ .../orangesale/cn/service/SaleService.java | 110 +++++ .../cn/service/ShoppingCartService.java | 12 + .../orangesale/cn/service/UserService.java | 37 ++ .../src/main/resources/application.properties | 18 + .../main/resources/mapper/MessageMapper.xml | 16 + .../main/resources/mapper/ProductMapper.xml | 26 ++ .../src/main/resources/mapper/SaleMapper.xml | 17 + .../src/main/resources/mapper/UserMapper.xml | 11 + .../src/main/resources/static/back.jpeg | Bin 0 -> 147014 bytes 156 files changed, 6126 insertions(+) create mode 100644 Lucky_clothes/.gitignore create mode 100644 Lucky_clothes/.idea/.gitignore create mode 100644 Lucky_clothes/.idea/compiler.xml create mode 100644 Lucky_clothes/.idea/dbnavigator.xml create mode 100644 Lucky_clothes/.idea/gradle.xml create mode 100644 Lucky_clothes/.idea/jarRepositories.xml create mode 100644 Lucky_clothes/.idea/misc.xml create mode 100644 Lucky_clothes/app/.gitignore create mode 100644 Lucky_clothes/app/build.gradle create mode 100644 Lucky_clothes/app/proguard-rules.pro create mode 100644 Lucky_clothes/app/src/androidTest/java/com/example/orangesale_end/ExampleInstrumentedTest.java create mode 100644 Lucky_clothes/app/src/main/AndroidManifest.xml create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/MainActivity.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/CategoryActivity.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/IndexActivity.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/RegisterActivity.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/UserActivity.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/Adapter.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ListViewAdapter.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ProductAdapter.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Condition.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeMessage.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProduct.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProductPack.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeUser.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Product.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/ShoppingCart.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/IndexFragment.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/PearsonFragment.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ProductFragment.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/SetDetailFragment.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ShoppingCartFragment.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpClientProduct.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpMessage.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpUser.java create mode 100644 Lucky_clothes/app/src/main/java/com/example/orangesale_end/service/TimeService.java create mode 100644 Lucky_clothes/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/address.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/all.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/arrow_down.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/arrow_left.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/arrow_right.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/button_login.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/button_register.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/cart.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/city.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/index.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/index_menu.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/kuzhuang.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/lianyiqun.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/niuzaiku.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/password.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/pearson.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/price.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/product.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/qunzhuang.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/salenum.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/search.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/setting.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/sex.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/shoppingcart.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/shuangzhuang.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/shuiguo.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/spinner_drop_down_shape.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/sure_apssword.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/tab_menu_text.xml create mode 100644 Lucky_clothes/app/src/main/res/drawable/time.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/title_yi.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/touzhuang.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/user.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/user_account.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/user_general.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/user_icon.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/user_pay.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/user_sex.png create mode 100644 Lucky_clothes/app/src/main/res/drawable/waitao.jpg create mode 100644 Lucky_clothes/app/src/main/res/drawable/weiyi.jpg create mode 100644 Lucky_clothes/app/src/main/res/layout/activity_main.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/cart_have_product.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/cart_no_product.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/category_detail.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/category_list_item.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/categoty_detail_content.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_category.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_index.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_nav.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_product.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_product_title.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/content_user.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/index_famous.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/product_condition_item.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/shopping_cart_product.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/shoppingcart_title.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/user_login.xml create mode 100644 Lucky_clothes/app/src/main/res/layout/user_register.xml create mode 100644 Lucky_clothes/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Lucky_clothes/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Lucky_clothes/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Lucky_clothes/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Lucky_clothes/app/src/main/res/values/colors.xml create mode 100644 Lucky_clothes/app/src/main/res/values/strings.xml create mode 100644 Lucky_clothes/app/src/main/res/values/styles.xml create mode 100644 Lucky_clothes/app/src/test/java/com/example/orangesale_end/ExampleUnitTest.java create mode 100644 Lucky_clothes/build.gradle create mode 100644 Lucky_clothes/gradle.properties create mode 100644 Lucky_clothes/gradle/wrapper/gradle-wrapper.jar create mode 100644 Lucky_clothes/gradle/wrapper/gradle-wrapper.properties create mode 100644 Lucky_clothes/gradlew create mode 100644 Lucky_clothes/gradlew.bat create mode 100644 Lucky_clothes/settings.gradle create mode 100644 Lucky_clothes_end/.gitignore create mode 100644 Lucky_clothes_end/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 Lucky_clothes_end/.mvn/wrapper/maven-wrapper.jar create mode 100644 Lucky_clothes_end/.mvn/wrapper/maven-wrapper.properties create mode 100644 Lucky_clothes_end/mvnw create mode 100644 Lucky_clothes_end/mvnw.cmd create mode 100644 Lucky_clothes_end/pom.xml create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/OrangeApplication.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/config/WebMvcConfigure.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/controller/OrangeMessageController.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/controller/OrangeProductController.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/controller/OrangeSaleController.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/controller/OrangeShoppingCartController.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/controller/OrangeUserController.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeMessage.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeProduct.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeProductSale.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeSale.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeShoppingCart.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/entity/OrangeUser.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/mapper/MessageMapper.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/mapper/ProductMapper.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/mapper/SaleMapper.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/mapper/ShoppingCartMapper.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/mapper/UserMapper.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/service/MessageService.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/service/ProductService.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/service/SaleService.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/service/ShoppingCartService.java create mode 100644 Lucky_clothes_end/src/main/java/com/orangesale/cn/service/UserService.java create mode 100644 Lucky_clothes_end/src/main/resources/application.properties create mode 100644 Lucky_clothes_end/src/main/resources/mapper/MessageMapper.xml create mode 100644 Lucky_clothes_end/src/main/resources/mapper/ProductMapper.xml create mode 100644 Lucky_clothes_end/src/main/resources/mapper/SaleMapper.xml create mode 100644 Lucky_clothes_end/src/main/resources/mapper/UserMapper.xml create mode 100644 Lucky_clothes_end/src/main/resources/static/back.jpeg diff --git a/Lucky_clothes/.gitignore b/Lucky_clothes/.gitignore new file mode 100644 index 0000000..603b140 --- /dev/null +++ b/Lucky_clothes/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx diff --git a/Lucky_clothes/.idea/.gitignore b/Lucky_clothes/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Lucky_clothes/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Lucky_clothes/.idea/compiler.xml b/Lucky_clothes/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/Lucky_clothes/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/.idea/dbnavigator.xml b/Lucky_clothes/.idea/dbnavigator.xml new file mode 100644 index 0000000..d9b9424 --- /dev/null +++ b/Lucky_clothes/.idea/dbnavigator.xml @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/.idea/gradle.xml b/Lucky_clothes/.idea/gradle.xml new file mode 100644 index 0000000..4c3c1d4 --- /dev/null +++ b/Lucky_clothes/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/.idea/jarRepositories.xml b/Lucky_clothes/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/Lucky_clothes/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/.idea/misc.xml b/Lucky_clothes/.idea/misc.xml new file mode 100644 index 0000000..bdd9278 --- /dev/null +++ b/Lucky_clothes/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/.gitignore b/Lucky_clothes/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/Lucky_clothes/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Lucky_clothes/app/build.gradle b/Lucky_clothes/app/build.gradle new file mode 100644 index 0000000..73172a3 --- /dev/null +++ b/Lucky_clothes/app/build.gradle @@ -0,0 +1,36 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.2" + defaultConfig { + applicationId "com.example.orangesale_end" + minSdkVersion 23 + targetSdkVersion 31 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation 'liji.library.dev:citypickerview:1.1.0' + implementation "com.squareup.okhttp3:okhttp:4.2.2" + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.12' +} diff --git a/Lucky_clothes/app/proguard-rules.pro b/Lucky_clothes/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/Lucky_clothes/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/Lucky_clothes/app/src/androidTest/java/com/example/orangesale_end/ExampleInstrumentedTest.java b/Lucky_clothes/app/src/androidTest/java/com/example/orangesale_end/ExampleInstrumentedTest.java new file mode 100644 index 0000000..0ef57ae --- /dev/null +++ b/Lucky_clothes/app/src/androidTest/java/com/example/orangesale_end/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package com.example.orangesale_end; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.example.orangesale_end", appContext.getPackageName()); + } +} diff --git a/Lucky_clothes/app/src/main/AndroidManifest.xml b/Lucky_clothes/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..17b8c51 --- /dev/null +++ b/Lucky_clothes/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/MainActivity.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/MainActivity.java new file mode 100644 index 0000000..5ad8815 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/MainActivity.java @@ -0,0 +1,92 @@ +package com.example.orangesale_end; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Looper; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.orangesale_end.activity.IndexActivity; +import com.example.orangesale_end.activity.RegisterActivity; +import com.example.orangesale_end.entity.OrangeUser; +import com.example.orangesale_end.netrequest.OkHttpUser; + +import java.io.IOException; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + private Button registerButton, loginButton; + private EditText usernameText, paswdEdit; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.user_login); + init(); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.register: + Intent intent = new Intent(MainActivity.this, RegisterActivity.class); + startActivity(intent); + break; + case R.id.login: + //注册时,我们引入了数据库,登录这里可以通过数据库进行验证,验证跳转到首页,不通过进行提示 + Thread thread = new Thread(runnable); + thread.start(); + break; + } + + } + + //界面组件初始化 + private void init() { + usernameText = findViewById(R.id.username); + paswdEdit = findViewById(R.id.password); + loginButton = findViewById(R.id.login); + loginButton.setOnClickListener(this); + registerButton = findViewById(R.id.register); + registerButton.setOnClickListener(this); + } + + /** + * 登录验证 + */ + Runnable runnable = new Runnable() { + @Override + public void run() { + String username = usernameText.getText().toString(); + String password = paswdEdit.getText().toString(); + OrangeUser orangeUser = new OrangeUser(); + orangeUser.setUsername(username); + orangeUser.setPassword(password); + OkHttpUser okHttpUser = new OkHttpUser(); + OrangeUser orangeUser1 = null; + try { + orangeUser1 = okHttpUser.userLogin(orangeUser); + if (orangeUser1 != null) { + Intent intent1 = new Intent(MainActivity.this, IndexActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("username", usernameText.getText().toString()); + bundle.putString("password", orangeUser1.getPassword()); + bundle.putString("city", orangeUser1.getCity()); + bundle.putString("sex", orangeUser1.getSex()); + intent1.putExtras(bundle); + startActivity(intent1); + } else { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(MainActivity.this, "账号或者密码错误", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }; +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/CategoryActivity.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/CategoryActivity.java new file mode 100644 index 0000000..c1cca4d --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/CategoryActivity.java @@ -0,0 +1,90 @@ +package com.example.orangesale_end.activity; + +import android.app.Activity; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.widget.ListView; + +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.adapter.Adapter; +import com.example.orangesale_end.entity.Product; +import com.example.orangesale_end.fragment.SetDetailFragment; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +public class CategoryActivity extends Activity { + public OnChangeListener onchangedListener; + private List productList; + private List productCategory = new ArrayList<>(); + private ListView titleList; + private Adapter adapter; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.content_category); + initData(); + init(); + SetDetailFragment fragment = new SetDetailFragment(); + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction transaction = fragmentManager.beginTransaction(); + transaction.replace(R.id.category_detail, fragment); + transaction.commit(); + titleList.setOnItemClickListener((parent, view, position, id) -> { + adapter.setSelectedPosition(position); + adapter.notifyDataSetInvalidated(); + if (onchangedListener != null) { + onchangedListener.changeText(productList.get(position)); + } + }); + + } + + public void setOnChangeListener(OnChangeListener onChangeListener) { + this.onchangedListener = onChangeListener; + } + + public interface OnChangeListener { + void changeText(Product product); + } + + /** + * 初始化数据 + */ + private void initData() { + productList = new ArrayList<>(); + productCategory.add("裙装"); + productCategory.add("裤装"); + productCategory.add("上装"); + Product product = new Product(); + product.setImageUrlId(R.drawable.qunzhuang); + product.setProductName("裤装"); + product.setProductPrice(new BigDecimal("9.9")); + Product product1 = new Product(); + product1.setImageUrlId(R.drawable.kuzhuang); + product1.setProductName("上装"); + product1.setProductPrice(new BigDecimal("29.9")); + Product product2 = new Product(); + product2.setImageUrlId(R.drawable.shuangzhuang); + product2.setProductName("shangzhuang"); + product2.setProductPrice(new BigDecimal("19.9")); + productList.add(product); + productList.add(product1); + productList.add(product2); + } + + /** + * 初始化组件 + */ + private void init() { + titleList = findViewById(R.id.category_title_list); + adapter = new Adapter(productCategory, CategoryActivity.this); + titleList.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/IndexActivity.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/IndexActivity.java new file mode 100644 index 0000000..e399cfb --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/IndexActivity.java @@ -0,0 +1,128 @@ +package com.example.orangesale_end.activity; + +import android.app.Activity; +import android.app.FragmentTransaction; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.fragment.IndexFragment; +import com.example.orangesale_end.fragment.PearsonFragment; +import com.example.orangesale_end.fragment.ProductFragment; +import com.example.orangesale_end.fragment.ShoppingCartFragment; +import com.example.orangesale_end.service.TimeService; + +public class IndexActivity extends Activity implements View.OnClickListener { + private IndexFragment indexFragment; + private ProductFragment productFragment; + private ShoppingCartFragment shoppingCartFragment; + private PearsonFragment pearsonFragment; + private LinearLayout indexLine, productLine, shoppingCartLine, pearsonLine; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + init(); + initIndexFragment(); + Thread thread = new Thread(runnable); + thread.start(); + } + + /** + * 组件初始化 + */ + private void init() { + indexLine = findViewById(R.id.content_index); + indexLine.setOnClickListener(this); + productLine = findViewById(R.id.content_product); + productLine.setOnClickListener(this); + shoppingCartLine = findViewById(R.id.content_cart); + shoppingCartLine.setOnClickListener(this); + pearsonLine = findViewById(R.id.content_pearson); + pearsonLine.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.content_index: + initIndexFragment(); + break; + case R.id.content_product: + initproductFragment(); + break; + case R.id.content_cart: + initshoppingCartFragment(); + break; + case R.id.content_pearson: + initpearsonFragment(); + break; + } + } + + /** + * 初始化首页Fragment + */ + private void initIndexFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (indexFragment == null) { + indexFragment = new IndexFragment(); + } + transaction.replace(R.id.main_content0, indexFragment); + transaction.commit(); + } + + /** + * 初始化产品Fragment + */ + private void initproductFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (productFragment == null) { + productFragment = new ProductFragment(); + } + transaction.replace(R.id.main_content0, productFragment); + transaction.commit(); + } + + /** + * 初始化购物车Fragment + */ + private void initshoppingCartFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (shoppingCartFragment == null) { + shoppingCartFragment = new ShoppingCartFragment(); + } + transaction.replace(R.id.main_content0, shoppingCartFragment); + transaction.commit(); + } + + /** + * 初始化个人Fragment + */ + private void initpearsonFragment() { + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (pearsonFragment == null) { + Intent intent = IndexActivity.this.getIntent(); + Bundle bundle = intent.getExtras(); + pearsonFragment = new PearsonFragment(); + pearsonFragment.setArguments(bundle); + } + transaction.replace(R.id.main_content0, pearsonFragment); + transaction.commit(); + } + + Runnable runnable = () -> { + Intent intent = new Intent(IndexActivity.this, TimeService.class); + startService(intent); + }; + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/RegisterActivity.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/RegisterActivity.java new file mode 100644 index 0000000..6601d99 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/RegisterActivity.java @@ -0,0 +1,176 @@ +package com.example.orangesale_end.activity; + +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Looper; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.lljjcoder.citypickerview.widget.CityPicker; +import com.example.orangesale_end.R; +import com.example.orangesale_end.entity.OrangeUser; +import com.example.orangesale_end.netrequest.OkHttpUser; + +import java.io.IOException; + +public class RegisterActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener { + private EditText usernameEdit, passwordEdit, surePasswordEdit; + private TextView cityText; + private CityPicker cityPicker; + private Button regButton; + private RadioGroup sexGroup; + private String sexStr = "男"; + + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.user_register); + init(); + } + + /** + * 界面组件初始化 + */ + private void init() { + cityText = findViewById(R.id.reg_province); + cityText.setOnClickListener(this); + usernameEdit = findViewById(R.id.reg_username); + passwordEdit = findViewById(R.id.reg_password); + surePasswordEdit = findViewById(R.id.reg_sure_password); + regButton = findViewById(R.id.reg_register); + regButton.setOnClickListener(this); + sexGroup = findViewById(R.id.sex); + sexGroup.setOnCheckedChangeListener(this); + + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.reg_province: + initCityPicker(); + cityPicker.show(); + break; + case R.id.reg_register: + //注册验证方法 + //validateRegister(); + Thread thread = new Thread(runnable); + thread.start(); + break; + + } + } + + /** + * 初始化城市选择器 + */ + public void initCityPicker() { + cityPicker = new CityPicker.Builder(RegisterActivity.this) + .textSize(16) + .title("地址选择") + .backgroundPop(0xa0000000) + .titleBackgroundColor("#EFB81C") + .titleTextColor("#000000") + .backgroundPop(0xa0000000) + .confirTextColor("#000000") + .cancelTextColor("#000000") + .province("江西省") + .city("赣州市") + .district("章贡区") + .textColor(Color.parseColor("#000000")) + .provinceCyclic(true) + .cityCyclic(false) + .districtCyclic(false) + .visibleItemsCount(7) + .itemPadding(10) + .onlyShowProvinceAndCity(false) + .build(); + cityPicker.setOnCityItemClickListener(new CityPicker.OnCityItemClickListener() { + @Override + public void onSelected(String... strings) { + String province = strings[0]; + String city = strings[1]; + String district = strings[2]; + cityText.setText(String.format("%s %s %s", province, city, district)); + } + + @Override + public void onCancel() { + } + }); + + } + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + //根据用户选择来改变sex的值 + sexStr = checkedId == R.id.reg_man ? "男" : "女"; + } + + /** + * 注册验证 + */ + Runnable runnable = new Runnable() { + @Override + public void run() { + String username = usernameEdit.getText().toString(); + String password = passwordEdit.getText().toString(); + String surePassword = surePasswordEdit.getText().toString(); + String city = cityText.getText().toString(); + //判断两次密码是否输入一致 + if (password.equals(surePassword)) { + //这里也可以再进行其它的验证,如是否符合要求等,符合就进行插入数据库操作 + if (!username.equals("") || !password.equals("")) { + if (!city.equals("")) { + Bundle bundle = new Bundle(); + bundle.putString("username", username); + bundle.putString("password", password); + bundle.putString("sex", sexStr); + bundle.putString("city", city); + OrangeUser orangeUser = new OrangeUser(); + orangeUser.setUsername(username); + orangeUser.setPassword(password); + orangeUser.setCity(city); + orangeUser.setSex(sexStr); + //将使用安卓自身带的SQLite数据库换成调用okhttp的方式 + OkHttpUser okHttpUser = new OkHttpUser(); + try { + if (okHttpUser.userRegister(orangeUser)) { + Intent intent = new Intent(RegisterActivity.this, IndexActivity.class); + intent.putExtras(bundle); + startActivity(intent); + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "注册失败!", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "请选择地址", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "账号或密码未填写", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } else { + Looper.prepare(); + Toast.makeText(RegisterActivity.this, "两次密码输入不一致", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } + }; +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/UserActivity.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/UserActivity.java new file mode 100644 index 0000000..f9ef766 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/activity/UserActivity.java @@ -0,0 +1,66 @@ +package com.example.orangesale_end.activity; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; + +public class UserActivity extends Activity implements View.OnClickListener { + private ImageView userIconImage; + private TextView usernameText, userSexText, userCityText; + private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine, userSearchProductLine; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.content_user); + init(); + } + + /** + * 组件初始化 + */ + private void init() { + userIconImage = findViewById(R.id.user_icon); + usernameText = findViewById(R.id.user_username); + userSexText = findViewById(R.id.user_sex); + userCityText = findViewById(R.id.user_city); + usernameLine = findViewById(R.id.user_username_line); + userSexline = findViewById(R.id.user_sex_line); + userCityLine = findViewById(R.id.user_city_line); + userPayLine = findViewById(R.id.user_pay); + userSettingLine = findViewById(R.id.user_setting); + userGeneralLine = findViewById(R.id.user_general); +// userSearchProductLine = findViewById(R.id.user_searchProduct); + userSearchProductLine.setOnClickListener(this); + setData(); + } + + /** + * 组件赋值 + */ + private void setData() { + Intent intent = UserActivity.this.getIntent(); + Bundle bundle = intent.getExtras(); + usernameText.setText(String.format("用户名:%s", bundle.getString("username"))); + userSexText.setText(String.format("性别:%s", bundle.getString("sex"))); + userCityText.setText(String.format("城市:%s", bundle.getString("city"))); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + /*case R.id.user_searchProduct: + Intent intent1 = new Intent(UserActivity.this, CategoryActivity.class); + startActivity(intent1); + break;*/ + } + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/Adapter.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/Adapter.java new file mode 100644 index 0000000..7b5b02e --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/Adapter.java @@ -0,0 +1,69 @@ +package com.example.orangesale_end.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.example.orangesale_end.R; + +import java.util.List; + +public class Adapter extends BaseAdapter { + private List productCategory; + private LayoutInflater layoutInflater; + private int selectionPosition = -1; + + public Adapter(List productCategory, Context context) { + this.productCategory = productCategory; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return productCategory.size(); + } + + @Override + public Object getItem(int position) { + return productCategory.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder = null; + if (convertView == null) { + viewHolder = new ViewHolder(); + convertView = layoutInflater.inflate(R.layout.category_list_item, null); + Log.i("adapts", "getView: " + convertView); + viewHolder.tv = convertView.findViewById(R.id.categor_titles); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + viewHolder.tv.setText(productCategory.get(position)); + if (selectionPosition == position) { + viewHolder.tv.setBackgroundColor(Color.YELLOW); + } else { + viewHolder.tv.setBackgroundColor(Color.WHITE); + } + return convertView; + } + + public void setSelectedPosition(int position) { + this.selectionPosition = position; + } + + class ViewHolder { + TextView tv; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ListViewAdapter.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ListViewAdapter.java new file mode 100644 index 0000000..39c0e88 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ListViewAdapter.java @@ -0,0 +1,78 @@ +package com.example.orangesale_end.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.entity.Condition; + +import java.util.List; + +public class ListViewAdapter extends BaseAdapter { + private List conditionList; + private LayoutInflater layoutInflater; + private int selectedPosition = -1; + private int selectColor = Color.GRAY; + + public ListViewAdapter(Context context, List conditionList) { + this.conditionList = conditionList; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return conditionList.size(); + } + + @Override + public Object getItem(int position) { + return conditionList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.product_condition_item, null); + viewHolder = new ViewHolder(); + viewHolder.imageView = convertView.findViewById(R.id.condition_icon); + viewHolder.jiange = convertView.findViewById(R.id.image_jiange); + viewHolder.textView = convertView.findViewById(R.id.condition_name); + viewHolder.linearLayout = convertView.findViewById(R.id.item_bg); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + Condition condition = conditionList.get(position); + if (condition != null) { + viewHolder.imageView.setBackgroundResource(condition.getConditionIcon()); + viewHolder.textView.setText(condition.getConditionName()); + viewHolder.jiange.setBackgroundColor(Color.rgb(207, 207, 207)); + if (selectedPosition == position) { + viewHolder.linearLayout.setBackgroundColor(selectColor); + } + + } + return convertView; + } + + class ViewHolder { + ImageView imageView, jiange; + TextView textView; + LinearLayout linearLayout; + } + + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ProductAdapter.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ProductAdapter.java new file mode 100644 index 0000000..72c6f20 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/adapter/ProductAdapter.java @@ -0,0 +1,68 @@ +package com.example.orangesale_end.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.entity.OrangeProductPack; + +import java.util.List; + +public class ProductAdapter extends BaseAdapter { + //private List productList; + private List orangeProductList; + private LayoutInflater layoutInflater; + + public ProductAdapter(Context context, List orangeProductList) { + this.orangeProductList = orangeProductList; + this.layoutInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + return orangeProductList.size(); + } + + @Override + public Object getItem(int position) { + return orangeProductList.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder viewHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.categoty_detail_content, null); + viewHolder = new ViewHolder(); + viewHolder.productImage = convertView.findViewById(R.id.category_product_image); + viewHolder.productName = convertView.findViewById(R.id.category_product_name); + viewHolder.productPrice = convertView.findViewById(R.id.category_product_price); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + OrangeProductPack product = orangeProductList.get(position); + if (product != null) { + viewHolder.productImage.setImageBitmap(product.getImgBitmap()); + viewHolder.productName.setText(product.getName()); + viewHolder.productPrice.setText(String.format("%s元", String.valueOf(product.getPrice()))); + } + return convertView; + } + + class ViewHolder { + ImageView productImage; + TextView productName, productPrice; + } + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Condition.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Condition.java new file mode 100644 index 0000000..960bf61 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Condition.java @@ -0,0 +1,30 @@ +package com.example.orangesale_end.entity; + +public class Condition { + private Integer conditionIcon; + private String conditionName; + + public Integer getConditionIcon() { + return conditionIcon; + } + + public void setConditionIcon(Integer conditionIcon) { + this.conditionIcon = conditionIcon; + } + + public String getConditionName() { + return conditionName; + } + + public void setConditionName(String conditionName) { + this.conditionName = conditionName; + } + + @Override + public String toString() { + return "Condition{" + + "conditionIcon=" + conditionIcon + + ", conditionName='" + conditionName + '\'' + + '}'; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeMessage.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeMessage.java new file mode 100644 index 0000000..eb7a058 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeMessage.java @@ -0,0 +1,52 @@ +package com.example.orangesale_end.entity; + +import java.sql.Timestamp; + +public class OrangeMessage { + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Timestamp getSendTime() { + return sendTime; + } + + public void setSendTime(Timestamp sendTime) { + this.sendTime = sendTime; + } + + public String getUsed() { + return used; + } + + public void setUsed(String used) { + this.used = used; + } + + private Integer id; + private String content; + private Timestamp sendTime; + private String used; + + @Override + public String toString() { + return "OrangeMessage{" + + "id=" + id + + ", content='" + content + '\'' + + ", sendTime=" + sendTime + + ", used='" + used + '\'' + + '}'; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProduct.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProduct.java new file mode 100644 index 0000000..6ce06d9 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProduct.java @@ -0,0 +1,64 @@ +package com.example.orangesale_end.entity; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class OrangeProduct { + private Integer id; + private String name; + private BigDecimal price; + private String imgUrl; + + @Override + public String toString() { + return "OrangeProduct{" + + "id=" + id + + ", name='" + name + '\'' + + ", price=" + price + + ", imgUrl='" + imgUrl + '\'' + + ", addTime=" + addTime + + '}'; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + private Timestamp addTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProductPack.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProductPack.java new file mode 100644 index 0000000..0acf008 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeProductPack.java @@ -0,0 +1,66 @@ +package com.example.orangesale_end.entity; + +import android.graphics.Bitmap; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +public class OrangeProductPack { + private Integer id; + private String name; + private Timestamp addTime; + private Bitmap imgBitmap; + + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + + private BigDecimal price; + + @Override + public String toString() { + return "OrangeProductPack{" + + "id=" + id + + ", name='" + name + '\'' + + ", addTime=" + addTime + + ", imgBitmap=" + imgBitmap + + ", price=" + price + + '}'; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Timestamp getAddTime() { + return addTime; + } + + public void setAddTime(Timestamp addTime) { + this.addTime = addTime; + } + + public Bitmap getImgBitmap() { + return imgBitmap; + } + + public void setImgBitmap(Bitmap imgBitmap) { + this.imgBitmap = imgBitmap; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeUser.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeUser.java new file mode 100644 index 0000000..91c6ffc --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/OrangeUser.java @@ -0,0 +1,59 @@ +package com.example.orangesale_end.entity; + +public class OrangeUser { + private Integer id; + private String username; + private String password; + private String sex; + private String city; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + @Override + public String toString() { + return "OrangeUser{" + + "username='" + username + '\'' + + ", password='" + password + '\'' + + ", sex='" + sex + '\'' + + ", city='" + city + '\'' + + '}'; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Product.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Product.java new file mode 100644 index 0000000..f762103 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/Product.java @@ -0,0 +1,43 @@ +package com.example.orangesale_end.entity; + +import java.math.BigDecimal; + +public class Product { + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public BigDecimal getProductPrice() { + return productPrice; + } + + public void setProductPrice(BigDecimal productPrice) { + this.productPrice = productPrice; + } + + public Integer getImageUrlId() { + return imageUrlId; + } + + public void setImageUrlId(Integer imageUrlId) { + this.imageUrlId = imageUrlId; + } + + private Integer imageUrlId; + private String productName; + private BigDecimal productPrice; + + @Override + public String toString() { + return "Product{" + + "imageUrlId=" + imageUrlId + + ", productName='" + productName + '\'' + + ", productPrice=" + productPrice + + '}'; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/ShoppingCart.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/ShoppingCart.java new file mode 100644 index 0000000..fe38c7c --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/entity/ShoppingCart.java @@ -0,0 +1,44 @@ +package com.example.orangesale_end.entity; + +public class ShoppingCart { + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public Integer getProductId() { + return ProductId; + } + + public void setProductId(Integer productId) { + ProductId = productId; + } + + public Integer getNumber() { + return number; + } + + public void setNumber(Integer number) { + this.number = number; + } + + private Integer id; + private Integer userId; + private Integer ProductId; + /** + * 购买数量 + */ + private Integer number; +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/IndexFragment.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/IndexFragment.java new file mode 100644 index 0000000..2d8fe69 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/IndexFragment.java @@ -0,0 +1,137 @@ +package com.example.orangesale_end.fragment; + +import android.app.Fragment; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; +import android.widget.LinearLayout; +import android.widget.SearchView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.adapter.ProductAdapter; +import com.example.orangesale_end.entity.OrangeProductPack; +import com.example.orangesale_end.entity.Product; +import com.example.orangesale_end.netrequest.OkHttpClientProduct; + +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +public class IndexFragment extends Fragment implements View.OnClickListener { + private SearchView searchView; + private LinearLayout orangeLine, youziLine, juziLine, xiguaLine, liLine, appleLine, lemonLine, mangguoLine; + private GridView gridView; + private ProductAdapter productAdapter; + private List productList; + private List list = new ArrayList<>(); + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_index, container, false); + init(view); + return view; + } + + /** + * 初始化组件 + */ + private void init(View view) { + searchView = view.findViewById(R.id.searchView); + searchView.setOnClickListener(this); + orangeLine = view.findViewById(R.id.qunzhuang); + orangeLine.setOnClickListener(this); + youziLine = view.findViewById(R.id.kuzhuang); + youziLine.setOnClickListener(this); + juziLine = view.findViewById(R.id.shangzhuang); + juziLine.setOnClickListener(this); + xiguaLine = view.findViewById(R.id.taozhuang); + xiguaLine.setOnClickListener(this); + liLine = view.findViewById(R.id.waitao); + liLine.setOnClickListener(this); + lemonLine = view.findViewById(R.id.niuzaiku); + lemonLine.setOnClickListener(this); + mangguoLine = view.findViewById(R.id.lianyiqun); + mangguoLine.setOnClickListener(this); + appleLine = view.findViewById(R.id.weiyi); + appleLine.setOnClickListener(this); + gridView = view.findViewById(R.id.index_famous_gridview); + //initData(); + new SearchProductTask().execute(); + } + + + @Override + public void onClick(View v) { + + } + + /** + * 初始化商品数据 + */ + private void initData() { + productList = new ArrayList<>(); + Product product = new Product(); + product.setImageUrlId(R.drawable.qunzhuang); + product.setProductName("裙装"); + product.setProductPrice(new BigDecimal("9.9")); + Product product1 = new Product(); + product1.setImageUrlId(R.drawable.kuzhuang); + product1.setProductName("裤装"); + product1.setProductPrice(new BigDecimal("29.9")); + Product product2 = new Product(); + product2.setImageUrlId(R.drawable.shuangzhuang); + product2.setProductName("上装"); + product2.setProductPrice(new BigDecimal("19.9")); + Product product3 = new Product(); + product3.setImageUrlId(R.drawable.touzhuang); + product3.setProductName("套装"); + product3.setProductPrice(new BigDecimal("19.9")); + Product product4 = new Product(); + product4.setImageUrlId(R.drawable.waitao); + product4.setProductName("外套"); + product4.setProductPrice(new BigDecimal("49.9")); + Product product5 = new Product(); + product5.setImageUrlId(R.drawable.niuzaiku); + product5.setProductName("牛仔裤"); + product5.setProductPrice(new BigDecimal("9.9")); + productList.add(product); + productList.add(product1); + productList.add(product2); + productList.add(product3); + productList.add(product4); + productList.add(product5); + + } + + /** + * 发送网络请求获取数据 + */ + class SearchProductTask extends AsyncTask> { + + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + list = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return list; + } + + @Override + protected void onPostExecute(List orangeProducts) { + productAdapter = new ProductAdapter(getActivity(), list); + gridView.setAdapter(productAdapter); + } + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/PearsonFragment.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/PearsonFragment.java new file mode 100644 index 0000000..0f3e8de --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/PearsonFragment.java @@ -0,0 +1,64 @@ +package com.example.orangesale_end.fragment; + +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; + +public class PearsonFragment extends Fragment implements View.OnClickListener { + private ImageView userIconImage; + private TextView usernameText, userSexText, userCityText; + private LinearLayout usernameLine, userSexline, userCityLine, userPayLine, userSettingLine, userGeneralLine; + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_user, container, false); + init(view); + return view; + } + + /** + * 组件初始化 + */ + private void init(View view) { + userIconImage = view.findViewById(R.id.user_icon); + usernameText = view.findViewById(R.id.user_username); + userSexText = view.findViewById(R.id.user_sex); + userCityText = view.findViewById(R.id.user_city); + usernameLine = view.findViewById(R.id.user_username_line); + userSexline = view.findViewById(R.id.user_sex_line); + userCityLine = view.findViewById(R.id.user_city_line); + userPayLine = view.findViewById(R.id.user_pay); + userSettingLine = view.findViewById(R.id.user_setting); + userGeneralLine = view.findViewById(R.id.user_general); + setData(); + } + + /** + * 组件赋值 + */ + private void setData() { + Bundle bundle = getArguments(); + usernameText.setText(String.format("用户名:%s", bundle.getString("username"))); + userSexText.setText(String.format("性别:%s", bundle.getString("sex"))); + userCityText.setText(String.format("城市:%s", bundle.getString("city"))); + } + + @Override + public void onClick(View v) { + + } + + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ProductFragment.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ProductFragment.java new file mode 100644 index 0000000..5d6fc86 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ProductFragment.java @@ -0,0 +1,102 @@ +package com.example.orangesale_end.fragment; + +import android.app.Fragment; +import android.os.AsyncTask; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; +import android.widget.Spinner; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.adapter.ListViewAdapter; +import com.example.orangesale_end.adapter.ProductAdapter; +import com.example.orangesale_end.entity.Condition; +import com.example.orangesale_end.entity.OrangeProductPack; +import com.example.orangesale_end.netrequest.OkHttpClientProduct; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class ProductFragment extends Fragment { + private Spinner conditonListSpinner; + private ListViewAdapter listViewAdapter; + private List conditionList; + private GridView productGridView; + private List orangeProductList = new ArrayList<>(); + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = LayoutInflater.from(getActivity()).inflate(R.layout.content_product, container, false); + init(view); + return view; + } + + /** + * 组件初始化方法 + * + * @param view + */ + private void init(View view) { + conditonListSpinner = view.findViewById(R.id.product_select_condition); + initCondList(); + listViewAdapter = new ListViewAdapter(getActivity(), conditionList); + conditonListSpinner.setAdapter(listViewAdapter); + productGridView = view.findViewById(R.id.product_list); + new SearchProductTask().execute(); + } + + /** + * 初始化conditionList + */ + private void initCondList() { + conditionList = new ArrayList<>(); + Condition allCondition = new Condition(); + allCondition.setConditionIcon(R.drawable.all); + allCondition.setConditionName("全部"); + Condition saleCondition = new Condition(); + saleCondition.setConditionIcon(R.drawable.salenum); + saleCondition.setConditionName("按销量高低排序"); + Condition timeCondition = new Condition(); + timeCondition.setConditionIcon(R.drawable.time); + timeCondition.setConditionName("按上市时间排序"); + Condition priceCondition = new Condition(); + priceCondition.setConditionIcon(R.drawable.price); + priceCondition.setConditionName("按商品价格排序"); + conditionList.add(allCondition); + conditionList.add(saleCondition); + conditionList.add(timeCondition); + conditionList.add(priceCondition); + } + + /** + * 发送网络请求获取数据 + */ + class SearchProductTask extends AsyncTask> { + + @Override + protected List doInBackground(Void... voids) { + OkHttpClientProduct clientProduct = new OkHttpClientProduct(); + try { + orangeProductList = clientProduct.getProductPack(); + } catch (IOException e) { + e.printStackTrace(); + } + return orangeProductList; + } + + @Override + protected void onPostExecute(List orangeProducts) { + ProductAdapter productAdapter = new ProductAdapter(getActivity(), orangeProductList); + productGridView.setAdapter(productAdapter); + } + } + + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/SetDetailFragment.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/SetDetailFragment.java new file mode 100644 index 0000000..211082d --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/SetDetailFragment.java @@ -0,0 +1,53 @@ +package com.example.orangesale_end.fragment; + +import android.annotation.SuppressLint; +import android.app.Fragment; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.activity.CategoryActivity; + +import java.util.Objects; + +public class SetDetailFragment extends Fragment { + private View view; + private ImageView imageView; + private TextView nameText, priceText; + + @SuppressLint("SetTextI18n") + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + view = inflater.inflate(R.layout.categoty_detail_content, container, false); + if (view != null) { + init(); + } + CategoryActivity categoryActivity = (CategoryActivity) getActivity(); + Objects.requireNonNull(categoryActivity).setOnChangeListener(product -> { + Log.i("sss", "onCreateView: " + product.getProductName()); + imageView.setBackgroundResource(product.getImageUrlId()); + nameText.setText(product.getProductName()); + priceText.setText(product.getProductPrice().toString()); + }); + return view; + } + + /** + * 内容组件初始化 + */ + private void init() { + imageView = view.findViewById(R.id.category_product_image); + nameText = view.findViewById(R.id.category_product_name); + priceText = view.findViewById(R.id.category_product_price); + } + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ShoppingCartFragment.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ShoppingCartFragment.java new file mode 100644 index 0000000..f37faae --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/fragment/ShoppingCartFragment.java @@ -0,0 +1,61 @@ +package com.example.orangesale_end.fragment; + +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.entity.ShoppingCart; + +import java.util.ArrayList; +import java.util.List; + +public class ShoppingCartFragment extends Fragment implements View.OnClickListener { + private Button walkButton; + private List cartList = new ArrayList<>(); + private ProductFragment productFragment; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view; + if (cartList.size() > 0) { + //有商品 + view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_have_product, container, false); + } else { + view = LayoutInflater.from(getActivity()).inflate(R.layout.cart_no_product, container, false); + } + init(view); + return view; + } + + /** + * 组件初始化 + */ + private void init(View view) { + walkButton = view.findViewById(R.id.random_search); + walkButton.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.random_search: + //开启事务,fragment的控制是由事务来实现的 + FragmentTransaction transaction = getFragmentManager().beginTransaction(); + if (productFragment == null) { + productFragment = new ProductFragment(); + } + transaction.replace(R.id.main_content0, productFragment); + transaction.commit(); + break; + } + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpClientProduct.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpClientProduct.java new file mode 100644 index 0000000..9aa7571 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpClientProduct.java @@ -0,0 +1,80 @@ +package com.example.orangesale_end.netrequest; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.example.orangesale_end.entity.OrangeProduct; +import com.example.orangesale_end.entity.OrangeProductPack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpClientProduct { + + /** + * 查询商品信息 + * + * @return + */ + public List getProduct() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.219.1:8081/orange/product/search") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + List list = JSON.parseObject(jsonObject.getString("data"), new TypeReference>() { + }); + return list; + } + + /** + * 获取图片 + * + * @param imgUrl + * @return + * @throws IOException + */ + public Bitmap getImageBitMap(String imgUrl) throws IOException { + Bitmap bitmap; + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url(imgUrl) + .build(); + Response response = okHttpClient.newCall(request).execute(); + byte[] bytes = Objects.requireNonNull(response.body()).bytes(); + bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + return bitmap; + + } + + /** + * 封装信息 + * + * @return + * @throws IOException + */ + + public List getProductPack() throws IOException { + List packList = new ArrayList<>(); + List list = getProduct(); + for (OrangeProduct orangeProduct : list) { + OrangeProductPack orangeProductPack = new OrangeProductPack(); + orangeProductPack.setId(orangeProduct.getId()); + orangeProductPack.setImgBitmap(getImageBitMap(orangeProduct.getImgUrl())); + orangeProductPack.setAddTime(orangeProduct.getAddTime()); + orangeProductPack.setPrice(orangeProduct.getPrice()); + packList.add(orangeProductPack); + } + return packList; + } +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpMessage.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpMessage.java new file mode 100644 index 0000000..8344fa7 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpMessage.java @@ -0,0 +1,39 @@ +package com.example.orangesale_end.netrequest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.orangesale_end.entity.OrangeMessage; + +import java.io.IOException; +import java.util.Objects; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class OkHttpMessage { + + /** + * 消费消息 + * + * @return + */ + public OrangeMessage consumeMessage() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.219.1:8081/orange/message/consumeMessage") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(Objects.requireNonNull(response.body()).string()); + OrangeMessage orangeMessage = JSON.toJavaObject(jsonObject.getJSONObject("data"), OrangeMessage.class); + /** + * 消费完消息以后,设置消息为已读 + */ + Request request1 = new Request.Builder() + .url("http://192.168.219.1:8081/orange/message/updateMessage") + .build(); + okHttpClient.newCall(request1).execute(); + return orangeMessage; + } + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpUser.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpUser.java new file mode 100644 index 0000000..ddbfa77 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/netrequest/OkHttpUser.java @@ -0,0 +1,71 @@ +package com.example.orangesale_end.netrequest; + +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.orangesale_end.entity.OrangeUser; + +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class OkHttpUser { + /** + * 用户登录验证 + * + * @param orangeUser + */ + public OrangeUser userLogin(OrangeUser orangeUser) throws IOException { + OkHttpClient okHttpClient= new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(orangeUser); + + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://192.168.219.1:8081/orange/user/login") + .post(requestBody) + .build(); + + Response response = okHttpClient.newCall(request).execute(); + + String responseStr = response.body().string(); + System.out.println("responseStr = " + responseStr); + JSONObject jsonObject = JSON.parseObject(responseStr); + JSONObject jsonObject1 = jsonObject.getJSONObject("data"); + OrangeUser orangeUser1 = JSON.toJavaObject(jsonObject1, OrangeUser.class); + return orangeUser1; + } + + /** + * 用户注册 + * + * @param orangeUser + * @return + * @throws IOException + */ + public boolean userRegister(OrangeUser orangeUser) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + //数据类型为json格式 + MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); + //将对象转为JSON字符串 + String jsonStr = JSONObject.toJSONString(orangeUser); + RequestBody requestBody = RequestBody.create(jsonStr, mediaType); + Request request = new Request.Builder() + .url("http://192.168.219.1:8081/orange/user/register") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + Log.i("register", "userRegister: "+jsonObject); + return jsonObject.getBoolean("flag"); + } + + +} diff --git a/Lucky_clothes/app/src/main/java/com/example/orangesale_end/service/TimeService.java b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/service/TimeService.java new file mode 100644 index 0000000..4db46a3 --- /dev/null +++ b/Lucky_clothes/app/src/main/java/com/example/orangesale_end/service/TimeService.java @@ -0,0 +1,105 @@ +package com.example.orangesale_end.service; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.IBinder; +import android.util.Log; + +import androidx.annotation.Nullable; +import androidx.core.app.NotificationCompat; + +import com.example.orangesale_end.R; +import com.example.orangesale_end.entity.OrangeMessage; +import com.example.orangesale_end.netrequest.OkHttpMessage; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Objects; +import java.util.Timer; +import java.util.TimerTask; + +public class TimeService extends Service { + private static Timer timer = null; + private NotificationManager manager; + private NotificationCompat.Builder builder; + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + /** + * 清除通知 + */ + private void cleanAllNotification() { + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.cancelAll(); + if (timer != null) { + timer.cancel(); + timer = null; + } + + } + + /** + * 添加通知 + */ + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + long period = 60 * 1000; //1分钟一个周期 + if (timer == null) { + timer = new Timer(); + } + timer.schedule(new TimerTask() { + @Override + public void run() { + new ConsumeMessageTask().execute(); + } + }, 0, period); + + return super.onStartCommand(intent, flags, startId); + } + + class ConsumeMessageTask extends AsyncTask { + @Override + protected Void doInBackground(Void... voids) { + /** + * NotificationChannel是android8.0新增的特性,如果App的targetSDKVersion>=26, + * 没有设置channel通知渠道的话,就会导致通知无法展示。 + * 报错内容:Failed to post notification on channel “null” + */ + OkHttpMessage okHttpMessage = new OkHttpMessage(); + OrangeMessage orangeMessage; + try { + orangeMessage = okHttpMessage.consumeMessage(); + if (!Objects.isNull(orangeMessage)) { + Log.i("orangeMessage", "run: " + orangeMessage.toString()); + NotificationChannel channel = new NotificationChannel("channel", "通知", NotificationManager.IMPORTANCE_DEFAULT); + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.createNotificationChannel(channel); + builder = new NotificationCompat.Builder(TimeService.this); + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + builder.setContentTitle("来自橙一色的系统通知消息" + " " + formatter.format(date)); + builder.setSmallIcon(R.drawable.qunzhuang); + builder.setChannelId("channel"); + builder.setContentText(orangeMessage.getContent()); + builder.setAutoCancel(true); + builder.setDefaults(Notification.DEFAULT_ALL); + Notification notification = builder.build(); + manager.notify(1, notification); + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } +} diff --git a/Lucky_clothes/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Lucky_clothes/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/Lucky_clothes/app/src/main/res/drawable/address.png b/Lucky_clothes/app/src/main/res/drawable/address.png new file mode 100644 index 0000000000000000000000000000000000000000..7318be016a0fea789da57d99dcecd6485834d90d GIT binary patch literal 1028 zcmV+f1pE7mP)5000BaNklDk%Y z^L1WPEtqb%ySve7d?6yolv15K!uE{TxjPY%sF{WvH z!8)_=MtOV2+5Z`4zRuVE#u(eYwu!B~+Ih6Z%+n?3e~qGOr*AxXVHOt`uU=VM`9VYu zDWyIrNiZcM+lc6#?yu{Y^-*=#E{ zy?(!c?5x`B%yss*@F3cSOJ_lgk^>1IP5;w+J-?8Snmzlq+I$sOMy`3W#rtp<2 z;i5bihM8ZiI&b%D!#JRi0bHt6E?1sS%zSqpkYE_C^>!k%^K z@3t(*3%)0>owB>TQ=PG7? zuqx@uVP)q?Rk(M)1uBc%`;<|FSx5J@HrrFBuT(1l9e zh(ZvONukA9qgdxFE!DQ#DilhW?LsLSsiHO;Gn1Cd%sb`Im~me6X5QCe@*s=MyZ785 z=YBuJCVyy?``{V46p3^SMQLQ_Mm&n9$6vem2#6OUuz(f)7WJj>cu9gQ;F6{d3g!*~ zhXCv-0|eu-L-&jx#sUcEQPAh8FZHcctRrAH66qx&-eRE3v>`KKWkI6r(De_gH~FPq zs4ZZ2WTYAS{7C>>&A?W`|0>Uca^n=Z@P`%D5||wx?gP=M0G_rA2Kzu6>Mj@|>P=j# z6}KjENmWk>;9X1DY5`}!QZ2#&1rpy>YojVKt7-edeA6~g7IXtFBB_f4@yljynF2Wy zX2s63c43@h3ECmvSmO#0bK!}v1%y}7u zl?@5JPTh%fhLve8WLZ_etGdovsl8;d6#GZ&NxWDUm{HXs0?t@Ds=oIQ1O#Py5lheFr#V5i1~f@ zy7E@1dx`-dCzRt`y3f6507ldNHh>9F!Kr{u%V(ZK$jV#v!aI|Dhd(d?$5I?2!i=Zr zbpjHxHr*CBcJXMM2L$l-W&i^Ga?BSlUJuH%cr?MCLV>qsrcN0|ex)V0U;Etvl>bE2 z{FmVpi8|K*q0J$RC*5ul{WdC<~2V;N7Bt+qPik z5$$fPBPboyzM=9d+OmsR3ydZB1yXR`Hqu1~nYe$ZEu5^@hUKS^H&fiyK*f8?OO{Xv zKn4~7gl2r9?`y@i1j@>h%e-~leS8E!o*An@c7cS?S9FY@_J`!oRXe0rfy(#MBtHjH zM4Cgbfj<#wV%irp+&G+Db;~v@ZhGKDEs|t7g22|C P00000NkvXXu0mjfWqIjS literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/arrow_down.png b/Lucky_clothes/app/src/main/res/drawable/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..6d95bb5aa6045b14ade85093c7b796715d97c482 GIT binary patch literal 368 zcmV-$0gwKPP)DiJgsLb>I_RlT0dM%bgI}Qev%zXd`wC!WDw3Z(t{u zHYvQ~Rufr4Id#3=)9Wtv{9ls)|3|=>j~Fu#CK<@gvs&xN|9blFp)qC^0QO>xZLRg) zs8D0fD*$W}(eY;}#+Xe2umI2|qHa?tGe0LuvLU6sC^cVFX6BX<;s5})iRgS7)Hyfp zy?;Q&bt&cT$Lx>VWLY+kh^In`j#BEZ3TmyL3n5$qK#Pd(2WKjKnCJOSQ52VmxFe-J z85CG+7efd~h`21JeENRjuf=xGO?mHcVvJU6eOL;uwQC`S-CnP^kf!NN)$40F#Tau9 z0Q*9SevGk0L`%cGtp%21X6_;)Dy3HH(r*N;gVcsH3ZQW)e}zuqm)`)Eo@f>Q6}kKX O0000pWc?Ln7SYUUTGXFyL{y_+-L2 zAe`!S*CTxHOaYa5+UMsh6?*@xD4H)SFgHMSO;ZNrmzui=x3C_U*gmtg{5?mI(WBPg zVrvvVtUff)J{GxgZrBp0n>&66nk-;)XI@nxvOtKP`KkqnM58sE+rxj{bK=E91%L6o zDJUkmcuK5r3u^FE;a%Yr)X1eGyTkEWRK)$GCSOn0@3MV=&eJW%A&v1%tmz}I4l#%G d*JWL}?QZm^Xy&~w{S0(DgQu&X%Q~loCIB + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/drawable/button_register.xml b/Lucky_clothes/app/src/main/res/drawable/button_register.xml new file mode 100644 index 0000000..4caaf7c --- /dev/null +++ b/Lucky_clothes/app/src/main/res/drawable/button_register.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/drawable/cart.png b/Lucky_clothes/app/src/main/res/drawable/cart.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e1190318bac5a414c75ec24d955fae176d1a7c GIT binary patch literal 5573 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 J#XX0o{{y$Isht1- literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/city.png b/Lucky_clothes/app/src/main/res/drawable/city.png new file mode 100644 index 0000000000000000000000000000000000000000..790fb2bf39c33588894e33135a78fc1c05ed6caf GIT binary patch literal 790 zcmV+x1L^#UP)&Rd)Azkx1s<6Vd&j0As9)Z*~+qJ9V@fa4!+P{tX}Cn;o^A z0#97z2mE6~ArY9|$W0q=J1aL74vbT;Z%FVmj;V60)XN)l{^KlBNLW;uIF({2YuBE2 zcC5=9TWbna9I^Z8o0G7cl2!yYdy`1SwG$;-psw+IfN$Dm9 zVUm|{P*tj+F;%2fy_G)hks&M$df^`vz-0I;1liSc%k + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lucky_clothes/app/src/main/res/drawable/ic_launcher_foreground.xml b/Lucky_clothes/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/Lucky_clothes/app/src/main/res/drawable/index.png b/Lucky_clothes/app/src/main/res/drawable/index.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ec04f66cffa7b889c016953f3616b8305adb9 GIT binary patch literal 1272 zcmVop#=&eKH z-<)^}Lr0G3n-TDRLZFwOBoNXvPRPE{;p=^LTSPAe9ZBZ8!8}U9{UW9=HCKu0Kq?-Z zw2QZeRtv|Fs%mPTLm4}GTRx_louc! zkNGjSs{w;Ec??b8@xl_!i<{GN<*H@2+#XRadyYXhFK;E_5~+vaBf2X0EkidC&p%W! z&Fi(6q!QR;@U(7(nylU~R$579dqH%v7U;Ery##0Gz3F&(ya*l9a^DiT-7T~ou!rDd zx+-@qRa(m#0EgT_ivll$Pv89JbAGXjB3gD2fzCUH zc3R;||3Q}(H$l&kq8SGP3_F3Y6}YB~v)N%)`Y3@8i$Z$^T*KttM@rHd0plG}=+iGY z;FVUts9Z?5Yy5BgaIGMu1*3};E%!0NN5mq4otu0}?rgxuM%zP=kfjCt(!>ICc^1-J zYc(m!Y%kc|hb0wrwMrJ@+bOa~xM2)$;7s2a3YxuKbSnesyC>hrK$Xft2f zLSZfQxDS$}dxsLyTF_RHmd5rLAH0L6+qxPG-u)sPa{!`Ft6g_!!jvA9cie@}P5{*L ze}`t~qv?3~$kK)>k?SU6$LGR&S6U+Jxw%+ydI|cN9;JZaY7s}H&d|T=s@!S;E-$u9 z()bdL*PT#X6U>@uD~Gjuh)l%Z?-p?OmqjP(R9%&mmC#Ruamk6xp=a;IYuo(TApiTJ z5rO_@b`kq8EQqHf+|&c17W7gvsQd~cnL9(wZ;HFsNy#{<$K?~HY-P}m!|5h6eU}N? zP$wMwG|W?aJiKG2aPuF`lLv`<&%vz3-> zZq*`M_B4Us@|Ho|jS2B|OxCJJth>KdwCpK>dc;$CqqMtNx7`#gTJC*-KlBDiz=hGJ z$K|p0l(x`Ta3q=CO-!Ewcu*j%I|<<@2~y8oEcm0Hfe>^N{0v7iZ+uFiH|$IuJtr_s z`bdw521Mh8p-YBJGWQg?_{Y(H(InM%oB`+yi55=I#hR}<@p24ZG7q21G)oJho$IRU)#qq%qh0000 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/drawable/kuzhuang.jpg b/Lucky_clothes/app/src/main/res/drawable/kuzhuang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d59be4128c1a0d6583ac31ce0dde3efd74eb1df GIT binary patch literal 1452 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?ZwDDACtX+ub_Nb1ba2MmlV z*IV|#effdQZokl%ZPMGCCZ0Pm@r6sx^_l+}4hGv9>_0sJ<}-V~n|GvZ-H%?cPgLdP z(^Y2jJnqw8IN#0x7n+)9H`m|Pg$;qOA`Kdgx)}b<_|MREGE3O=WAXtp`>eaH``S%j=QtiR znLJhh`j3``l7Ecxj5jmGgEKE@Ezpj1EtK7;xG&+&nghufTJ5LS&i~KAT6ab6`?o2V z7j=HGZ9i2!AwEpIo3jKeaXBYf&-VrW!z2i?P?`!4%45zJC+g?db z;VDg%{(Q&kS7^=zL156BJlWO#?ZAg7hkKFQWuH$-Ofj78>2}HR%4R*z_uISv9$SB; z{)g(l9VY#^xetF^6E3xFc6Hjpw#o>f19b&le|Id32Kq@yW50h-=Q_L7 zwrhC&3O2e{>+TZnyB+HONc-XZTgk!wQ9r(ZwELO2@3QFqj#BZ+4($n-_sh5YFIaye zzO&hHGtdOviZENb(s^g!nC!QlzF@|^#eVH~)9x+5n|0s8PVH~cAIIVa|E|vGey^k0 z`8+r8-qnfG|02)a^Jx*PdNZ-N-a+)w)j#&v)jpi>|Dv0BFF0RqdOh!_6MIBIJqbJU zE7`ua-Ye_&PFYO@u`Z3346Alcit$Xgin4MoxwxUrQ(S9}J4@dKxvN>g2;KVO{2!sT zSFe5_xn5^+)zsFzY^l+WZGF1FSFbR3dUwiYIvw9{`RTaw&SifB{x;WHpZslHVg7J_ zyZ+?hizR=ngZA#exbH6So_#KpR&GfztJmGuZ#q-7gICY(k;Px1Mbo42l-nCF1p3$K z)jrOvHS+6U$SG~SzBSf9aLbN;8?WXTW~*c?ZE1LVyXb-Zl;(-YtNvPuYzgLW6$y0c H|9=wzr&4e9 literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/lianyiqun.jpg b/Lucky_clothes/app/src/main/res/drawable/lianyiqun.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d6d7d929806ac6a332defe9726dafe9de4a2dbc GIT binary patch literal 2110 zcmbW!XH?T!8VBHi8li+h2!VtaG$2v}QWQ%75s+XU8BmyrC{m;vDS^-w2c!vu5l~S? z91u~EGNCFZbSa_?9Vt$N#8^NQ5R8H{VRz5$Is0j6-uvE9_r3T0o^v-QHaLL%p@R+w z0T2iToE9%&V+ybVAYkxjiwi1lm?R7ag~Fuaa0y9-Gy)+bEh8g~RFIcNqL4B&@=Ee3 zv?2zBLC7g%l@zfGiWtSsM?etq9Vko+29r{hm628a+qKaOpdyff&y)H z0(bxb!Nh4d1OKN$U~xtXxTKV{jCi0{9sq+N5HJ+7nOZ!3L3|ECQ80xq#?}&OCr|j+ zP(_pY%mPWm0ahEvc~GEb>J^qCC9R~4#i?j-)7h@8XSQ>f`R+Y?ZEWoh+LIj)9X;ma z`V;lIo43yyUqAnVKzeutBQh#F=2Bu(a!Tsuw5;rF*Kg$9yp>ycujqd9gNG%hRn;}M zb@h**G_-egc0KLx>FpaD9vK}QpLjXRoqavWd&7VG?!9nn`P0hkXVI6hn=TLl`8Vq? z+5fmuViy<+g+Sq(E)Y0UydfwkY>Tmkg0&OeGZekmBwkYSKxP4}O^RUZEWmh$4N5C% znQ^s+o3ww){y$j4Ka%|g`>$&fKtMp^&x4=J8O|DN?H~HOB6{YK%Ctuoe^;b^^Y>$i9Yt1!&8k-o1N0Y3A zIF-shRa5rfy!zb77CG2N2XIt1`TaWU z!tt#w`b{o^ieWCENrFFoXG*@2-6xbi|?an-WJ`jJiMGx8kl>suG-t;`kZcP zkjb?y9UMaTMB!DuQrzzz(j`2Fij-!Cb4$`39mNxX<@fKkRruE3+^55w$`gYH}viE9}(?HQg+qxy;_( zl`JdYo7wGghN2SAagW_qF+T*v!(-$st7E`wfj^%G_ zx!kET65=-fuFAwmYPLCkZB1^d@te`=CsA$D`k@UVDY0Rue6{quUD85&fS?=3%T3RrE7OPC^1j)GXk4yfPl_{XQ^eF!T6wrgu86%EZbi>0J(xeU+a`C3AaJ6t02Gj+6LmNk5~FyO)CTXm(HIIXce(ZLHa z&K+6kdsm9gFar=kO*T+UGjp4c3E4YZ~uj-OnEy zTZ!_a+@{3Rltyf|{9g~;ECFXP_sq?;*dk_jkiXn>7B)>f{xUb3&&|bc0CerVvvN6s z?)5hk&+kd+B!P@0}NwVR-vWh+gCd5@g{p8 zPa47XHzN830;>(pX}@Zm@N?eXrZU;{Rdqx}vGU0hGwVy9 zb`=WKSHe<(M3Lo;<`!3cf#Vv_NgHowJHD3C)YMS*m!Srj6P8jF^Pm-FT0O zPmfe)OE4Xn9>az!I9g#?aLu!$TFCyXbQ(M??@Cnn5|)h?x@J5OnY1r?NCu5(ItFXS zk5gtE>0vvl7enGARt?f{A^Qoh3bV#^k9v1rxjS9Pq8 zA7iTv>{AVc{jR1GnyQrsCA^}1dtXS+Td90iUG)%HF-hoOgDwhgzv?h+$avSBFl2IK ze(IXUkFkbe4x??Q(mUlyZS5OXf3Mw7y?-%U(ijbE*v@sq(NE3y-9H!6ch$)bGfl^D Gy!;cQyR$L? literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/niuzaiku.jpg b/Lucky_clothes/app/src/main/res/drawable/niuzaiku.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4adde4ca8d3009c8284df8d0be345d30308d7c8 GIT binary patch literal 1387 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?ZwAv>Zmlzc4r~LJn)qe(obJ|z;XPxeR`;YBM%YmcL9LW=Uo+o=X z{AVz*m-@keR+mZtw0`GGZ}$ZcZigqjiiAuP33O$sOnMn{*(lOv}+Vi`CTk3b#zJR}dQ8&&qyPVwnm}(Sd_o} zv)+fg1w!^92YddV{r=IFJ(W2ZSMA)q`$`Va3&%(npND?+ch|37QQcw&bn=o5K({me zwEwp6hxgha_m4!?ZBFXC7=4R7Vw&@(&3Wm{wlh9oXKp;tw$(nZo;CiD&X4f5(XsEh zT;DqTB=44Wr=B|VxHq))xKGPTnZ#&QBJUZ0^We&8+pSl$P52B>99Fn0QKP-&_U)hC z$-?e)`i=G6FKqKzbKmw$a?I|{hxe!1-~1i$!|B$XsJ4Z&UpL*eJv;mOmFcl-qLnR= pRsX8Ke$h1Q*g0*9njIml_}?2Q|C~H)bEx#~z)X;%7uf&52>{rxLQMbw literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/password.png b/Lucky_clothes/app/src/main/res/drawable/password.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6c4f520f8a6b0faa0ac86ad5f2951b89d62a89 GIT binary patch literal 1462 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 kysS}tl^Sj`oj{`Y56voTT^KUvI4VJ~OqYP#V z=xUQ0uykCXRpEq1z_Xz*4_N4$N-_aXeyzF7%b2FW-7@f*(3eLowb#iq0S1x&0^IEq zP=!;|c^P)G$#jzhk(wvTHrGI_`o++f?Jl-X84M!*8@R(IKojj!=*xhu4{N|6(%*s2 zwvJPDODnf<-^_FJXPQ4Nz*3}h+VK=~1Ii-8?l3Puw}VUtEJb=$;gz&2&A5Lu^kr9O zz*1FTROPdb!R^eHcf%2RyOp?Q2KUYBz{Va<11%3(b9A7b7ueq{fWk3>hkys$(h9r6 zyqs*NX$cra8UW>Xj@O=TL8RXUI~w|!sjwgiCywj$B7BjO&JRLgCS3umzzb=0QW&51 zWya`&NdExtRG~PXm&$=Jb*NUuye70AZUufQ`|_|W;6Ffr8ep=o912GynU*K2T5y4@ z`(LTCWu_>^hQI*m^iGKXn&y^+sryX4`6PsIldvu9rAwDu%|FgTn<$ejBJdwAaHUC?BTvie6!0 z`XyQFZU)zR>!idNYiy_#rDg@VdSv|A?vPF#*=2A$%6lmp{5JIEN!MfM4dDH@jx7L< zed>u2^JZ9(rmoR_~c116cgIRh(k%y9i^>IiW4t~O0J}$laX>kVYWW~*!XY)tUC;7*u7Dn7;bH_Hee=%e>9oTgN@E|HP)nI)ZLW@$I2-Pz9GxpLn&d(QuV{(JVG zd(ORr#ie^0SMKHRSh>M*n5@E7Q7%{52kckn$EGIsHqYiei?kIeu>}|g%tv?$<;HrL z0;g4Y(Q9X&EpBT>-=gvqN@G-E^G$7Bn^RLJyloqx4;2YJYyk! z0Vf2mG$kJ4CvhTPBUZjKC9UbFZ1M_pm|_|U2}?YOT0aMNyFRnew~$Xz z?lmQ?oe9A(=;Qmq4`VZIYA4Dy>_lYuR@|C_p7kglr$wHTV0<;rkF+<>D$G% zGKQn3q_zAsW_8OPR+(ZN2}#JJ5(jjY2C5yk^02TIND?6DcVmGb+41!Rgl>Siw&nHCE(fZGv{NlYp3 zXJ5;0{9;O4&oAj3oF=BLLp#bfz}Jqlr@6rXdVV#9{Qe~uUfjxBU_NklEdUV?qI}@` zylg{I6tDu}p*r2dabWvjy>wo2C;txT93iBy$YO-G0+(h9P+&jGqi%s8ve*x|iHb}@ z*qrrXRXB;#*;3%0)IAaw`5a-MNk9UtT%XmA`1WL3p4Q|IG@;3xqO~RPiu4tE zN`$wpp~7*`uXL@cD-1Z6){L6Oq41=XyP2vnT?!YOfYk6w-ROh1HaC3oxOxT(m0l|> zu^g?m?YUOcnV#xpLajD?C~z_+jBDj+)(*RFP(o+&LR@Vc!+@Q@+&oHDd182boraf; z3nILohYzT}44*TPgaK*{JglwGf|F-#NbrZg2#*-7!hrR_Gg$(uR;eNFbR&L=t>O4E z;w8A|s2c?=ieZDmWpx8nijJ}@X`>qzFx0*>MhNRi>%c3Irm(cu3vlY?LsVpnI?N*G zCK09pQy2{C);EJy?I0o`X=K<`4Se!N}B_d71{=hL2~PV0Eh1-W_Q}l Z?|&mRgtdm$lv4lz002ovPDHLkV1jf(W2yiE literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/qunzhuang.jpg b/Lucky_clothes/app/src/main/res/drawable/qunzhuang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b1c6e25cd8ea39901ce84f2a1b542523d372633 GIT binary patch literal 1801 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 Eg43}^wEzGB literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/search.png b/Lucky_clothes/app/src/main/res/drawable/search.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b5ac0dbdcef88a2050139005fe5704a4ae21fe GIT binary patch literal 1299 zcmV+u1?>8XP)w$0$^CL1&DqI@L}Le zzjajK(0;v(xCZP*LRDbi0AMJ9eIT3!qlpN=02E-BV~E9ANnB3AL;yc9I2^R%@#}&2 z0AC0j&oMzk+d%Y`7H#}AS23==cVI&LH!$#oiea#EJ@Bhw$22wqSPbI#v}k;Bp{sXl zjhT?xmx>pdrLD2|7m}L-J7MEl5Z+gkYBBrv>_lg2We~~YF&)rZMCI0!Fa#)suAR0%U@)NsHRm zUb`kIV$28QGiKBWWA=;L3288cRuXuHGFc#M-`Q&Fbp%=g#wiph%Q@*UA@E@kO8tUw z>Axo4oVT5vu<;fMwJhE8;M#AFrh^?bw3;9%kf6;{@=}2AQicQbCm98m^nYoVJx_hR zU>YAV@Fa*9<}+qWJtty(3&yldiNt{6n~q#kA2a1m1ra~bOc4M{FdhZLBIeD3SbUpf z8f!Gmu1$d>`b*5TUJ$J=i8e0Fzhl$*6O6V@Q(atk-%vMMbXK!$a!lg{fUyA22IwOK ze&eF#L)z+tt*Y?3S3)C(tZO`-T5v?4OiV{roMtsX<^{e2;784}r)35@rm+gZG6L5z zQw;mc1am@cCC~1%&H50CsDZJ;w{&1fWE-?3=qnZ0DJ9C(MWPY`svuw%7tZ}PXfkarp!zKE-`@f8n&gJ%9C(czZ|GH_1S8k8pT@25h z;FA0ffV%wm5a=DZQy$1RQfoLgiUibyA*ui!os#`UB2`Pl8;-ZU!NkY%E#MkiyWwjA zq>a`I@KJ&|#LT52OaU-1V@F$R_a5Iie?sY(Q%3}DYPp=m-~V)Qv5%4sO)U#@!E>Ic zW9mV>CgaktDXK+r}6@cxv_C!}krkvAF*|!vi9{`&`l&WTdkZeVEV1 zXg~Q99UcDWT&?nX)uc1}s6nNfi_CTI1%bVck~zO~;p9ImZw-$0g8%1W1uO*KC*VTh zeFpY|_bE6R{P&i&O??jT4X$3Z{|h(`9~10}EIH1@F_$x#yhk z&bi?QEb5+L#uClcOY47@0CC}xk5 zc-%E4a7zS-h1lr>xCw9ukcI{4KSSY!5WOVoJwV4a3Stx#>amF)P=>L|z{M7{6d^K@1RCI_8Jcz2<2>6X2nP;=SY zn$f8Po2HiQgyQxI3Od#Ve7}`^LP0JAyylqUO{EA}Xg_4x-w=3NL~Bn+8^2txQ}Bzc z0jyieuK?Lbkv5Nre(;JzT`CH?Wq$~utL#v_cL!kDbu83gN=F(m76Ms+%5J2}WTzsV zuNB&_>z{Z|H0?WgPi67!RHrez;)@>`xcXo=qq>wxi+e8%DRd!a8o6ix(k**Gh>%o6#Qhw(GejNw|&D;AL{#pil2Ec3c zGMNCF0r1HDtBg3&rfo&py|{5h3#@Bps6X){HC_;4lp^Dz$&cwsvkS0f)x{FWggod9 zHL&%z86I<=LsoJtAbkYF6xp4MHVv+bQasTnimf1?atn|GUSZwIH(J>>UeS-B5r-IPN>T# zmwi--?y8Z?&Ed>k_GX#sB#V0GrPE@kTeO@DsQO&V)CcShlEKrO!d4+(Ur@Q^n8ph$ z(#o=IY}9F}b2v`%5MSZ#YrovqCH_RWkLMy$8f;*S2WM zT#@kkK>+6*)7VigJyw%@sZ(~7aGmAbqF~aA8XGGEPL2@r>YCbOHTrQygFv2%MMfVz zWw&Yq0qbe3?+p TO|NVS00000NkvXXu0mjfhY}6P literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/sex.png b/Lucky_clothes/app/src/main/res/drawable/sex.png new file mode 100644 index 0000000000000000000000000000000000000000..acb8197caace6c0653da7f1ea3a90af3eac20179 GIT binary patch literal 1509 zcmVfmCLe z(i0-0qM`_b%)nljrlo%r6}^jyGTlsPz7uDdk=b>2=bPQ_z|699f9H39-}%lx_uNaU zV|{&n2eq`c{8JvPb9$jrIERQ%12CJ2rmN~l05+=X=b23A&DPe|Kk9K(J%IOq zv#PFR=H_}>8;_!BIT0-daNscbFIBbEIrrRfoOQ)TQFLt_$D7;R+rO4CNa| zQI3c@%Hs=}`N>+?F%jpzU!3=J_kM+{-lM8FI_F+&NL+V!_uM#+E%cu<^9|L`xm+&Y)YSA3fb_U= z%264A#1wlMRIMui!^ ztE=naR4Qc!`E_Q#Dv>zv{Q^~e3c$FsLu@$@;6Y|yX213I^&P%<@7|vP{LajWjzpaI z{!~@{48Wu5bo#zRp2&(SnmOmaw;U)%NL61TqMKB8D-j(I;E?L%7m;rO9MkAZ zt*VcA19%vKm80pE`e#LaKXD>*BY+pm&S9}w+?YzG-T|<#SS)s?QYkB#R?AlJ+O;d3 zIC0|3s(J|#nNRP|ojbR8c6RPa8buMYe7l*5&JDxxLlLpLz|3=o5+?vUnEC0huC9wK z;>jvl_=*bplWeJ5ZoQd@iPES zU=mx`-`{_EE|=R=3oIhm?MwkMV4+p8b?aOdMVAuM+xBz-j!L3vFouX`gkiX)@_SED z&r!u<@l60H6VduG3@@t1TT`5f%p;;}RCNXsoujJhk%+4JsOqoIxv5bUS;t}z`%ro8 zYi2%fDDGN0SJ{qAK18%bRma=@JQ{%j{snMAmEgOab2itIHb9(+{05*>uN;7v0n95e z^-*doxo-!sK91w3v)OE^Sx6+#d%s#$ZwK%rfGe5VRvbjc3goHvh!T#kV&=ONVo{2m z_x?IneF?xX%xs0WWchr4N)QAMogapc1kr{t3}+`6m&@fQHZ?U_lq@kXWajs(#GM}m z!M^{Kk`9BjE$|Bf+n9MlJwD3k^A!QFG4s{c4kBW&U}Zg$5sd%H%tzMqqbQ1&*wR+j zUgw;hn)aE9R65mqJdKRc&tx*2YPIEqNk~K<2e4RG7dz+HR0F*CR^vWsWac{9znOV* zQa%&+Dgf)F<}f_Ei%dr6_B3Wx#lM)Vxi{to;Y&QE=QZ9?!v8wvDb)(L? znh_EaJMJazL~72hs%xBci<1f~y;l1Y5i7vg0jOEQySuyXD#7a0NNoo*TWi#imBd-M zKty)WVIAmDt$T;6<{DxzgM%PAyREIw4nhstJ|QCV0DybVTUD=d&eLQ`5K(IxWbO0&aU5^ky?ghTNs}f`i{p4^9LFbA zUBV1Cr`;^A48zdQyCb&!USU3;pOs3bysFL`hINmswy3JzubmPE!6}A~<9I88t=VjL zOlo7z{IX_X{P^+L6Vd7Rv4{mh@Pn$_&E&`Fbo$+;OP5+J^}pJGUSnJtr>m4M00000 LNkvXXu0mjfbOPYO literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/shoppingcart.png b/Lucky_clothes/app/src/main/res/drawable/shoppingcart.png new file mode 100644 index 0000000000000000000000000000000000000000..76c06deb2ed9ec72af4b344e566c37590fb35144 GIT binary patch literal 1155 zcmV-}1bq96P)B7k%u8NqAP+9@^5%T!{O)<@ z-nsV?`|#pEWX1vXUcI&TOsC4_$5Q0{is#M4_nUhK5GPIx+5sES%&t2Su7aAU_+EXm zF@r}RUx?#8Db3BAzHs5rR5m+GV@9FqevqRSCS2gO)m=-a(qBnI^y_!qiI}aFCk6AN zfU}K4@l?Ogld|u+dZa6rR@pQP1wSc>e*JcZ&QvOM07B5dYGtaPwbeRML#gEIT>S>z z4g0Rp=}Pc7fx}w_YXYhQtO}@7sEVi(s!F_0vSxr<6h#XjP+PIKhRMmLor3oS?SdHL zSxI>Uc^Q)vkf)Rfkpqywr44t1vaJCERYBJY)Laux%?;98yI@Gy|8d3lf7{Gg&(MuR zair%AmCJ_)tj$G(sSz(SIVDK4T zK=(Yl4#P{AMzUep8l)k|MVx``8)0$c^z94XF@~*HuG=fqdj;*b0CB4!lg(aU9vk~} zD}5rFc1{V!hIX)Fp}6JSP6T=yIWh71o@P33S@fz)B-6bHk876*bS5aD7QOMf zP^1<^zxdRimdCz?j+^0Lb%~TmufgNm?F9N7r9)w{l#Lrat}ZroCJ3&8I0jxd6Rzc|&Y?_tBVdPelf7XciF z8lH?XXu^ZLlSXQKkTH-86Z*!*6xiO}940UzsRpvKOFRQ~$1>ms$bZ^Cspw+g zCl@D9S3Z5jzzmU)C-O*FgRX;NRHLZD*O;;2Z?E zSJ=2_Q_qEdX(kSMCJ3GZajrvK2T=+A;uEnZVq27*oxNAGKmX5(QHpl5@RAUx@+uv0J3KGYbW z_&zo?&YvI3+%a?ofcyS2w87CP$NXLg;C70jdA-Aa+0}Enw0t*CoN)b(Z=hG_&Mq4S zFN=74P2)bir(A!#b6!{fE*V2ZKeV8eF^wo#b;YAat|*XdXg35yP(6Hf5D`-4m$WO|zn{0H;p V6inAsQ~Ce^002ovPDHLkV1ht8FP8uS literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/shuangzhuang.jpg b/Lucky_clothes/app/src/main/res/drawable/shuangzhuang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32c26d6c0e2d998c90cc85edcccce58e13695689 GIT binary patch literal 1653 zcmbW!XH=6{7zgk-dGjU^RssnGtf1^6dntPb2-brjGQ}tsD=J7BBFILOA{$W|%91by z*%%5HK|t|xZX#kFefmj%)6OaM`7{pDx z8~Cq+!MPccC>~xkA9tV;1HfS*2uFasskze;+;aedg@pHOnj=LVPNSqLIIWoULLM25 z+IGC-07F*WD-L?y**QhU4@#(|W#tuh^$m?pk7><6cRcIt z>VE#B=jGtgo43Ow@7|A2P0!4J{4_UDUtlh;tgfy9wz0Xj>w*E`pR8}Pf4Hz*7aV~A z5vW}k3?9PWAQl1b*F*}NJD^TeM5MK1cyJc!g|+RxGTM#|yjQ>gT2xkNN{+cp`$P8c zV6p#8_6_#8YZTxIVcgFHv4APSK30^d2t26HF_GJuAoFjd%1_cSFP4Aa%DUCZPe1Kj zrxO%za3}3iD8kzkBxAxY*wk>#%DzCKN!6=ek{Cv1%R8Td3&@CUFWW@3Slgle=3k<} zm`zvoK1dx2Q(@-XuuFCnuLRoH3@(NTSIJ#3QcO{A$T+SKft1;#G!1)mav8a9smtw& zb~u(Xk*N0K0xQ9&g$e-6>JV+_6T#0g)6yBcuOea~ds@V9Ok@YUXinN1qe+z)2z3&I%Yy|hb}sa|PpLf`_&zzK zD^Hxj?CCMqGFjI$NLjHNX$aNZ>_05|R$3>X0B?rvoX`?(UCHqH8f4r`?rj^aR#V+u zplL;&at={yo*C7+1}DknQPO`s-a^KouvJYO$YADc7)2PQujGY^Y!0WOJ#ws%Tnw}C zRCOOVmi6Sx(NDzG+0Odyx9o{a0{a7i1thPyX(R_|S2l8Emon5H87z%ZovXCmL$5?# zon}^&Q)kGzl4?VZ#(`6d!}WeQICTwIppFxUGwHw-w zDrpnbx~WpYJ9la&a}_c*kof3q)zh?QYEf2{*qc@@%x-8bE{yCwX+%4ABV*9e`?nSO z6fIME-NnY`wryOLhXnZxOQ2A}uej3V>7-;uxorL`UFu_SQvLndq)95vJlvmgKe^gc zCr5=CqPjfx@=TiYXwS#Gnt7`yF16i)#0bjN#D?5N^u@)XvAqE-$2W~uP1$p;v6s{o z(jI?}r4GXPeYetlQ!p;^69<^QJC60W?0TZiv`Y6)>FzL8jJxcUANri;YQ_O#T;`LV z?iWOcY&=^xtJ&~jNp9?D2I{U?1V4;0pUu3!yr?#+1M}Cg3OGz#=B0P5+~xqWejCyB zi3ZVHYKzw%wx|>FwF^ncKWZs$Z3|>-cc@NR$Dh>eFHTjhaP=gj*Vr>17U>)Socm0^ z-B!y15~Q9*HH^g0s>J9{HGD{UsB=kFXnJ!S+DnkCadIG-pW>}q88 zMcWkO`X$9!&<65#dt3c@a=E!u&Ri#%se3P*QtyvWPd!>uobRl=>Up$()k8>-?mT)n z%li_QK3tnn(9oD*gR?bIE+YV8=r&t;o4#+P__;_Cu08AAIKGawZ*VlQ$}Hwak785C zto1=wO#fsU|J4yX{w%4$C*%CULUpOTUbzJB@DM!vEhV{-NfWdeUpit4D<$F_LC*W% E0Z7=>1ONa4 literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/shuiguo.png b/Lucky_clothes/app/src/main/res/drawable/shuiguo.png new file mode 100644 index 0000000000000000000000000000000000000000..d3161376511a914f0d6cd13ef5cd06cedd9d6a5a GIT binary patch literal 1212 zcmV;t1Vj6YP)1mm|F*YD-Knjz|=Cblp%;ExUVEkByCYZ3qY{ezYNalsv5-xOJfFEc~ zOuSH&!7hx{T|lCkIW9K08JGjzN}&}d0rj*~luQ^KFzClQk10@6DQ!>Np^M?%o%25b z|MPqQ?|X9IL%7Q?y36^n3K;JS{XY_Htu}IHljT2|jH;%s)y9d+CQDMh%N2`WE#OdP zlVx)(4dT_P0&J-^cI|7jJRWbeSo9GAKeH4c6dm%bvR>>b;)VkSoddBnid7R9u-Q^v zOGNMc&6)Y4$=F#OYqMB%VFArOCEo$qxd;gSZYtR{~y0w`0^tVxByM+r#P zk^CezHvAC|i0xShua`IaYP9*%x2h8incji}6Bhy=KsUO!3b#U^Vq97%!)aHQpY#(LNlAuVd?c`mEXy}9+rRLDd8*Vd zW${pUf->VhqA*YG_h`68Bd(P ze%X^aArFrw=TmZOF^_?f2%umo2od&+2FFRYfL{T4&Q~mghs%UNv4Py#k@jR<;{rdW z-R?ZA3eZ;+un(toP=2Yu90gQQk%uCyMDTS1;*+ZQPM#t4? zC#E{VaK=2Kf6(iq9M&k4T1A|MPM*a0nkgz8oQxJI=qnSi!Ak4zNP;T~xe6F>x~mDs ao8aFMAE`Ktk!Mu^0000 + + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/drawable/sure_apssword.png b/Lucky_clothes/app/src/main/res/drawable/sure_apssword.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7cee9bcb90d569021e5cb4e81dc999fffed57a GIT binary patch literal 799 zcmV+)1K|9LP)50008!Nkl%cOxuv3|CMvP= zfe#48!Uq-x3?jY))`CKsh;a9gY`6;{X74$BlSn|fJ!fXV^Pkz7IfNDT(F$Tg-7q53 zNJLEl_NeMUB6DtP4g&ZUX2`3#h824Gj%l`F#FI7N|@x#bR-%<2Yjg z)&sbqs$-7hy!AY9G7Q6}N~N-ki1q_G3!tp3=X~EEu?4b*>F@7fm&@h80r(D}i<$4H z1rd=G0ImX9OGM3{=e@Q8vW5|naRANCyxPWbyhlWS0+^nenb}Y%6v`$$E0`b%ibUiC zILgcqO-_?_5jg_j0e~T9?lIX}!HCFLBKqKY-a(VY`RidAK2gv`U*tT161wy5e$0B4x_ z_M%{tlQFXqyvE<9Hp&_U{D(=Cctt29B60IOrK&psv;laQHF@XkpS35VcdB}and7GV z$G2e4#2^5kFCw_fv~?k%G?;q;c2|3lb;UIiR4a1avnH7N`2788Fw+2@GV@7OfUN5x zG78`TGq16Qv8oHPvmgkLRaKnuegD1*uGSBcri>L#;y3}YDQwFEQ!Ew_Igaxv0Z4*W zDwV^%y}gg?DHU}qv(O1e#Hi@9C{rqxHkHfe&j2nk^K}t958zrZm)o4r=fC__W#V8W zG7O-jS`g#HHp0xQgL*aLXGe;K8gJd#l$<;Wf({}YR@F|M;d@!GDS;Un7-(}{cRY%s z_P)M8W6St=V5+$@&dlwmg178BV*@aEPd(QZckCR1i_AQcHDHbLGj6_D;@2iKw_5e4 zBq;&>0+4wKuL0izU{zYOr_R8GgM-_nD9RI2<5DT3s#C7(mU?=6-dhh>OBFn;ALHvF dtHZ_Y{|zt=$ul4FLf!xX002ovPDHLkV1iDBa5w+} literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/tab_menu_text.xml b/Lucky_clothes/app/src/main/res/drawable/tab_menu_text.xml new file mode 100644 index 0000000..fb06945 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/drawable/tab_menu_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/drawable/time.png b/Lucky_clothes/app/src/main/res/drawable/time.png new file mode 100644 index 0000000000000000000000000000000000000000..8a672eb7cb0fb490e90d02ce04eacf9f70725337 GIT binary patch literal 2219 zcmV;c2vqlpP)h8GxT}mqj3+1yMxA3pAdHM>r}Gt7sV$O+3=XE5@kJq-r##>KNsRXd-c{o1F8Ed46;=qjGYaPXf{I96gO(8i{uY=@KwmFQu!%)sM<3yLE$(y&~N5wW%yZZG}5+ z`q}78NtiNN6g1_aNx)>i%yQOm){Y8(KZ=*NTK2?@rTf%HE+L0q-$aYLhaB(qo{gRm z)R>HPR)&cC&Kx)eRL;pwLZZG9E#w8~(A$%3z^5 z1yl!<^)e6W?UoKO84YN(UQMbNUpzx@`dj>TDUT_M8a6Jk0q++;6G+d53})a zMT#(|fJxahN+USs30&5$&Gbu{f={cqHtHpp^^_c4$HmMH#*eJylOBg)^Uw41rL#Qq@C13s4-pw| zByHm|FqXjMEg)TNw0&j*=C)XKxIM;*)eeBO{Nl>H^geDWO+BExjgrWJtCOhxMB3=# zL18|nCqCx(rK@;>O6UM7>?J{(^YaaV75qcNF@LU_fmu9CCkyMQE>u8h3i9S== zDYyG8eMPA%u#`AOFKZ>}thL)|?{Qk`!S>Wj@CpJ$iDQ3xj|ELIsH>^E9c%||D+S*> zF#aU`WddkSkoY5PPPAl@>NMgO4rbJvGd4a)xA-H6t3HleHAK`4EP%;+Sq`+eC#cvm zfYb#p4q@I2a6JTe0WE+Bz)}-@`Uqlk;7BCA{w-{r00ylMVDR%g=Iyt8)72fj)ds>E z@F$?FJ)mLVL{g>|g5jK5bh!)EY2idaC=7&8Zo;8Z=%HF?LCz3R+h}At{H+c6)xgSa zkR1*?huZ)~PcaeyVGceWZ5OVjNMYf!22|Zf+5>w3l1<#h6k_^c08^2X*N(!G zLGU0P0$V~xgXNfq5Z4;~fa7;yPav$>Vip!phMo;Ys!rotAtd~v6Ek-dT8FintgQi? z+%*?(=)>mK{h@Y0WQ9OkOZd$>sPKWb$?&Q-Yy#d-gYSpHfq_pl^Hoa z+|iiJtcwP1ADgn7AH1N&%M{!+vG{{ivPFE)a6VqTRq2f;MH)>Xy~hgn=p4x04-Vt(|7DlT1PK%1!a+GG`z4f zLhQ3vcG&VKXUjh!SZMF@(e=~BSF9j0zNcAa%!j(;;58Jy22gOLoHth-rAiyjz=@0L z96Q}3C@Uq0?5Q#bz}07Eh*3u-lJ52qjxFiNk@N)1aKY81yp>WxMU9T3Q|9A8!e#kf z0z1o|Q$Tev`J9}LM4fhQK0UPu=~FnLR=*m=+aKi7K6(ayUR+3>blf&ICwYwIUm?)AL#a#9FNYyo&ri(uSAM>o6>iEaLy**Wl?TuVr!Fd3eW0GtY z8q%#VG~L;GltFtZie8RVFEBBG9qtP)`hrW+#7<0Py1T{tzhuyvlet+^7XSg?I{c|6 tKx!z}X?fsRN$KJk;kX-hmohu~{{Y=33sy2ehD!hd002ovPDHLkV1g6pIpzQW literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/title_yi.png b/Lucky_clothes/app/src/main/res/drawable/title_yi.png new file mode 100644 index 0000000000000000000000000000000000000000..7950977782f62008e1648dd709d326a3154d8fbf GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/user_account.png b/Lucky_clothes/app/src/main/res/drawable/user_account.png new file mode 100644 index 0000000000000000000000000000000000000000..e70142aef6c941e1cbd7a0b73cb636eaf598b665 GIT binary patch literal 1045 zcmV+w1nT>VP)OlMrbW68Wlw)p@P9uOm}uS&CZe8X7b$KnZ#V?)7*3azkAO; z=gb*lK4XVn$r9a+avLI*xuvSZ2;Xx_j&i^l4k{;s3}d6UNVpAnWYS*brwQ;a(=?8t z*>)1;C;fE&!LeiqA}zoW%3F{O%H~!KVEMP)jIuGaaSB__=Pzd~5n9 z9Oq}?B$ly0-`f0OGt~*&1gyg{2Id9zj7_@+_zI*8E7Ck$V=mZC-UV_RWG`0a%cC?A}e@b&U>13?=of|LZkvKvT9!{)n8S!`+BN3PUXI7p95Kr z=mz3OzyC+VvzV%4V`z30iSo|_-Fa;E0VI43SUNkB{ax)@H0ia3-C9c>NH?MfD2be< zT~aeP(WVhHsnw|L0Cn%Umu#e&E}0Pv!NHzoi`|C93ka1cV+el&BW|k)RG?HL?g<$t z#2dtoc0ca~FO9ALuD}WRfNUxt+D~ZwQ97=4>wxbF4mR!6fZHT=q1k>2pJIuQGtN4Y zI?x8-4=m$GUn;q%3@}Xlcc3a?Coz??_G7>&z!@xKji0JNxFyw%Y9p`(%lNdYpw~7D zuMsz1DrQ?89J8-S7zXLVifs2gMQ+|}6or+x(y zbe8ok3~Z)j;8^qOt-YRF*-659cY)wstNTj6T3ht=?r)D?(c#tke764q8UA!G0uacS P00000NkvXXu0mjfj0o`N literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/user_general.png b/Lucky_clothes/app/src/main/res/drawable/user_general.png new file mode 100644 index 0000000000000000000000000000000000000000..cf579477be3e1bb299522bba2a8bfc27fb1ef0c9 GIT binary patch literal 402 zcmV;D0d4+?P)T1>Z)AKXD*b39g)*r53M?X&D;=MB3EsVC^;DHkhleEIoF{rjJ9gvJ|eFHGDkbT=DYXe}B7u`Tgk=p*RM~zy9<_jG39KWU}j~=@bPuF_w{| whG4Zwj-kZp8MT<0P@;;O(V(VEFcM=30DI2tA7r+V#{d8T07*qoM6N<$f)V+|y8r+H literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/user_icon.png b/Lucky_clothes/app/src/main/res/drawable/user_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d5309b1e40b0dd814a99e7e4f33fdd00098705a2 GIT binary patch literal 5995 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 KlRg~8&& zy#Dr z?Y$gwW~*0rn$>a;)D-xdiK?J(IRxs!t%03*S_codHj9CGH%fPomTO+V=CGQehU2zG zH3tCK3)@r#y!QF&3*b4%A)-=v_@u%j;JknJV>6~i9EezQF{T(eUcuC2hQRN;8_ux{ z))u~F=GrE;Gp`QLr!=m9AAoE%gS8u_#Ih{$C^2&}IuW%pR?v9x*p>{lwv>yqwu$}B zlj2BeRKE6i#XAqnzZS2pJ7oz{A}le-IwHaIYVdHK?09PP@?ac-I=L`J3Zzb?M@GuG za>_INGiqutPG+?_&{q3UF9o$kH!U4%G))>~)zoN$?yQ)|a*5g|ZM;4B06Z9@ z#9Lx9l|mwAW(a9gl6vcd)`zlfk!=(K(ZoWOR=m+R(!I>?oX-rqOBb@cu&LSy-M86% z^Zm{_-*?U#!d3dwRdVq^{I9Ki)=T}k$!j?pC|MaO_+~%+IS|neP{glPx9O*BM!hUp z)2&Jp+{%CpK-td7G&b8ae4`8|zkd#(A=t8+8mqrrY7k4pZX>jZh~An@#60y*Xym$8 zY^`)2Cqx0h7ll|O0~agg>?LPVad0nr)weU@8DUMg?tIbrd-9~615j_KfTek;~#%DZEUUfsNM4B1?7Qn3$%U;tL8NM4NO#q$b zRqL~YJ*L&b;P(Nv81B5*c#UsDly9S^>K~GmJ=Pn#Sz-E`!Dmf({(9~hXn~++5O!0Y z`fgV66TQ}*l5qmyTq3@&XVzZ{qSpW%Ca?O)g61-}hmf&- zFX%aXYRj7$_pzrp`XIA?BnHS<2lw=a%h^UBfQrP+Tcdv*ci9(0WiqVzuPNd|<@(YI zv7)?yZM+&D>t7|Uhvy-}C?IO6u4*h9=L0?+1mFBV*7RTtglL{SqnO)?=$<$_%1rGf zcrO_17tg?D&m7tlo-8HsR%g3`&>KJ9DzFIWj)83u^cldvFE~Jw@i;I_3TpJ4ys_Hu z=@l}!xSZLpV4{*n>&K!y?2CoPGI{|l&j2(6JNG;1q~flV<$&x1V*!2{#^eGxw!HiW zKqWDl_8IQnUFqtS>HkzXY`Ziz<0N=tP5HOWcx*fUP52vN*)opH>QmzFwM?)Vp_fY@<002ovPDHLkV1ns25UT(H literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/waitao.jpg b/Lucky_clothes/app/src/main/res/drawable/waitao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..397597a0bb0ebed3fa62d79c810c2df1d5390f2c GIT binary patch literal 1824 zcmbW!X;jl!8VBH;Mo>f=D&W#18uML-yksNjOsq;x{qk_j_&I_LCLXWskXPxrm|{GM~QBicz| zObax=6J`$-B9{1OcXP z19SjjNL||1!2c;2T$fP~h1SPlbpzE#01iVS;1FUpwQf2|cMc!|lDNi>t7q(U2xSpL zVkTdZpe?_wY$orNDXdt5ktzBZ3YBJJYHhRDmhqR(_709tpMT-v>gMjT&C_ewZr?q8 zzrFrJhmQn@91T4d6&(|MDlR@D^~~9{^lvgUFXrau7ZhIl?(+4L(i=C+Zk6A@S9QO- zrnc@ueM@Uwdq-zichA$G2cHcMk31ihzkKz2YWmIFckh+I&i(ce)x3IPan%I_h<~$w zm;J#-(7E6cgn&@1E*SijZX*Z~a*drHk?Vsx6k%+^Oh%KwydbG;*0*HsRFDHBWf+Rp zX1TR;mG&>$pM$0RU$Wm}|8re-?%H|#&WlM=si>E(@Gin3hOf(ihw7(Mi!@^j-hcGGYuqb~~3$y@QP?u`~mZgf2h5ZuD zJobnl`}AaL&2)=-o2YoN@1jJq<*hK-kLHsp-R`8n#!-Bv-I8zFa6=A)XA2ltv>K6qn)%a48WufL_PHL*&b zsNO3--{+oDyvL_96;M%EvZIDd?qy8p24?@%UCnp;_%+ABYX#YE9~3UHO1cE#__odEogTxcabzp<+syM8%8vAAvvcW5@zQ}S-KI%}bZuTqY4*Up#3;L4QHo}3e+sG4L! z){7dCHm-7=DpMIOF@F@6e|120=YwNnwIG@QVXAG1eZz$xa*Ubz#0|{S zb0zF{5g{=|Ev`tkR!gLD0{`{%^+{ulOR1U*W^h>#`wBU{lg!+jW$mr1%AM%6WQi8= zOY8B|43fi0USwYnhZss@B{m5kMrlNOxsjFPVK;l!aOFv67NZ}(R#{vDo|_}Lo@!o#~+w}X69FyhFup+Pm)Yn<()pFI-M8J6+{k= z zgu{dUutUte486T08-(A-1U3CQzVG9iN2q5k)eF5i(MQW`obAbT3pe;O4OWe4E#y;8 zc`459o4hE*=zw)`A>{5SFnbkt+mX@Kvadl-z^C>@V~ZXH0XdI4!kmdqv1!6@9~vqtpn?fPer-V2)LGz}YUywhNK` WGkZtERgy2={`2~aQ3W5g&;JQj&K(B; literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/drawable/weiyi.jpg b/Lucky_clothes/app/src/main/res/drawable/weiyi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de5903cfb2234410294210db98b7cefe6e1f7d79 GIT binary patch literal 1430 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivwh= zDOELf4NWZ*Q!{f5ODks=S2uSLPp{yR(6I1`$f)F$)U@=B%&g*)(z5c3%Btp;*0%PJ z&aO$5r%atTea6gLixw|gx@`H1m8&*w-m-Pu_8mKS9XfpE=&|D`PM*4S`O4L6*Kgds z_3+W-Cr_U}fAR9w$4{TXeEs(Q$Io9Ne=#yJL%ap|8JfQYf&OA*VPR%r2lxYE z#}NLy#lXYN2#h>tK?ZwKvi|)y-|K6ve$cjSItqKYOz_S%Vt1E4xPDT}UuU1|I=%O1R_E7eTUR!D zSBhSrUl{lD1K-beHtOYhXD8-YyjXnEgZ<~Tt;+*Xg{6sR9y8qI@4Ki=d&Lv3l-{ip zzk^?KAN%w+E&ttO`AZFU0o(2Jb{6Y@UzUG;{>ymYxEiy|HSxdwYg|9<+wnR2MvTX; zwil71=Pt<-H^oli8=V*m6<| z{A4TN$CuZgvzl~b*Vh%+`>RyhuRlwuUs|#L@PCH3eeyp%AHF_o?9jPz)1>mDZ z-m!PVtupDu2ieoe!RZ@o7jFny(O1(#qI}W>P}p~J$8B4iJcbbEScGF%zCnq z|NJ-mjwsKHnKeJ|>26AxYR!4a@XO!qTl>^2;+`M*CvO<}=X&6_Cq56%DwKcy6FpjE z`6GE%W}Qxd;MK$k<;^`E-*zOtJKfWtz`0bT?xRUpuj`vxIp3l*7VYXYShHU^;^eA| z`hYDRY|}DiMa+FB9?c5$F0iZp5x3sF>y7)QlS-C%Uzjz|`o*;==a2ESh`8COvn?L( p%z1jb=lOckwUL+mwKlHx{JgtWBrs|wt4N5kA@9Mr4)XtR0swQ#Wr+X) literal 0 HcmV?d00001 diff --git a/Lucky_clothes/app/src/main/res/layout/activity_main.xml b/Lucky_clothes/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..0352b13 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/layout/cart_have_product.xml b/Lucky_clothes/app/src/main/res/layout/cart_have_product.xml new file mode 100644 index 0000000..b7362e4 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/layout/cart_have_product.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/Lucky_clothes/app/src/main/res/layout/cart_no_product.xml b/Lucky_clothes/app/src/main/res/layout/cart_no_product.xml new file mode 100644 index 0000000..8781e18 --- /dev/null +++ b/Lucky_clothes/app/src/main/res/layout/cart_no_product.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + +