diff --git a/.idea/misc.xml b/.idea/misc.xml index 9e439db..965af90 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,6 +3,16 @@ diff --git a/app/build.gradle b/app/build.gradle index 7f42071..7a9270f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,6 +36,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + def fragment_version = "1.4.1" // okhttp implementation('com.squareup.okhttp3:okhttp:5.0.0-alpha.7') implementation 'com.google.code.gson:gson:2.9.0' @@ -59,4 +60,8 @@ dependencies { //material3 implementation 'com.google.android.material:material:1.5.0' + //fragment + implementation "androidx.fragment:fragment:$fragment_version" + + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bf6b623..43d710f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,13 @@ tools:targetApi="31"> + android:exported="false" > + + + + + + @@ -45,12 +51,6 @@ - - - - - - diff --git a/app/src/main/java/com/android/activity/HomePageActivity.java b/app/src/main/java/com/android/activity/HomePageActivity.java index fded617..f2f5027 100644 --- a/app/src/main/java/com/android/activity/HomePageActivity.java +++ b/app/src/main/java/com/android/activity/HomePageActivity.java @@ -1,16 +1,77 @@ package com.android.activity; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; +import android.util.Log; +import android.view.MenuItem; +import android.widget.Button; import com.android.R; +import com.android.activity.fragment.HomePageFragment; +import com.android.activity.fragment.MessagePageFragment; +import com.android.activity.fragment.MyPageFragment; +import com.android.activity.fragment.ShopCarPageFragment; +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.navigation.NavigationBarView; +import com.google.android.material.navigation.NavigationView; + +public class HomePageActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener{ + + private BottomNavigationView navigation; + private FragmentTransaction fragmentTransaction; -public class HomePageActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_page); + + + navigation = findViewById(R.id.bottom_navigation); + navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED); + navigation.setSelectedItemId(R.id.item_home); + //首次加载到home活动 + //开始碎片事务 + fragmentTransaction = + getSupportFragmentManager().beginTransaction(); + fragmentTransaction.add(R.id.fragment_container,new HomePageFragment()); + //提交事务 + fragmentTransaction.commit(); + + //设置低航栏的点击事件 + navigation.setOnNavigationItemSelectedListener(this); + + + } + + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + //开始碎片事务 + fragmentTransaction = + getSupportFragmentManager().beginTransaction(); + switch (item.getItemId()) { + case R.id.item_message: + fragmentTransaction.replace(R.id.fragment_container, new MessagePageFragment()); + //提交事务 + + fragmentTransaction.commit(); + break; + case R.id.item_my: + fragmentTransaction.replace(R.id.fragment_container, new MyPageFragment()); + fragmentTransaction.commit(); + break; + case R.id.item_shop: + fragmentTransaction.replace(R.id.fragment_container, new ShopCarPageFragment()); + fragmentTransaction.commit(); + break; + case R.id.item_home: + fragmentTransaction.replace(R.id.fragment_container, new HomePageFragment()); + fragmentTransaction.commit(); + break; + } + return true; } } \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java new file mode 100644 index 0000000..96c9d35 --- /dev/null +++ b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java @@ -0,0 +1,45 @@ +package com.android.activity.fragment; + +import android.content.Context; +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.R; + +/** + * A simple {@link Fragment} subclass. + *com.android.activity.fragment.HomePageFragment + * create an instance of this fragment. + */ +public class HomePageFragment extends Fragment { + private Context context = null; + + + + public HomePageFragment() { + // Required empty public constructor + } + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + context = getActivity(); + + View rootView = inflater.inflate(R.layout.fragment_home_page, + container, false); + return rootView; + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/MessagePageFragment.java b/app/src/main/java/com/android/activity/fragment/MessagePageFragment.java new file mode 100644 index 0000000..31b9656 --- /dev/null +++ b/app/src/main/java/com/android/activity/fragment/MessagePageFragment.java @@ -0,0 +1,66 @@ +package com.android.activity.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link MessagePageFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class MessagePageFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public MessagePageFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment MessagePageFragment. + */ + // TODO: Rename and change types and number of parameters + public static MessagePageFragment newInstance(String param1, String param2) { + MessagePageFragment fragment = new MessagePageFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_message_page, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/MyPageFragment.java b/app/src/main/java/com/android/activity/fragment/MyPageFragment.java new file mode 100644 index 0000000..ff87668 --- /dev/null +++ b/app/src/main/java/com/android/activity/fragment/MyPageFragment.java @@ -0,0 +1,66 @@ +package com.android.activity.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link MyPageFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class MyPageFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public MyPageFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment MyPageFragment. + */ + // TODO: Rename and change types and number of parameters + public static MyPageFragment newInstance(String param1, String param2) { + MyPageFragment fragment = new MyPageFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_my_page, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/ShopCarPageFragment.java b/app/src/main/java/com/android/activity/fragment/ShopCarPageFragment.java new file mode 100644 index 0000000..0bda762 --- /dev/null +++ b/app/src/main/java/com/android/activity/fragment/ShopCarPageFragment.java @@ -0,0 +1,66 @@ +package com.android.activity.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.android.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link ShopCarPageFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class ShopCarPageFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public ShopCarPageFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment ShopPageFragment. + */ + // TODO: Rename and change types and number of parameters + public static ShopCarPageFragment newInstance(String param1, String param2) { + ShopCarPageFragment fragment = new ShopCarPageFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_shop_page, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/utils/watcher/MyWatcher.java b/app/src/main/java/com/android/utils/watcher/MyWatcher.java index bd4effa..d89910d 100644 --- a/app/src/main/java/com/android/utils/watcher/MyWatcher.java +++ b/app/src/main/java/com/android/utils/watcher/MyWatcher.java @@ -34,6 +34,9 @@ public class MyWatcher implements TextWatcher { //注册按钮 registerButton.setOnClickListener(loginActivity); } + else { + getVerificationCode.setEnabled(false); + } } diff --git a/app/src/main/res/drawable/baseline_account_circle_18.xml b/app/src/main/res/drawable/baseline_account_circle_18.xml new file mode 100644 index 0000000..80d8add --- /dev/null +++ b/app/src/main/res/drawable/baseline_account_circle_18.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_account_circle_20.xml b/app/src/main/res/drawable/baseline_account_circle_20.xml new file mode 100644 index 0000000..1655e81 --- /dev/null +++ b/app/src/main/res/drawable/baseline_account_circle_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_account_circle_24.xml b/app/src/main/res/drawable/baseline_account_circle_24.xml new file mode 100644 index 0000000..6476320 --- /dev/null +++ b/app/src/main/res/drawable/baseline_account_circle_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_explore_24.xml b/app/src/main/res/drawable/baseline_explore_24.xml new file mode 100644 index 0000000..0ac168a --- /dev/null +++ b/app/src/main/res/drawable/baseline_explore_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_favorite_24.xml b/app/src/main/res/drawable/baseline_favorite_24.xml new file mode 100644 index 0000000..52d4d9b --- /dev/null +++ b/app/src/main/res/drawable/baseline_favorite_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_feedback_24.xml b/app/src/main/res/drawable/baseline_feedback_24.xml new file mode 100644 index 0000000..170a74b --- /dev/null +++ b/app/src/main/res/drawable/baseline_feedback_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_home_20.xml b/app/src/main/res/drawable/baseline_home_20.xml new file mode 100644 index 0000000..a6bb5c9 --- /dev/null +++ b/app/src/main/res/drawable/baseline_home_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_home_24.xml b/app/src/main/res/drawable/baseline_home_24.xml new file mode 100644 index 0000000..3a4c7da --- /dev/null +++ b/app/src/main/res/drawable/baseline_home_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_search_20.xml b/app/src/main/res/drawable/baseline_search_20.xml new file mode 100644 index 0000000..cba96bc --- /dev/null +++ b/app/src/main/res/drawable/baseline_search_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_search_24.xml b/app/src/main/res/drawable/baseline_search_24.xml new file mode 100644 index 0000000..07b76d6 --- /dev/null +++ b/app/src/main/res/drawable/baseline_search_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_shopping_cart_24.xml b/app/src/main/res/drawable/baseline_shopping_cart_24.xml new file mode 100644 index 0000000..cf0dcc8 --- /dev/null +++ b/app/src/main/res/drawable/baseline_shopping_cart_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_home_page.xml b/app/src/main/res/layout/activity_home_page.xml index 9a15f40..cc8fb18 100644 --- a/app/src/main/res/layout/activity_home_page.xml +++ b/app/src/main/res/layout/activity_home_page.xml @@ -1,9 +1,32 @@ - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 9971116..060c2c0 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -4,43 +4,81 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="8dp" tools:context=".activity.LoginActivity"> + + + + - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/login_ic_layout"> + + + + - + + + android:hint="验证码"> + + +