diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 53bc04f..6a8237b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.MusicApp"
tools:targetApi="31">
+
@@ -21,7 +24,7 @@
android:name=".ui.activity.MainActivity"
android:exported="false" />
diff --git a/app/src/main/java/com/hi/music/player/adapter/AHomeViewPagerAdapter.java b/app/src/main/java/com/hi/music/player/adapter/AHomeViewPagerAdapter.java
new file mode 100644
index 0000000..545473c
--- /dev/null
+++ b/app/src/main/java/com/hi/music/player/adapter/AHomeViewPagerAdapter.java
@@ -0,0 +1,33 @@
+package com.hi.music.player.adapter;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+
+import com.hi.music.player.ui.fragmnt.AHomeFragment;
+import com.hi.music.player.ui.fragmnt.AImportFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AHomeViewPagerAdapter extends FragmentStateAdapter {
+
+ private final List fragments = new ArrayList<>();
+ public AHomeViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) {
+ super(fragmentActivity);
+ fragments.add(new AHomeFragment());
+ fragments.add(new AImportFragment());
+ }
+
+ @NonNull
+ @Override
+ public Fragment createFragment(int position) {
+ return fragments.get(position);
+ }
+
+ @Override
+ public int getItemCount() {
+ return fragments.size();
+ }
+}
diff --git a/app/src/main/java/com/hi/music/player/ui/activity/AHomeActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/AHomeActivity.java
new file mode 100644
index 0000000..375bedc
--- /dev/null
+++ b/app/src/main/java/com/hi/music/player/ui/activity/AHomeActivity.java
@@ -0,0 +1,99 @@
+package com.hi.music.player.ui.activity;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+
+import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
+import com.hi.music.player.R;
+import com.hi.music.player.adapter.AHomeViewPagerAdapter;
+import com.hi.music.player.databinding.ActivityAhomeBinding;
+import com.hi.music.player.databinding.HomeTabCustomBinding;
+
+public class AHomeActivity extends BaseActivity {
+
+ // 图标数组定义为类成员,避免重复
+ private final int[] defaultIcons = {
+ R.drawable.home_unselect,
+ R.drawable.import_unselect,
+ };
+
+ private final int[] selectedIcons = {
+ R.drawable.home_select,
+ R.drawable.import_select,
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ }
+
+ @Override
+ protected ActivityAhomeBinding getViewBinding() {
+ return ActivityAhomeBinding.inflate(getLayoutInflater());
+ }
+
+ @Override
+ protected void onCreateInit() {
+
+ initData();
+
+ }
+
+ @Override
+ public boolean isFullScreen() {
+ return true;
+ }
+
+ @Override
+ public boolean statusBarLight() {
+ return false;
+ }
+
+ public void initData(){
+
+ AHomeViewPagerAdapter adapter = new AHomeViewPagerAdapter(this);
+ vb.homeViewpager.setAdapter(adapter);
+
+ // 设置TabLayout的图标
+ new TabLayoutMediator(vb.homeTabLayout, vb.homeViewpager, (tab, position) -> {
+ HomeTabCustomBinding tabBinding = HomeTabCustomBinding.inflate(LayoutInflater.from(this));
+ tab.setCustomView(tabBinding.getRoot());
+ tabBinding.homeIcon.setImageResource(defaultIcons[position]); // 默认图标
+ }).attach();
+
+ // 添加Tab选中与未选中事件监听器
+ vb.homeTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ updateTabIcon(tab, true); // 更新选中的图标
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ updateTabIcon(tab, false); // 恢复未选中图标
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+ // 可选:重复选择Tab时的操作
+ }
+ });
+
+ // 设置默认选中第一个
+ TabLayout.Tab firstTab = vb.homeTabLayout.getTabAt(0);
+ if (firstTab != null) {
+ firstTab.select();
+ updateTabIcon(firstTab, true); // 设置选中的图标
+ }
+ }
+
+ private void updateTabIcon(TabLayout.Tab tab, boolean isSelected) {
+ HomeTabCustomBinding tabBinding = HomeTabCustomBinding.bind(tab.getCustomView());
+ int position = tab.getPosition();
+ tabBinding.homeIcon.setImageResource(isSelected ? selectedIcons[position] : defaultIcons[position]);
+ }
+
+ }
+
diff --git a/app/src/main/java/com/hi/music/player/ui/activity/AsplashActivity.java b/app/src/main/java/com/hi/music/player/ui/activity/AsplashActivity.java
index 87ff526..0b975e5 100644
--- a/app/src/main/java/com/hi/music/player/ui/activity/AsplashActivity.java
+++ b/app/src/main/java/com/hi/music/player/ui/activity/AsplashActivity.java
@@ -5,7 +5,7 @@ import android.os.CountDownTimer;
import com.hi.music.player.databinding.ActivityAsplashBinding;
-public class AsplashActivity extends BaseActivity {
+public class ASplashActivity extends BaseActivity {
private static final int SPLASH_TIME_OUT = 1500;
private CountDownTimer countDownTimer;
@@ -48,7 +48,7 @@ public class AsplashActivity extends BaseActivity {
@Override
public void onFinish() {
vb.progressBar.setProgress(100);
- Intent intent = new Intent(AsplashActivity.this, HomeActivity.class);
+ Intent intent = new Intent(ASplashActivity.this, AHomeActivity.class);
startActivity(intent);
finish();
}
diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/AHomeFragment.java b/app/src/main/java/com/hi/music/player/ui/fragmnt/AHomeFragment.java
new file mode 100644
index 0000000..bdc0001
--- /dev/null
+++ b/app/src/main/java/com/hi/music/player/ui/fragmnt/AHomeFragment.java
@@ -0,0 +1,66 @@
+package com.hi.music.player.ui.fragmnt;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.hi.music.player.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link AHomeFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class AHomeFragment 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 AHomeFragment() {
+ // 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 AHomeFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static AHomeFragment newInstance(String param1, String param2) {
+ AHomeFragment fragment = new AHomeFragment();
+ 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_a_home, container, false);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/hi/music/player/ui/fragmnt/AImportFragment.java b/app/src/main/java/com/hi/music/player/ui/fragmnt/AImportFragment.java
new file mode 100644
index 0000000..a89cb02
--- /dev/null
+++ b/app/src/main/java/com/hi/music/player/ui/fragmnt/AImportFragment.java
@@ -0,0 +1,66 @@
+package com.hi.music.player.ui.fragmnt;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.hi.music.player.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link AImportFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class AImportFragment 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 AImportFragment() {
+ // 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 AImportFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static AImportFragment newInstance(String param1, String param2) {
+ AImportFragment fragment = new AImportFragment();
+ 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_a_import, container, false);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/a_rounded_rectangle_tab_layout.xml b/app/src/main/res/drawable/a_rounded_rectangle_tab_layout.xml
new file mode 100644
index 0000000..dcc6e4f
--- /dev/null
+++ b/app/src/main/res/drawable/a_rounded_rectangle_tab_layout.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/circular_progress_drawable.xml b/app/src/main/res/drawable/circular_progress_drawable.xml
new file mode 100644
index 0000000..7ae0e50
--- /dev/null
+++ b/app/src/main/res/drawable/circular_progress_drawable.xml
@@ -0,0 +1,18 @@
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/clock.xml b/app/src/main/res/drawable/clock.xml
new file mode 100644
index 0000000..324cc10
--- /dev/null
+++ b/app/src/main/res/drawable/clock.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/import_select.xml b/app/src/main/res/drawable/import_select.xml
new file mode 100644
index 0000000..b546665
--- /dev/null
+++ b/app/src/main/res/drawable/import_select.xml
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/import_unselect.xml b/app/src/main/res/drawable/import_unselect.xml
new file mode 100644
index 0000000..656e4e1
--- /dev/null
+++ b/app/src/main/res/drawable/import_unselect.xml
@@ -0,0 +1,15 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/pause.xml b/app/src/main/res/drawable/pause.xml
new file mode 100644
index 0000000..6ece7e6
--- /dev/null
+++ b/app/src/main/res/drawable/pause.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_ahome.xml b/app/src/main/res/layout/activity_ahome.xml
new file mode 100644
index 0000000..5a9d5eb
--- /dev/null
+++ b/app/src/main/res/layout/activity_ahome.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_asplash.xml b/app/src/main/res/layout/activity_asplash.xml
index f6aeb60..8649154 100644
--- a/app/src/main/res/layout/activity_asplash.xml
+++ b/app/src/main/res/layout/activity_asplash.xml
@@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
- tools:context=".ui.activity.AsplashActivity">
+ tools:context=".ui.activity.ASplashActivity">
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_a_import.xml b/app/src/main/res/layout/fragment_a_import.xml
new file mode 100644
index 0000000..c6ef680
--- /dev/null
+++ b/app/src/main/res/layout/fragment_a_import.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/cover.png b/app/src/main/res/mipmap-xxxhdpi/cover.png
new file mode 100644
index 0000000..a8fb290
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/cover.png differ