diff --git a/orange_android/.gitignore b/orange_android/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/orange_android/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/orange_android/.idea/.gitignore b/orange_android/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/orange_android/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/orange_android/.idea/compiler.xml b/orange_android/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/orange_android/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/orange_android/.idea/gradle.xml b/orange_android/.idea/gradle.xml new file mode 100644 index 0000000..3f3f247 --- /dev/null +++ b/orange_android/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/orange_android/.idea/misc.xml b/orange_android/.idea/misc.xml new file mode 100644 index 0000000..2a4d5b5 --- /dev/null +++ b/orange_android/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/.gitignore b/orange_android/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/orange_android/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/orange_android/app/build.gradle b/orange_android/app/build.gradle new file mode 100644 index 0000000..68674b4 --- /dev/null +++ b/orange_android/app/build.gradle @@ -0,0 +1,43 @@ +plugins { + id 'com.android.application' +} + +android { + namespace 'com.example.test' + compileSdk 33 + + defaultConfig { + applicationId "com.example.test" + minSdk 27 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + debuggable true + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation group: 'com.alibaba', name: 'fastjson', version: '1.2.12' + implementation "com.squareup.okhttp3:okhttp:4.2.2" + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation 'com.github.crazyandcoder:citypicker:6.0.2' +} \ No newline at end of file diff --git a/orange_android/app/proguard-rules.pro b/orange_android/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/orange_android/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 \ No newline at end of file diff --git a/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java b/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java new file mode 100644 index 0000000..6ea62a5 --- /dev/null +++ b/orange_android/app/src/androidTest/java/com/example/test/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.test; + +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.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/AndroidManifest.xml b/orange_android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..66963f5 --- /dev/null +++ b/orange_android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/MainActivity.java b/orange_android/app/src/main/java/com/example/test/MainActivity.java new file mode 100644 index 0000000..1babbe2 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/MainActivity.java @@ -0,0 +1,123 @@ +package com.example.test; + + +import android.content.Intent; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +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.test.activity.homeActivity; +import com.example.test.activity.registerActivity; +import com.example.test.dao.UserDatabase; +import com.example.test.entity.user; +import com.example.test.netrequest.userOkHttp; + +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.login); + init(); + } + + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.register: + Intent intent = new Intent(this, registerActivity.class); + startActivity(intent); + break; + case R.id.login: +// loginCheck(); + Thread thread = new Thread(runnable); + thread.start(); + + + + } + } + + private void loginCheck() { + String name = usernameText.getText().toString(); + String pass = paswdEdit.getText().toString(); + if(name.isEmpty()||pass.isEmpty()){ + Toast.makeText(this,"用户名或密码为空",Toast.LENGTH_SHORT).show(); + return; + } + + UserDatabase db = new UserDatabase(this, "orange"); + SQLiteDatabase readdb = db.getReadableDatabase(); + Cursor cursor = db.select(readdb, "user",null,"username=? and password=?",new String[]{name,pass},null,null,null); + + if(cursor.getCount()!=0){ + cursor.moveToNext(); + Intent intent = new Intent(this, homeActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("username",cursor.getString(1)); + bundle.putString("sex",cursor.getString(3)); + bundle.putString("address",cursor.getString(4)); + cursor.close(); + readdb.close(); + intent.putExtras(bundle); + startActivity(intent); + }else { + Toast.makeText(this,"用户名或密码有误",Toast.LENGTH_SHORT).show(); + } + + } + + public void init(){ + registerButton = findViewById(R.id.register); + registerButton.setOnClickListener(this); + loginButton = findViewById(R.id.login); + loginButton.setOnClickListener(this); + usernameText = findViewById(R.id.username); + paswdEdit = findViewById(R.id.password); + } + + + Runnable runnable = new Runnable() { + @Override + public void run() { + String name = usernameText.getText().toString(); + String pass = paswdEdit.getText().toString(); + userOkHttp userOkHttp = new userOkHttp(); + user u = new user(); + u.setUsername(name); + u.setPassword(pass); + try { + user result = userOkHttp.login(u); + if(result!=null){ + Intent intent = new Intent(MainActivity.this, homeActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("username",result.getUsername()); + bundle.putString("password",result.getPassword()); + bundle.putString("sex",result.getSex()); + bundle.putString("city",result.getCity()); + intent.putExtras(bundle); + startActivity(intent); + }else{ + Looper.prepare(); + Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + }; +} diff --git a/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java b/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java new file mode 100644 index 0000000..f6df4c9 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/activity/fruitActivity.java @@ -0,0 +1,103 @@ +package com.example.test.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import com.example.test.R; +import com.example.test.entity.fruitContent; +import com.example.test.entity.fruitKind; + +import java.util.ArrayList; +import java.util.List; + +public class fruitActivity extends AppCompatActivity { + private String kinds[] = {"超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","葡萄/提子","热带水果","梨/苹果","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","葡萄/提子","热带水果","梨/苹果","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜","超值必抢","鲜果上新","店家推荐","柑桔橙柚","蜜瓜/西瓜"}; + private int imgs[] ={R.drawable.hot,R.drawable.fresh,R.drawable.recomend}; + private int fruitImgs[][] = {{R.drawable.grapefruit,R.drawable.hamimelon,R.drawable.watermelon}, + {R.drawable.grapefruit1,R.drawable.leechee,R.drawable.carambola}, + {R.drawable.pineapple,R.drawable.pear,R.drawable.apple}, + {R.drawable.orange1,R.drawable.grapefruit,R.drawable.grapefruit1,R.drawable.grapefruit2}, + {R.drawable.watermelon,R.drawable.watermelon1,R.drawable.hamimelon,R.drawable.hamimelon1}, + {R.drawable.grape,R.drawable.greengrape, R.drawable.grape1}, + {R.drawable.coconut,R.drawable.banana,R.drawable.pineapple,R.drawable.carambola,R.drawable.leechee}, + {R.drawable.apple,R.drawable.pear,R.drawable.pear1,R.drawable.apple1}}; + + private String fruitNames[][] = {{"红心西柚 泡水榨汁茶饮佳选","冰淇淋网纹蜜瓜 一口软糯香甜","海南麒麟瓜,粒约3KG~4KG"}, + {"广西正宗容县沙田柚子新鲜水果白","妃子笑荔枝","福州漳州甜杨桃!只卖书上熟果"}, + {"菲律宾凤梨1粒装1KG","正宗烟台红富士苹果|24小时速发","陕西贡梨400g"}, + {"江西赣南精选血橙4粒装720g","红心西柚 泡水榨汁茶饮佳选","广西正宗容县沙田柚子新鲜水果白","红心蜜柚10斤新鲜水果应季大红肉柚子"}, + {"海南麒麟瓜,粒约3KG~4KG","现摘冰糖麒麟大西瓜","冰淇淋网纹蜜瓜 一口软糯香甜","新疆哈密瓜脆甜多汁保熟包甜"}, + {"云南夏黑葡萄新鲜采摘无籽葡萄","阳光玫瑰葡萄新鲜水果!现摘!","云南下黑葡萄顺丰冷链新鲜直达"}, + {"泰国椰青700g","广西芭蕉酸牛蕉牛角蕉新鲜香蕉","菲律宾凤梨1粒装1KG","福州漳州甜杨桃!只卖书上熟果","妃子笑荔枝"}, + {"正宗烟台红富士苹果|24小时速发","陕西贡梨400g","红香酥梨新鲜水果当季整箱","冰糖心苹果 精选好果 脆甜多汁!"}}; + private String fruitDescs[][] = {{"皮薄肉厚汁多颗粒饱满","香甜软糯,水分很足","香甜可口,丰富多汁"}, + {"个大纯天然,价廉物美","荔枝特别棒,肉厚核小","果子新鲜果肉纤维细腻"}, + {"果子新鲜果肉纤维细腻","栖霞苹果|中国大陆|红富士","鲜甜可口,汁多美味"}, + {"酸甜可口,一口爆汁","皮薄肉厚汁多颗粒饱满","个大纯天然,价廉物美","核小肉厚,水分足"}, + {"香甜可口,丰富多汁","水分足足的,皮薄薄的","香甜软糯,水分很足","往嘴里咬一口满嘴留香"}, + {"中国大陆|食用农产品|黑夏","中国大陆|散装","中国大陆|包装|黑夏"}, + {"新鲜可口 汁多味美","甜度浓郁","香水菠萝","果子新鲜果肉纤维细腻","荔枝特别棒,肉厚核小"}, + {"栖霞苹果|中国大陆|红富士","鲜甜可口,汁多美味","清香爽口甜,果汁充足","烟台苹果|中国大陆|一级"}}; + + private double fruitPrices[][] = {{16.8,15.3,21.8}, + {15.7,22.4,5.8}, + {10.8,15.3,20.4}, + {24.9,11.5,16.7,13.8}, + {21.7,24.6,21.8,25.9}, + {21.9,15.3,17.6}, + {15.7,10.6,12.9,10.5,20.6}, + {24.9,21.2,19.9,24.6}}; + + private int fruitTag[][]={{0,1,0}, + {1,0,0}, + {0,0,0}, + {1,0,0,1}, + {1,0,1,0}, + {0,0,1}, + {1,1,0,0,0}, + {0,0,1,1}}; + private List fruitContents = new ArrayList<>(); + + public List getFruitContents() { + + return fruitContents; + } + + List fruitKinds=new ArrayList<>(); + @Override + protected void onCreate(Bundle savedInstanceState) { + initFruitContents(); + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_fruit_fragment); + + } + + protected void initFruitContents() { + for (int i = 0; i < fruitImgs.length; i++) { + int len = fruitImgs[i].length; + fruitContent arr[] = new fruitContent[len]; + for (int j = 0; j < arr.length; j++) { + fruitContent f = new fruitContent(fruitImgs[i][j],fruitNames[i][j],fruitDescs[i][j],fruitTag[i][j],fruitPrices[i][j]); + arr[j]=f; + } + fruitContents.add(arr); + } + + } + + + + public List getfuritKinds() { + fruitKind f; + for (int i = 0; i < kinds.length; i++) { + if(i<3){ + f = new fruitKind(kinds[i], imgs[i]); + } + else { + f = new fruitKind(kinds[i], 0); + } + fruitKinds.add(f); + } + return fruitKinds; + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java b/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java new file mode 100644 index 0000000..8a041f4 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/activity/homeActivity.java @@ -0,0 +1,142 @@ +package com.example.test.activity; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.GridView; + +import com.example.test.R; +import com.example.test.adapter.homeNavigationBottomAdapter; +import com.example.test.fragment.navigationCartFragment; +import com.example.test.fragment.navigationGoodFragment; +import com.example.test.fragment.navigationHomeFragment; +import com.example.test.fragment.navigationPersonFragment; +import com.example.test.service.MessageService; + +public class homeActivity extends AppCompatActivity { + public final int Home = 1; + public final int Good = 2; + public final int Cart = 3; + public final int Person = 4; + private int imgs[]={R.drawable.home_kind_orange1,R.drawable.home_kind_grapefruit, + R.drawable.home_kind_orange,R.drawable.home_kind_watermelon, + R.drawable.home_kind_pear,R.drawable.home_kind_apple, + R.drawable.home_kind_lemon,R.drawable.home_kind_mango + }; + + private String names[] = {"橙子","柚子","橘子","西瓜","香梨","苹果","柠檬","芒果"}; + + private double prices[] = {9.9,29.3,19.7,5.7,6.7,10.9,15.9,29.9}; + + private int sectionImgs[] = {R.drawable.section_home,R.drawable.section_good, + R.drawable.section_cart,R.drawable.section_mine}; + private String sectionNames[] ={"首页","商品","购物车","我"}; + + private FragmentManager manager = getSupportFragmentManager(); + private Bundle extras; + private Handler handler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(@NonNull Message message) { + switch (message.what){ + case Home: + navigationHomeFragment homeFragment = (navigationHomeFragment) manager.findFragmentById(R.id.navigation_section); + homeFragment.init(); + return true; + case Good: + navigationGoodFragment goodFragment = (navigationGoodFragment) manager.findFragmentById(R.id.navigation_section); + goodFragment.initView(); + return true; + } + return false; + } + }); + + public Handler getHandler() { + return handler; + } + + public int[] getImgs() { + return imgs; + } + + public String[] getNames() { + return names; + } + + public double[] getPrices() { + return prices; + } + + public int[] getSectionImgs() { + return sectionImgs; + } + + public String[] getSectionNames() { + return sectionNames; + } + + public Bundle getBundle(){ + return extras; + } + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.navigation); + Intent service = new Intent(homeActivity.this, MessageService.class); + startService(service); + Log.i("start service","start"); + Intent intent = getIntent(); + extras = intent.getExtras(); + init(); + initFragment(new navigationHomeFragment()); + + } + + public void initFragment(Fragment fragment){ + FragmentTransaction transaction = manager.beginTransaction(); + transaction.replace(R.id.navigation_section,fragment); + transaction.commit(); + } + + protected void init(){ + + //初始化底端导航栏 + GridView navigation = (GridView)findViewById(R.id.home_navigation_bottom_gridview); + homeNavigationBottomAdapter navigationAdapter = new homeNavigationBottomAdapter(sectionImgs,sectionNames,this); + navigation.setAdapter(navigationAdapter); + navigation.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + switch (position){ + case 0: + initFragment(new navigationHomeFragment()); + break; + case 1: + initFragment(new navigationGoodFragment()); + + break; + case 2: + initFragment(new navigationCartFragment()); + + break; + case 3: + initFragment(new navigationPersonFragment()); + break; + } + } + }); + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java b/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java new file mode 100644 index 0000000..6d328ed --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/activity/registerActivity.java @@ -0,0 +1,209 @@ +package com.example.test.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.ContentValues; +import android.content.Intent; +import android.database.sqlite.SQLiteDatabase; +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 com.example.test.MainActivity; +import com.example.test.R; +import com.example.test.dao.UserDatabase; +import com.example.test.entity.user; +import com.example.test.netrequest.userOkHttp; +import com.lljjcoder.Interface.OnCityItemClickListener; +import com.lljjcoder.bean.CityBean; +import com.lljjcoder.bean.DistrictBean; +import com.lljjcoder.bean.ProvinceBean; +import com.lljjcoder.citywheel.CityConfig; +import com.lljjcoder.style.citypickerview.CityPickerView; + +import java.io.IOException; + +public class registerActivity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener { + private EditText userEdit; + private EditText passEdit; + private EditText paEdit; + private RadioGroup sexBut; + private TextView adressText; + private String sex ="男"; + private Button regBut; + CityPickerView citypv; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.register); + init(); + } + + public void init(){ + citypv = new CityPickerView(); + citypv.init(this); + initConfig(); + citypv.setOnCityItemClickListener(new OnCityItemClickListener() { + @Override + public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) { + String pro = province.getName(); + String ci = city.getName(); + String dis = district.getName(); + adressText.setText(String.format("%s %s %s",pro,ci,dis)); + } + + @Override + public void onCancel() { + } + }); + userEdit = findViewById(R.id.reg_username); + passEdit = findViewById(R.id.reg_password); + paEdit = findViewById(R.id.reg_apassword); + adressText = findViewById(R.id.reg_adress); + adressText.setOnClickListener(this); + sexBut = findViewById(R.id.reg_sex); + sexBut.setOnCheckedChangeListener(this); + regBut = findViewById(R.id.reg_register); + regBut.setOnClickListener(this); + } + + private void initConfig() { + CityConfig cityConfig = new CityConfig.Builder() + .title("选择城市")//标题 + .titleTextSize(18)//标题文字大小 + .titleTextColor("#585858")//标题文字颜 色 + .titleBackgroundColor("#E9E9E9")//标题栏背景色 + .confirTextColor("#585858")//确认按钮文字颜色 + .confirmText("ok")//确认按钮文字 + .confirmTextSize(16)//确认按钮文字大小 + .cancelTextColor("#585858")//取消按钮文字颜色 + .cancelText("cancel")//取消按钮文字 + .cancelTextSize(16)//取消按钮文字大小 + .setCityWheelType(CityConfig.WheelType.PRO_CITY_DIS)//显示类,只显示省份一级,显示省市两级还是显示省市区三级 + .showBackground(true)//是否显示半透明背景 + .visibleItemsCount(7)//显示item的数量 + .province("浙江省")//默认显示的省份 + .city("杭州市")//默认显示省份下面的城市 + .district("滨江区")//默认显示省市下面的区县数据 + .provinceCyclic(true)//省份滚轮是否可以循环滚动 + .cityCyclic(true)//城市滚轮是否可以循环滚动 + .districtCyclic(true)//区县滚轮是否循环滚动 + .drawShadows(false)//滚轮不显示模糊效果 + .setLineColor("#03a9f4")//中间横线的颜色 + .setLineHeigh(5)//中间横线的高度 + .setShowGAT(true)//是否显示港澳台数据,默认不显示 + .build(); + citypv.setConfig(cityConfig); + } + + + + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.reg_adress: + citypv.showCityPicker(); + break; + case R.id.reg_register: + Thread thread = new Thread(runnable); + thread.start(); + break; + } + } + + + //利用sqlite数据库验证用户名和密码 + private void check() { + Intent intent = new Intent(this, MainActivity.class); + String username = userEdit.getText().toString(); + String password = passEdit.getText().toString(); + String apassword = paEdit.getText().toString(); + String adress = adressText.getText().toString(); + if(password.equals(apassword)){ + if(username.isEmpty()||username.isEmpty()){ + Toast.makeText(this,"用户名或密码为空",Toast.LENGTH_SHORT).show(); + }else { + if(adress.equals("")||adress.equals("地址选择")) + Toast.makeText(this,"未选择地址",Toast.LENGTH_SHORT).show(); + else{ + UserDatabase db = new UserDatabase(this, "orange"); + SQLiteDatabase writedb = db.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("username",username); + values.put("password",password); + values.put("adress",adress); + values.put("sex",sex); + db.insert(writedb,"user",values); + writedb.close(); + startActivity(intent); + } + } + } + else { + Toast.makeText(this,"两次密码不一致",Toast.LENGTH_SHORT).show(); + } + } + + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + //根据用户选择来改变sex的值 + sex = R.id.reg_male==checkedId?"男":"女"; + } + + + Runnable runnable = new Runnable() { + @Override + public void run() { + Intent intent = new Intent(registerActivity.this, MainActivity.class); + String username = userEdit.getText().toString(); + String password = passEdit.getText().toString(); + String apassword = paEdit.getText().toString(); + String adress = adressText.getText().toString(); + if(password.equals(apassword)){ + if(username.isEmpty()||username.isEmpty()){ + Looper.prepare(); + Toast.makeText(registerActivity.this,"用户名或密码为空",Toast.LENGTH_SHORT).show(); + Looper.loop(); + }else { + if(adress.equals("")||adress.equals("地址选择")) { + Looper.prepare(); + Toast.makeText(registerActivity.this, "未选择地址", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + else{ + user u = new user(); + u.setUsername(username); + u.setPassword(password); + userOkHttp http = new userOkHttp(); + try { + boolean register = http.register(u); + if(register) + { + startActivity(intent); + }else{ + Looper.prepare(); + Toast.makeText(registerActivity.this, "注册失败", Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + } + else { + Looper.prepare(); + Toast.makeText(registerActivity.this,"两次密码不一致",Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } + }; + +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/activity/userActivity.java b/orange_android/app/src/main/java/com/example/test/activity/userActivity.java new file mode 100644 index 0000000..eb9d74b --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/activity/userActivity.java @@ -0,0 +1,68 @@ +package com.example.test.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.example.test.MainActivity; +import com.example.test.R; + +public class userActivity extends AppCompatActivity implements View.OnClickListener { + + private TextView userText; + private TextView sexText; + private TextView adressText; + private Button logoutBut; + private View shoppingView; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.content_user); + display(); + } + + private void display() { + Intent intent = getIntent(); + Bundle bundle = intent.getExtras(); + String username = "账号:"+bundle.getString("username"); + String sex = "性别:"+bundle.getString("sex"); + String adress = "城市:"+bundle.getString("adress"); + userText = findViewById(R.id.user_username); + userText.setText(username); + sexText = findViewById(R.id.user_sex); + sexText.setText(sex); + adressText = findViewById(R.id.user_city); + adressText.setText(adress); + logoutBut = findViewById(R.id.logout); + logoutBut.setOnClickListener(this); + shoppingView = findViewById(R.id.user_shopping_line); + shoppingView.setOnClickListener(this); + + } + + @Override + public void onClick(View view) { + switch (view.getId()) + { + case R.id.logout: + logout(); + break; + case R.id.user_shopping_line: + goShopping(); + } + } + + protected void goShopping() { + Intent intent = new Intent(this, fruitActivity.class); + startActivity(intent); + } + + protected void logout() { + Intent intent = new Intent(this, MainActivity.class); + startActivity(intent); + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java new file mode 100644 index 0000000..18f8cc1 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/fruitContentAdapter.java @@ -0,0 +1,78 @@ +package com.example.test.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.test.R; +import com.example.test.entity.fruitContent; + +import java.util.List; + +public class fruitContentAdapter extends BaseAdapter { + private Holder holder; + private fruitContent fruitContents[]; + private Context context; + + public fruitContentAdapter() { + } + + public fruitContentAdapter(fruitContent fruitContents[], Context context) { + this.fruitContents = fruitContents; + this.context = context; + } + + @Override + public int getCount() { + return fruitContents.length; + } + + @Override + public Object getItem(int i) { + return fruitContents[i]; + } + + @Override + public long getItemId(int i) { + return i; + } + public void setBackgroundColor(int position,String color){ + + } + + @Override + public View getView(int i, View convertview, ViewGroup viewGroup) { + holder = new fruitContentAdapter.Holder(); + fruitContent content = fruitContents[i]; + if(convertview==null){ + convertview = LayoutInflater.from(context).inflate(R.layout.fruit_content_item,null); + holder.iv_img = convertview.findViewById(R.id.fruit_content_img); + holder.tv_name = convertview.findViewById(R.id.fruit_content_name); + holder.tv_desc = convertview.findViewById(R.id.fruit_content_desc); + holder.tv_tag = convertview.findViewById(R.id.fruit_content_tag); + holder.tv_price = convertview.findViewById(R.id.fruit_content_price); + convertview.setTag(holder); + }else { + holder = (fruitContentAdapter.Holder) convertview.getTag(); + } + holder.iv_img.setImageResource(content.getImg()); + holder.tv_name.setText(content.getName()); +// holder.tv_name.getPaint().setFakeBoldText(true); + holder.tv_desc.setText(content.getDesc()); + if(content.getTag()==1) + holder.tv_tag.setText("爆款直降"); + holder.tv_price.setText(content.getPrice()+""); + return convertview; + } + static class Holder{ + ImageView iv_img; + TextView tv_name; + TextView tv_desc; + TextView tv_tag; + TextView tv_price; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java new file mode 100644 index 0000000..e572a4d --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/fruitKindAdapter.java @@ -0,0 +1,84 @@ +package com.example.test.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.ImageView; +import android.widget.TextView; + +import com.example.test.R; +import com.example.test.entity.fruitKind; +import com.example.test.fragment.fruitKindFragment; + +import java.util.List; + +public class fruitKindAdapter extends BaseAdapter { + private List fruitKinds; + private Context context; + private Holder holder; + private int selected_item=0; + + public fruitKindAdapter() { + } + + public fruitKindAdapter(List fruitKinds, Context context) { + this.fruitKinds = fruitKinds; + this.context = context; + } + + @Override + public int getCount() { + return fruitKinds.size(); + } + + @Override + public Object getItem(int i) { + return fruitKinds.get(i); + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View convertview, ViewGroup viewGroup) { + fruitKind kind = fruitKinds.get(i); + if(convertview==null){ + holder = new Holder(); + // Log.i("init",i+" "+convertview); + convertview = LayoutInflater.from(context).inflate(R.layout.fruit_kind_item,null); + if(i == 0){ + convertview.setBackgroundResource(R.color.gray); + } + holder.iv_img = convertview.findViewById(R.id.kind_img); + holder.tv_name = convertview.findViewById(R.id.kind_name); + if(kind.getImg()!=0) + holder.iv_img.setImageResource(kind.getImg()); + holder.tv_name.setText(kind.getName()); + convertview.setTag(holder); + }else { + holder = (Holder) convertview.getTag(); + holder.iv_img.setImageResource(kind.getImg()); + holder.tv_name.setText(kind.getName()); + fruitKindFragment fruitKindFragment = new fruitKindFragment(); + int selected_item = fruitKindFragment.getSelected_item(); + if(i!=selected_item) + convertview.setBackgroundResource(R.color.white); + else + convertview.setBackgroundResource(R.color.gray); + //Log.i("after",i+" "+convertview); + + + } + return convertview; + } + static class Holder{ + ImageView iv_img; + TextView tv_name; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java new file mode 100644 index 0000000..c328004 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/homeFruitKindAdapter.java @@ -0,0 +1,68 @@ +package com.example.test.adapter; + +import android.content.Context; +import android.graphics.Bitmap; +import android.util.Log; +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.test.R; +import com.example.test.entity.product; + +import java.util.ArrayList; +import java.util.List; + +public class homeFruitKindAdapter extends BaseAdapter { + private int imgs[] = {}; + private String names[]; + private List bitmaps; + private Context context; + + + public homeFruitKindAdapter(int[] imgs, String[] names, Context context) { + this.imgs = imgs; + this.names = names; + this.context = context; + } + + public homeFruitKindAdapter(Listbitmaps,String names[], Context context) { + this.bitmaps = bitmaps; + this.names = names; + this.context = context; + } + @Override + public int getCount() { + return names.length; + } + + @Override + public Object getItem(int i) { +// int img= imgs[i]; + String name = names[i]; + List fruit = new ArrayList<>(); +// fruit.add(img); + fruit.add(bitmaps.get(i)); + fruit.add(name); + return fruit; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View ConvertView, ViewGroup viewGroup) { + View view = LayoutInflater.from(context).inflate(R.layout.home_fruit_kind_item,null); + ImageView img = view.findViewById(R.id.home_fruit_kind_img); + TextView name = view.findViewById(R.id.home_fruit_kind_name); +// img.setImageResource(imgs[i]); + img.setImageBitmap(bitmaps.get(i)); + name.setText(names[i]); + return view; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/adapter/homeGoodsFruitAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/homeGoodsFruitAdapter.java new file mode 100644 index 0000000..97b60d4 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/homeGoodsFruitAdapter.java @@ -0,0 +1,87 @@ +package com.example.test.adapter; + +import android.content.Context; +import android.graphics.Bitmap; +import android.telephony.SmsManager; +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.test.R; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class homeGoodsFruitAdapter extends BaseAdapter { + private int imgs[]=null; + private String names[]; + private double prices[]; + private List bitmaps; + private Context context; + + public homeGoodsFruitAdapter(int[] imgs, String[] names, double[] prices, Context context) { + this.imgs = imgs; + this.names = names; + this.prices = prices; + this.context = context; + } + + public homeGoodsFruitAdapter(List bitmaps, String[] names, double[] prices, Context context) { + this.bitmaps = bitmaps; + this.names = names; + this.prices = prices; + this.context = context; + } + + @Override + public int getCount() { + return names.length; + } + + @Override + public Object getItem(int position) { + Map fruit = new HashMap<>(); +// fruit.put("img",imgs[position]); + fruit.put("bitmap",bitmaps.get(position)); + fruit.put("name",names[position]); + fruit.put("price",prices[position]); + return fruit; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + viewHolder holder; + if(convertView==null){ + holder = new viewHolder(); + convertView = LayoutInflater.from(context).inflate(R.layout.home_goods_fruit_item,null); + holder.ivImg = convertView.findViewById(R.id.home_goods_fruit_img); + holder.tvName = convertView.findViewById(R.id.home_goods_fruit_name); + holder.tvPrice = convertView.findViewById(R.id.home_goods_fruit_price); + convertView.setTag(holder); + }else { + holder = (viewHolder) convertView.getTag(); + } + +// holder.ivImg.setImageResource(imgs[position]); + holder.ivImg.setImageBitmap(bitmaps.get(position)); + holder.tvName.setText(names[position]); + holder.tvPrice.setText(prices[position]+""); + return convertView; + } + + static class viewHolder{ + ImageView ivImg; + TextView tvName; + TextView tvPrice; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/adapter/homeNavigationBottomAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/homeNavigationBottomAdapter.java new file mode 100644 index 0000000..363a8c3 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/homeNavigationBottomAdapter.java @@ -0,0 +1,66 @@ +package com.example.test.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.test.R; + +import java.util.HashMap; +import java.util.Map; + +public class homeNavigationBottomAdapter extends BaseAdapter { + private int imgs[]; + private String names[]; + private Context context; + + public homeNavigationBottomAdapter(int[] imgs, String[] names, Context context) { + this.imgs = imgs; + this.names = names; + this.context = context; + } + + @Override + public int getCount() { + return imgs.length; + } + + @Override + public Object getItem(int position) { + Map section = new HashMap<>(); + section.put("img",imgs[position]); + section.put("name",names[position]); + return section; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + viewHolder holder; + if(convertView==null){ + holder = new viewHolder(); + convertView = LayoutInflater.from(context).inflate(R.layout.home_navigation_bottom_item,null); + holder.ivImg = convertView.findViewById(R.id.home_navigation_bottom_img); + holder.tvName = convertView.findViewById(R.id.home_navigation_bottom_name); + convertView.setTag(holder); + }else { + holder = (viewHolder) convertView.getTag(); + } + holder.ivImg.setImageResource(imgs[position]); + holder.tvName.setText(names[position]); + return convertView; + } + + static class viewHolder{ + ImageView ivImg; + TextView tvName; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/adapter/spinnerAdapter.java b/orange_android/app/src/main/java/com/example/test/adapter/spinnerAdapter.java new file mode 100644 index 0000000..40a0daf --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/adapter/spinnerAdapter.java @@ -0,0 +1,69 @@ +package com.example.test.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.test.R; + +import java.util.ArrayList; +import java.util.List; + +public class spinnerAdapter extends BaseAdapter { + private int imgs[]; + private String descs[]; + private Context context; + + public spinnerAdapter() { + } + + public spinnerAdapter(int[] imgs, String[] descs, Context context) { + this.imgs = imgs; + this.descs = descs; + this.context = context; + } + + @Override + public int getCount() { + return imgs.length; + } + + @Override + public Object getItem(int i) { + List list = new ArrayList<>(); + list.add(imgs[i]); + list.add(descs[i]); + return list; + } + + @Override + public long getItemId(int i) { + return i; + } + + @Override + public View getView(int i, View convertView, ViewGroup viewGroup) { + viewHolder holder; + if(convertView==null){ + holder = new viewHolder(); + convertView = LayoutInflater.from(context).inflate(R.layout.navigation_good_spinner_item,null); + holder.ivImg = convertView.findViewById(R.id.good_spinner_img); + holder.tvDesc = convertView.findViewById(R.id.good_spinner_desc); + convertView.setTag(holder); + }else { + holder = (viewHolder) convertView.getTag(); + } + + holder.ivImg.setImageResource(imgs[i]); + holder.tvDesc.setText(descs[i]); + return convertView; + } + static class viewHolder{ + ImageView ivImg; + TextView tvDesc; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/dao/UserDatabase.java b/orange_android/app/src/main/java/com/example/test/dao/UserDatabase.java new file mode 100644 index 0000000..13b6c8a --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/dao/UserDatabase.java @@ -0,0 +1,43 @@ +package com.example.test.dao; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; + +import androidx.annotation.Nullable; + +public class UserDatabase extends SQLiteOpenHelper { + public UserDatabase(@Nullable Context context, @Nullable String name) { + super(context, name,null, 1); + } + + @Override + public void onCreate(SQLiteDatabase sqLiteDatabase) { + String sql = "create table user(id integer primary key autoincrement,username varchar(20),password varchar(20),sex varchar(20),adress varchar(20),phoneNumber char(11))"; + sqLiteDatabase.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { + + } + public void insert(SQLiteDatabase sqLiteDatabase, String table, ContentValues values){ + sqLiteDatabase.insert(table,null,values); +// sqLiteDatabase.close(); + } + + public void delete(SQLiteDatabase sqLiteDatabase,String table,String name,String []args){ + sqLiteDatabase.delete(table,name,args); +// sqLiteDatabase.close(); + } + + public Cursor select(SQLiteDatabase sqLiteDatabase,String table,String columns[],String selection,String selectionArgs[],String grunpBy,String having,String orderBy){ +// Cursor cursor = sqLiteDatabase.query(table,null,null,null,null,null,null); + Cursor cursor = sqLiteDatabase.query(table,null,selection,selectionArgs,grunpBy,having,orderBy); + return cursor; + } + +} diff --git a/orange_android/app/src/main/java/com/example/test/entity/fruit.java b/orange_android/app/src/main/java/com/example/test/entity/fruit.java new file mode 100644 index 0000000..8c20af6 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/fruit.java @@ -0,0 +1,30 @@ +package com.example.test.entity; + +public class fruit { + private String name; + private double price; + + public fruit() { + } + + public fruit(String name, double price) { + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/entity/fruitContent.java b/orange_android/app/src/main/java/com/example/test/entity/fruitContent.java new file mode 100644 index 0000000..8dee6a9 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/fruitContent.java @@ -0,0 +1,61 @@ +package com.example.test.entity; + +public class fruitContent { + private int img; + private String name; + private String desc; + private int tag; + private double price; + + public fruitContent() { + } + + public fruitContent(int img, String name, String desc, int tag, double price) { + this.img = img; + this.name = name; + this.desc = desc; + this.tag = tag; + this.price = price; + } + + public int getImg() { + return img; + } + + public void setImg(int img) { + this.img = img; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public int getTag() { + return tag; + } + + public void setTag(int tag) { + this.tag = tag; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } +} + diff --git a/orange_android/app/src/main/java/com/example/test/entity/fruitKind.java b/orange_android/app/src/main/java/com/example/test/entity/fruitKind.java new file mode 100644 index 0000000..c12afb5 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/fruitKind.java @@ -0,0 +1,30 @@ +package com.example.test.entity; + +public class fruitKind { + private String name; + private int img; + + public fruitKind() { + } + + public fruitKind(String name, int img) { + this.name = name; + this.img = img; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getImg() { + return img; + } + + public void setImg(int img) { + this.img = img; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/entity/message.java b/orange_android/app/src/main/java/com/example/test/entity/message.java new file mode 100644 index 0000000..a05899e --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/message.java @@ -0,0 +1,52 @@ +package com.example.test.entity; + +import java.sql.Timestamp; + +public class message { + 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/orange_android/app/src/main/java/com/example/test/entity/product.java b/orange_android/app/src/main/java/com/example/test/entity/product.java new file mode 100644 index 0000000..1385a90 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/product.java @@ -0,0 +1,50 @@ +package com.example.test.entity; + +public class product { + private int id; + private String name; + private double price; + private String imgUrl; + + public product() { + } + + public product(int id, String name, double price, String imgUrl) { + this.id = id; + this.name = name; + this.price = price; + this.imgUrl = imgUrl; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public String getImgUrl() { + return imgUrl; + } + + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/entity/user.java b/orange_android/app/src/main/java/com/example/test/entity/user.java new file mode 100644 index 0000000..c1af4de --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/entity/user.java @@ -0,0 +1,59 @@ +package com.example.test.entity; + +public class user { + private String username; + private String password; + private String sex; + private String city; + private int id; + + public user() { + } + + public user(String username, String password, String sex, String city, int id) { + this.username = username; + this.password = password; + this.sex = sex; + this.city = city; + 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; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/fragment/fruitContentFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/fruitContentFragment.java new file mode 100644 index 0000000..f219ebf --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/fruitContentFragment.java @@ -0,0 +1,39 @@ +package com.example.test.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ListView; + +import com.example.test.R; +import com.example.test.activity.fruitActivity; +import com.example.test.adapter.fruitContentAdapter; +import com.example.test.entity.fruitContent; + +import java.util.List; + + +public class fruitContentFragment extends Fragment { +private View view; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + view= inflater.inflate(R.layout.fragment_fruit_content, container, false); + fruitActivity activity=(fruitActivity)getActivity(); + List fruitContents = activity.getFruitContents(); + show(fruitContents.get(0)); + return view; + } + public void show(fruitContent fruitContents[]){ + ListView listView = view.findViewById(R.id.fruit_content_listview); + listView.setDivider(null); + fruitContentAdapter adapter = new fruitContentAdapter(fruitContents,getActivity()); + listView.setAdapter(adapter); + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/fragment/fruitKindFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/fruitKindFragment.java new file mode 100644 index 0000000..2e66d32 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/fruitKindFragment.java @@ -0,0 +1,67 @@ +package com.example.test.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; + +import com.example.test.R; +import com.example.test.activity.fruitActivity; +import com.example.test.adapter.fruitKindAdapter; +import com.example.test.entity.fruitContent; +import com.example.test.entity.fruitKind; + +import java.util.List; + +public class fruitKindFragment extends Fragment { + + private int selected_item = 0; + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view=inflater.inflate(R.layout.fragment_fruit_kind, container, false); + ListView listView = view.findViewById(R.id.kind_listview); + listView.setDivider(null); + listView.setDividerHeight(30); + fruitActivity activity = (fruitActivity) getActivity(); + List fruitKinds = activity.getfuritKinds(); + fruitKindAdapter fruitKindAdapter = new fruitKindAdapter(fruitKinds, getActivity()); + listView.setAdapter(fruitKindAdapter); + + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + fruitActivity activity=(fruitActivity)getActivity(); + List list = activity.getFruitContents(); + fruitContentFragment fragment = (fruitContentFragment)activity.getSupportFragmentManager().findFragmentById(R.id.fruit); + if(i<8) + fragment.show(list.get(i)); + if(i!=selected_item){ +// Log.i("adapterview",adapterView+""); + int start = adapterView.getFirstVisiblePosition(); + View item = adapterView.getChildAt(selected_item- start); + //如果上一个被选中的item可见就将背景变为白色 + if(item!=null) + item.setBackgroundResource(R.color.white); + + //不在视野范围 + //设置选中item背景为灰 + view.setBackgroundResource(R.color.gray); + selected_item=i; + + //当数据发生变化notify,寻找局部刷新 + } + } + }); + return view; + } + public int getSelected_item(){ + return selected_item; + } + +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/fragment/navigationCartFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/navigationCartFragment.java new file mode 100644 index 0000000..722467c --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/navigationCartFragment.java @@ -0,0 +1,33 @@ +package com.example.test.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import com.example.test.R; +import com.example.test.activity.homeActivity; + +public class navigationCartFragment extends Fragment { + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.navigation_cart, container, false); + Button button = view.findViewById(R.id.navigation_cart_shopping); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + homeActivity activity = (homeActivity)getActivity(); + activity.initFragment(new navigationGoodFragment()); + } + }); + return view; + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/fragment/navigationGoodFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/navigationGoodFragment.java new file mode 100644 index 0000000..dfc17cf --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/navigationGoodFragment.java @@ -0,0 +1,238 @@ +package com.example.test.fragment; + +import android.graphics.Bitmap; +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.os.Handler; +import android.os.Message; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.GridView; +import android.widget.Spinner; + +import com.example.test.R; +import com.example.test.activity.homeActivity; +import com.example.test.adapter.homeGoodsFruitAdapter; +import com.example.test.adapter.spinnerAdapter; +import com.example.test.entity.product; +import com.example.test.netrequest.productOkHttp; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.BitSet; +import java.util.List; +import java.util.Objects; + +import okhttp3.OkHttpClient; + +public class navigationGoodFragment extends Fragment { + private int imgs[]; + private List bitmapsList = new ArrayList<>(); + private String names[]; + private double prices[]; + private homeActivity activity; + private View view; + private Handler handler; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + view = inflater.inflate(R.layout.navigation_good, container, false); + activity = (homeActivity) getActivity(); + handler = activity.getHandler(); + Thread thread = new Thread(runnable); + thread.start(); +// initData(); +// initView(); + return view; + } + + public void initView() { + GridView goodGridview = (GridView) view.findViewById(R.id.navigation_good_gridview); + homeGoodsFruitAdapter adapter = new homeGoodsFruitAdapter(bitmapsList, names, prices, activity); + goodGridview.setAdapter(adapter); + Spinner spinner = (Spinner) view.findViewById(R.id.navigation_good_spinner); + spinnerAdapter spinnerAdapter = new spinnerAdapter(new int[]{R.drawable.all, R.drawable.time, R.drawable.sale, R.drawable.price}, + new String[]{"全部商品", "按上市时间排序", "按销量排序", "按价格排序"}, activity); + spinner.setAdapter(spinnerAdapter); +// spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { +// @Override +// public void onItemSelected(AdapterView adapterView, View view, int i, long l) { +// switch (i) { +// case 0: +// Thread thread1 = new Thread(runnable1); +// thread1.start(); +// break; +// case 1: +// Thread thread2 = new Thread(runnable2); +// thread2.start(); +// break; +// case 2: +//// 暂时不支持 +// break; +// case 3: +// Thread thread4 = new Thread(runnable4); +// thread4.start(); +// break; +// } +// } +// +// @Override +// public void onNothingSelected(AdapterView adapterView) { +// +// } +// }); + spinner.setDropDownHorizontalOffset(0); + spinner.setDropDownVerticalOffset(30); + } + + + public void handleData(List list, productOkHttp http) throws IOException { + List namesList = new ArrayList<>(); + List pricesList = new ArrayList<>(); + if (list != null) { + for (product p : list) { + namesList.add(p.getName()); + pricesList.add(p.getPrice()); + bitmapsList.add(http.getImg(p.getImgUrl())); + } + names = namesList.toArray(new String[0]); + prices = pricesList.stream().mapToDouble(Double::doubleValue).toArray(); +// bitmaps = bitmapsList.toArray(new Bitmap[0]); + Message msg = new Message(); + msg.what = activity.Good; + handler.sendMessage(msg); + } else { + Message msg = new Message(); + msg.what = 0; + handler.sendMessage(msg); + } + return; + } + + protected void initData() { + imgs = activity.getImgs(); + names = activity.getNames(); + prices = activity.getPrices(); + } + + Runnable runnable = new Runnable() { + @Override + public void run() { + productOkHttp http = new productOkHttp(); + try { + List products = http.getProduct(); + List namesList = new ArrayList<>(); + List pricesList = new ArrayList<>(); + if (products != null) { + for (product p : products) { + namesList.add(p.getName()); + pricesList.add(p.getPrice()); + bitmapsList.add(http.getImg(p.getImgUrl())); + } + names = namesList.toArray(new String[0]); + prices = pricesList.stream().mapToDouble(Double::doubleValue).toArray(); +// bitmaps = bitmapsList.toArray(new Bitmap[0]); + Message msg = new Message(); + msg.what = activity.Good; + handler.sendMessage(msg); + } else { + Message msg = new Message(); + msg.what = 0; + handler.sendMessage(msg); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }; + + Runnable runnable1 = new Runnable() { + @Override + public void run() { + productOkHttp http = new productOkHttp(); + try { + List products = http.getProduct(); + List namesList = new ArrayList<>(); + List pricesList = new ArrayList<>(); + if (products != null) { + for (product p : products) { + namesList.add(p.getName()); + pricesList.add(p.getPrice()); + bitmapsList.add(http.getImg(p.getImgUrl())); + } + names = namesList.toArray(new String[0]); + prices = pricesList.stream().mapToDouble(Double::doubleValue).toArray(); +// bitmaps = bitmapsList.toArray(new Bitmap[0]); + Message msg = new Message(); + msg.what = activity.Good; + handler.sendMessage(msg); + } else { + Message msg = new Message(); + msg.what = 0; + handler.sendMessage(msg); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }; + Runnable runnable2 = new Runnable() { + @Override + public void run() { + productOkHttp productOkHttp = new productOkHttp(); + try { + List products = productOkHttp.getProductOrderByTime(); + List namesList = new ArrayList<>(); + List pricesList = new ArrayList<>(); + if (products != null) { + for (product p : products) { + namesList.add(p.getName()); + pricesList.add(p.getPrice()); + bitmapsList.add(productOkHttp.getImg(p.getImgUrl())); + } + names = namesList.toArray(new String[0]); + prices = pricesList.stream().mapToDouble(Double::doubleValue).toArray(); +// bitmaps = bitmapsList.toArray(new Bitmap[0]); + Message msg = new Message(); + msg.what = activity.Good; + handler.sendMessage(msg); + } else { + Message msg = new Message(); + msg.what = 0; + handler.sendMessage(msg); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + }; + +// Runnable runnable3 = new Runnable() { +// @Override +// public void run() { +// +// } +// }; + + + // 价格排序 + Runnable runnable4 = new Runnable() { + @Override + public void run() { + productOkHttp productOkHttp = new productOkHttp(); + try { + List products = productOkHttp.getProductOrderByPrice(); + handleData(products, productOkHttp); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }; +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/fragment/navigationHomeFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/navigationHomeFragment.java new file mode 100644 index 0000000..d35f885 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/navigationHomeFragment.java @@ -0,0 +1,106 @@ +package com.example.test.fragment; + +import android.graphics.Bitmap; +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; + +import com.example.test.R; +import com.example.test.activity.homeActivity; +import com.example.test.adapter.homeFruitKindAdapter; +import com.example.test.adapter.homeGoodsFruitAdapter; +import com.example.test.entity.product; +import com.example.test.netrequest.productOkHttp; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class navigationHomeFragment extends Fragment { + private String names[] = {}; + private int imgs[] = {}; + private double prices[] = {}; + private List bitmapsList = new ArrayList<>(); + private homeActivity activity; + private View view; + private Handler handler; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + Thread thread = new Thread(runnable); + thread.start(); + view = inflater.inflate(R.layout.navigation_home, container, false); + activity =(homeActivity)getActivity(); + handler = activity.getHandler(); + //initData(); +// init(view); + return view; + + } + + private void initData() { + names = activity.getNames(); + imgs = activity.getImgs(); + prices = activity.getPrices(); + } + + public void init() { + //初始化商品种类 + GridView kindGridview = (GridView)view.findViewById(R.id.fruit_kind_gridview); +// homeFruitKindAdapter kindAdapter = new homeFruitKindAdapter(imgs,names,activity); + homeFruitKindAdapter kindAdapter = new homeFruitKindAdapter(bitmapsList,names,activity); + kindGridview.setAdapter(kindAdapter); + + + //初始化热门商品下的水果 + GridView fruitGridview = (GridView) view.findViewById(R.id.home_goods_fruit_gridview); +// homeGoodsFruitAdapter fruitAdapter = new homeGoodsFruitAdapter(imgs,names,prices,activity); + homeGoodsFruitAdapter fruitAdapter = new homeGoodsFruitAdapter(bitmapsList,names,prices,activity); + fruitGridview.setAdapter(fruitAdapter); + + } + + Runnable runnable = new Runnable() { + @Override + public void run() { + int index = 0; + productOkHttp http = new productOkHttp(); + try { + List products = http.getProduct(); + List namesList = new ArrayList<>(); + List pricesList = new ArrayList<>(); + if(products!=null){ + for (product p : products) { + namesList.add(p.getName()); + pricesList.add(p.getPrice()); + bitmapsList.add(http.getImg(p.getImgUrl())); + } + names = namesList.toArray(new String[0]); + prices = pricesList.stream().mapToDouble(Double::doubleValue).toArray(); +// bitmaps = bitmapsList.toArray(new Bitmap[0]); + Message msg = new Message(); + msg.what = activity.Home; + handler.sendMessage(msg); + }else + { + Message msg = new Message(); + msg.what = 0; + handler.sendMessage(msg); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }; +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/fragment/navigationPersonFragment.java b/orange_android/app/src/main/java/com/example/test/fragment/navigationPersonFragment.java new file mode 100644 index 0000000..0a128a6 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/fragment/navigationPersonFragment.java @@ -0,0 +1,41 @@ +package com.example.test.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.example.test.R; +import com.example.test.activity.homeActivity; + + +public class navigationPersonFragment extends Fragment { + + private TextView tvName; + private TextView tvSex; + private TextView tvCity; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.content_user, container, false); + homeActivity activity = (homeActivity)getActivity(); + Bundle bundle = activity.getBundle(); + String username = bundle.getString("username"); + String sex = bundle.getString("sex"); + String city = bundle.getString("city"); + tvName = view.findViewById(R.id.user_username); + tvSex = view.findViewById(R.id.user_sex); + tvCity = view.findViewById(R.id.user_city); + tvName.setText("用户名:"+username); + tvSex.setText("性别:"+sex); + tvCity.setText("城市:"+city); + return view; + + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/java/com/example/test/netrequest/messageOkHttp.java b/orange_android/app/src/main/java/com/example/test/netrequest/messageOkHttp.java new file mode 100644 index 0000000..148e496 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/netrequest/messageOkHttp.java @@ -0,0 +1,32 @@ +package com.example.test.netrequest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.test.entity.message; + +import java.io.IOException; + +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +public class messageOkHttp { + public message getMessage() throws IOException { +// 获取消息 + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/message/consumeMessage") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + message data = JSON.parseObject(jsonObject.getString("data"), message.class); + +// 将获取到的消息设为已用 + Request comsume = new Request.Builder() + .url("http://192.168.43.226:8081/orange/message/updateMessage") + .build(); + Response execute = okHttpClient.newCall(comsume).execute(); + return data; + } +} diff --git a/orange_android/app/src/main/java/com/example/test/netrequest/productOkHttp.java b/orange_android/app/src/main/java/com/example/test/netrequest/productOkHttp.java new file mode 100644 index 0000000..c07308b --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/netrequest/productOkHttp.java @@ -0,0 +1,99 @@ +package com.example.test.netrequest; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.example.test.entity.product; + +import java.io.IOException; +import java.util.List; +import java.util.Objects; + +import okhttp3.Call; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class productOkHttp { + + public Bitmap getImg(String imgUrl) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url(imgUrl) +// .addHeader("Connection", "keep-alive") + .build(); + Response response = okHttpClient.newCall(request).execute(); + byte[] bytes = Objects.requireNonNull(response.body()).bytes(); + Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + response.body().close(); + return bitmap; + + } + //获取商品 + public List getProduct() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/product/search") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + String data = jsonObject.getString("data"); + List products = JSON.parseObject(data, new TypeReference>() { + }); + response.body().close(); + return products; + } + + //按时间排序 + public List getProductOrderByTime() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/product/time") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + String data = jsonObject.getString("data"); + List products = JSON.parseObject(data, new TypeReference>() { + }); + return products; + } +// 价格排序 + public List getProductOrderByPrice() throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/product/price") + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject jsonObject = JSON.parseObject(response.body().string()); + String data = jsonObject.getString("data"); + List products = JSON.parseObject(data, new TypeReference>() { + }); + return products; + } + +// 上传图片 + public boolean uploadImg(byte[] bytes) throws IOException { + OkHttpClient client = new OkHttpClient(); + RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM) + .addFormDataPart("file", "baixiangguo.png", RequestBody.create(bytes)).build(); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/product/uploadCover") + .post(requestBody) + .build(); + Response response = client.newCall(request).execute(); + Log.i("response", response.body().toString()); + if (response.isSuccessful()) { + return true; + }else { + return false; + } + } + + +} diff --git a/orange_android/app/src/main/java/com/example/test/netrequest/userOkHttp.java b/orange_android/app/src/main/java/com/example/test/netrequest/userOkHttp.java new file mode 100644 index 0000000..de213a2 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/netrequest/userOkHttp.java @@ -0,0 +1,48 @@ +package com.example.test.netrequest; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.example.test.entity.user; + +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class userOkHttp { + public userOkHttp() { + } + + public user login(user u) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + String JSONString = JSONObject.toJSONString(u); + MediaType type = MediaType.parse("application/json;charset=utf-8"); + RequestBody requestBody = RequestBody.create(JSONString, type); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/user/login") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject result = JSON.parseObject(response.body().string()); + JSONObject data = result.getJSONObject("data"); + user user = JSON.toJavaObject(data, user.class); + return user; + } + + public boolean register(user u) throws IOException { + OkHttpClient okHttpClient = new OkHttpClient(); + String jsonString = JSONObject.toJSONString(u); + MediaType type = MediaType.parse("application/json;charset=utf-8"); + RequestBody requestBody = RequestBody.create(jsonString, type); + Request request = new Request.Builder() + .url("http://192.168.43.226:8081/orange/user/register") + .post(requestBody) + .build(); + Response response = okHttpClient.newCall(request).execute(); + JSONObject result = JSON.parseObject(response.body().string()); + return result.getBoolean("flag"); + } +} diff --git a/orange_android/app/src/main/java/com/example/test/service/MessageService.java b/orange_android/app/src/main/java/com/example/test/service/MessageService.java new file mode 100644 index 0000000..3b1c930 --- /dev/null +++ b/orange_android/app/src/main/java/com/example/test/service/MessageService.java @@ -0,0 +1,106 @@ +package com.example.test.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.test.R; +import com.example.test.entity.message; +import com.example.test.netrequest.messageOkHttp; + +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 MessageService 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” + */ + Log.i("start service","enter"); + messageOkHttp http = new messageOkHttp(); + message msg; + try { + msg = http.getMessage(); + if (Objects.nonNull(msg)) { + Log.i("orangeMessage", "run: " + msg.getContent() ); + NotificationChannel channel = new NotificationChannel("channel", "通知", NotificationManager.IMPORTANCE_HIGH); + manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + manager.createNotificationChannel(channel); + builder = new NotificationCompat.Builder(MessageService.this,"channel"); + Date date = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + builder.setContentTitle("来自橙一色的系统通知消息"); + builder.setSmallIcon(R.drawable.chengzi); + builder.setChannelId("channel"); + builder.setContentText(msg.getContent()); + builder.setAutoCancel(true); + builder.setDefaults(Notification.DEFAULT_ALL); + Notification notification = builder.build(); + manager.notify(1, notification); + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } +} \ No newline at end of file diff --git a/orange_android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/orange_android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/orange_android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/res/drawable/address.png b/orange_android/app/src/main/res/drawable/address.png new file mode 100644 index 0000000..7318be0 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/address.png differ diff --git a/orange_android/app/src/main/res/drawable/all.png b/orange_android/app/src/main/res/drawable/all.png new file mode 100644 index 0000000..1fabb14 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/all.png differ diff --git a/orange_android/app/src/main/res/drawable/apple.jpg b/orange_android/app/src/main/res/drawable/apple.jpg new file mode 100644 index 0000000..5f7a431 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/apple.jpg differ diff --git a/orange_android/app/src/main/res/drawable/apple1.jpg b/orange_android/app/src/main/res/drawable/apple1.jpg new file mode 100644 index 0000000..adcb63f Binary files /dev/null and b/orange_android/app/src/main/res/drawable/apple1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/arrow_down.png b/orange_android/app/src/main/res/drawable/arrow_down.png new file mode 100644 index 0000000..6d95bb5 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/arrow_down.png differ diff --git a/orange_android/app/src/main/res/drawable/arrow_right.png b/orange_android/app/src/main/res/drawable/arrow_right.png new file mode 100644 index 0000000..84ded85 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/arrow_right.png differ diff --git a/orange_android/app/src/main/res/drawable/banana.jpg b/orange_android/app/src/main/res/drawable/banana.jpg new file mode 100644 index 0000000..5c5c801 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/banana.jpg differ diff --git a/orange_android/app/src/main/res/drawable/button_login.xml b/orange_android/app/src/main/res/drawable/button_login.xml new file mode 100644 index 0000000..d093f1b --- /dev/null +++ b/orange_android/app/src/main/res/drawable/button_login.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/res/drawable/button_register.xml b/orange_android/app/src/main/res/drawable/button_register.xml new file mode 100644 index 0000000..3eb0673 --- /dev/null +++ b/orange_android/app/src/main/res/drawable/button_register.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/res/drawable/carambola.jpg b/orange_android/app/src/main/res/drawable/carambola.jpg new file mode 100644 index 0000000..dfdbaf1 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/carambola.jpg differ diff --git a/orange_android/app/src/main/res/drawable/cart.png b/orange_android/app/src/main/res/drawable/cart.png new file mode 100644 index 0000000..96c1cfd Binary files /dev/null and b/orange_android/app/src/main/res/drawable/cart.png differ diff --git a/orange_android/app/src/main/res/drawable/chengzi.png b/orange_android/app/src/main/res/drawable/chengzi.png new file mode 100644 index 0000000..fff0306 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/chengzi.png differ diff --git a/orange_android/app/src/main/res/drawable/city.png b/orange_android/app/src/main/res/drawable/city.png new file mode 100644 index 0000000..790fb2b Binary files /dev/null and b/orange_android/app/src/main/res/drawable/city.png differ diff --git a/orange_android/app/src/main/res/drawable/coconut.jpg b/orange_android/app/src/main/res/drawable/coconut.jpg new file mode 100644 index 0000000..1b0cb32 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/coconut.jpg differ diff --git a/orange_android/app/src/main/res/drawable/dog.png b/orange_android/app/src/main/res/drawable/dog.png new file mode 100644 index 0000000..0d3bb2a Binary files /dev/null and b/orange_android/app/src/main/res/drawable/dog.png differ diff --git a/orange_android/app/src/main/res/drawable/fresh.png b/orange_android/app/src/main/res/drawable/fresh.png new file mode 100644 index 0000000..4ab4c93 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/fresh.png differ diff --git a/orange_android/app/src/main/res/drawable/grape.jpg b/orange_android/app/src/main/res/drawable/grape.jpg new file mode 100644 index 0000000..226c2aa Binary files /dev/null and b/orange_android/app/src/main/res/drawable/grape.jpg differ diff --git a/orange_android/app/src/main/res/drawable/grape1.jpg b/orange_android/app/src/main/res/drawable/grape1.jpg new file mode 100644 index 0000000..ee9a568 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/grape1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/grapefruit.jpg b/orange_android/app/src/main/res/drawable/grapefruit.jpg new file mode 100644 index 0000000..08d15ba Binary files /dev/null and b/orange_android/app/src/main/res/drawable/grapefruit.jpg differ diff --git a/orange_android/app/src/main/res/drawable/grapefruit1.jpg b/orange_android/app/src/main/res/drawable/grapefruit1.jpg new file mode 100644 index 0000000..5baab34 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/grapefruit1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/grapefruit2.jpg b/orange_android/app/src/main/res/drawable/grapefruit2.jpg new file mode 100644 index 0000000..596e1e1 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/grapefruit2.jpg differ diff --git a/orange_android/app/src/main/res/drawable/greengrape.jpg b/orange_android/app/src/main/res/drawable/greengrape.jpg new file mode 100644 index 0000000..a1df67f Binary files /dev/null and b/orange_android/app/src/main/res/drawable/greengrape.jpg differ diff --git a/orange_android/app/src/main/res/drawable/hamimelon.jpg b/orange_android/app/src/main/res/drawable/hamimelon.jpg new file mode 100644 index 0000000..ba789c0 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/hamimelon.jpg differ diff --git a/orange_android/app/src/main/res/drawable/hamimelon1.jpg b/orange_android/app/src/main/res/drawable/hamimelon1.jpg new file mode 100644 index 0000000..c7ebc14 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/hamimelon1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_apple.png b/orange_android/app/src/main/res/drawable/home_kind_apple.png new file mode 100644 index 0000000..6f4be2c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_apple.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_grapefruit.png b/orange_android/app/src/main/res/drawable/home_kind_grapefruit.png new file mode 100644 index 0000000..65ac424 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_grapefruit.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_lemon.png b/orange_android/app/src/main/res/drawable/home_kind_lemon.png new file mode 100644 index 0000000..ce4bc3c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_lemon.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_mango.png b/orange_android/app/src/main/res/drawable/home_kind_mango.png new file mode 100644 index 0000000..bce702d Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_mango.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_orange.png b/orange_android/app/src/main/res/drawable/home_kind_orange.png new file mode 100644 index 0000000..1d7c015 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_orange.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_orange1.png b/orange_android/app/src/main/res/drawable/home_kind_orange1.png new file mode 100644 index 0000000..1c9bb02 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_orange1.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_pear.png b/orange_android/app/src/main/res/drawable/home_kind_pear.png new file mode 100644 index 0000000..99f0702 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_pear.png differ diff --git a/orange_android/app/src/main/res/drawable/home_kind_watermelon.png b/orange_android/app/src/main/res/drawable/home_kind_watermelon.png new file mode 100644 index 0000000..57c3a0d Binary files /dev/null and b/orange_android/app/src/main/res/drawable/home_kind_watermelon.png differ diff --git a/orange_android/app/src/main/res/drawable/hot.png b/orange_android/app/src/main/res/drawable/hot.png new file mode 100644 index 0000000..89d5cf8 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/hot.png differ diff --git a/orange_android/app/src/main/res/drawable/ic_launcher_background.xml b/orange_android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/orange_android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/orange_android/app/src/main/res/drawable/leechee.jpg b/orange_android/app/src/main/res/drawable/leechee.jpg new file mode 100644 index 0000000..413828c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/leechee.jpg differ diff --git a/orange_android/app/src/main/res/drawable/orange.png b/orange_android/app/src/main/res/drawable/orange.png new file mode 100644 index 0000000..70e8db8 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/orange.png differ diff --git a/orange_android/app/src/main/res/drawable/orange1.jpg b/orange_android/app/src/main/res/drawable/orange1.jpg new file mode 100644 index 0000000..65d181c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/orange1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/password.png b/orange_android/app/src/main/res/drawable/password.png new file mode 100644 index 0000000..1c6c4f5 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/password.png differ diff --git a/orange_android/app/src/main/res/drawable/pear.jpg b/orange_android/app/src/main/res/drawable/pear.jpg new file mode 100644 index 0000000..d8d231c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/pear.jpg differ diff --git a/orange_android/app/src/main/res/drawable/pear1.jpg b/orange_android/app/src/main/res/drawable/pear1.jpg new file mode 100644 index 0000000..5f8bab2 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/pear1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/people.png b/orange_android/app/src/main/res/drawable/people.png new file mode 100644 index 0000000..8655e29 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/people.png differ diff --git a/orange_android/app/src/main/res/drawable/pineapple.jpg b/orange_android/app/src/main/res/drawable/pineapple.jpg new file mode 100644 index 0000000..2599727 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/pineapple.jpg differ diff --git a/orange_android/app/src/main/res/drawable/price.png b/orange_android/app/src/main/res/drawable/price.png new file mode 100644 index 0000000..73cb13d Binary files /dev/null and b/orange_android/app/src/main/res/drawable/price.png differ diff --git a/orange_android/app/src/main/res/drawable/purplegrape.jpg b/orange_android/app/src/main/res/drawable/purplegrape.jpg new file mode 100644 index 0000000..5ff7050 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/purplegrape.jpg differ diff --git a/orange_android/app/src/main/res/drawable/recomend.png b/orange_android/app/src/main/res/drawable/recomend.png new file mode 100644 index 0000000..faf215e Binary files /dev/null and b/orange_android/app/src/main/res/drawable/recomend.png differ diff --git a/orange_android/app/src/main/res/drawable/sale.png b/orange_android/app/src/main/res/drawable/sale.png new file mode 100644 index 0000000..5d71a07 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/sale.png differ diff --git a/orange_android/app/src/main/res/drawable/section_cart.png b/orange_android/app/src/main/res/drawable/section_cart.png new file mode 100644 index 0000000..44dabfa Binary files /dev/null and b/orange_android/app/src/main/res/drawable/section_cart.png differ diff --git a/orange_android/app/src/main/res/drawable/section_good.png b/orange_android/app/src/main/res/drawable/section_good.png new file mode 100644 index 0000000..6799e9c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/section_good.png differ diff --git a/orange_android/app/src/main/res/drawable/section_home.png b/orange_android/app/src/main/res/drawable/section_home.png new file mode 100644 index 0000000..c1793d6 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/section_home.png differ diff --git a/orange_android/app/src/main/res/drawable/section_mine.png b/orange_android/app/src/main/res/drawable/section_mine.png new file mode 100644 index 0000000..52c4d79 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/section_mine.png differ diff --git a/orange_android/app/src/main/res/drawable/setting.png b/orange_android/app/src/main/res/drawable/setting.png new file mode 100644 index 0000000..34c2f2f Binary files /dev/null and b/orange_android/app/src/main/res/drawable/setting.png differ diff --git a/orange_android/app/src/main/res/drawable/sex.png b/orange_android/app/src/main/res/drawable/sex.png new file mode 100644 index 0000000..acb8197 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/sex.png differ diff --git a/orange_android/app/src/main/res/drawable/shopping.png b/orange_android/app/src/main/res/drawable/shopping.png new file mode 100644 index 0000000..3cc443c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/shopping.png differ diff --git a/orange_android/app/src/main/res/drawable/small_orange.jpg b/orange_android/app/src/main/res/drawable/small_orange.jpg new file mode 100644 index 0000000..a4dad83 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/small_orange.jpg differ diff --git a/orange_android/app/src/main/res/drawable/spinner_drop_down_shape.xml b/orange_android/app/src/main/res/drawable/spinner_drop_down_shape.xml new file mode 100644 index 0000000..64306b1 --- /dev/null +++ b/orange_android/app/src/main/res/drawable/spinner_drop_down_shape.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/res/drawable/sure_apssword.png b/orange_android/app/src/main/res/drawable/sure_apssword.png new file mode 100644 index 0000000..0e7cee9 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/sure_apssword.png differ diff --git a/orange_android/app/src/main/res/drawable/time.png b/orange_android/app/src/main/res/drawable/time.png new file mode 100644 index 0000000..c49a255 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/time.png differ diff --git a/orange_android/app/src/main/res/drawable/user.png b/orange_android/app/src/main/res/drawable/user.png new file mode 100644 index 0000000..47d8362 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user.png differ diff --git a/orange_android/app/src/main/res/drawable/user_account.png b/orange_android/app/src/main/res/drawable/user_account.png new file mode 100644 index 0000000..e70142a Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user_account.png differ diff --git a/orange_android/app/src/main/res/drawable/user_general.png b/orange_android/app/src/main/res/drawable/user_general.png new file mode 100644 index 0000000..cf57947 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user_general.png differ diff --git a/orange_android/app/src/main/res/drawable/user_icon.png b/orange_android/app/src/main/res/drawable/user_icon.png new file mode 100644 index 0000000..d5309b1 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user_icon.png differ diff --git a/orange_android/app/src/main/res/drawable/user_pay.png b/orange_android/app/src/main/res/drawable/user_pay.png new file mode 100644 index 0000000..3fd6f50 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user_pay.png differ diff --git a/orange_android/app/src/main/res/drawable/user_sex.png b/orange_android/app/src/main/res/drawable/user_sex.png new file mode 100644 index 0000000..da0e318 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/user_sex.png differ diff --git a/orange_android/app/src/main/res/drawable/watermelon.jpg b/orange_android/app/src/main/res/drawable/watermelon.jpg new file mode 100644 index 0000000..6c757e7 Binary files /dev/null and b/orange_android/app/src/main/res/drawable/watermelon.jpg differ diff --git a/orange_android/app/src/main/res/drawable/watermelon1.jpg b/orange_android/app/src/main/res/drawable/watermelon1.jpg new file mode 100644 index 0000000..ec169ce Binary files /dev/null and b/orange_android/app/src/main/res/drawable/watermelon1.jpg differ diff --git a/orange_android/app/src/main/res/drawable/zomm.png b/orange_android/app/src/main/res/drawable/zomm.png new file mode 100644 index 0000000..9aff41c Binary files /dev/null and b/orange_android/app/src/main/res/drawable/zomm.png differ diff --git a/orange_android/app/src/main/res/layout/activity_fruit_fragment.xml b/orange_android/app/src/main/res/layout/activity_fruit_fragment.xml new file mode 100644 index 0000000..08ab80f --- /dev/null +++ b/orange_android/app/src/main/res/layout/activity_fruit_fragment.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/orange_android/app/src/main/res/layout/content_user.xml b/orange_android/app/src/main/res/layout/content_user.xml new file mode 100644 index 0000000..26e21a8 --- /dev/null +++ b/orange_android/app/src/main/res/layout/content_user.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +