diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aa724b7
--- /dev/null
+++ b/.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/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b589d56
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
new file mode 100644
index 0000000..159ebf1
--- /dev/null
+++ b/.idea/deploymentTargetSelector.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..0897082
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..8978d23
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
new file mode 100644
index 0000000..5eedab0
--- /dev/null
+++ b/app/build.gradle.kts
@@ -0,0 +1,41 @@
+plugins {
+ alias(libs.plugins.android.application)
+}
+
+android {
+ namespace = "com.example.goukumusic"
+ compileSdk = 34
+
+ defaultConfig {
+ applicationId = "com.example.goukumusic"
+ minSdk = 24
+ targetSdk = 34
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+ buildToolsVersion = "34.0.0"
+}
+
+dependencies {
+
+ implementation(libs.appcompat)
+ implementation(libs.material)
+ implementation(libs.activity)
+ implementation(libs.constraintlayout)
+ testImplementation(libs.junit)
+ androidTestImplementation(libs.ext.junit)
+ androidTestImplementation(libs.espresso.core)
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/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/app/src/androidTest/java/com/example/goukumusic/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/goukumusic/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..276c6ee
--- /dev/null
+++ b/app/src/androidTest/java/com/example/goukumusic/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package com.example.goukumusic;
+
+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.goukumusic", appContext.getPackageName());
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a7aa07e
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/goukumusic/ContentFragment.java b/app/src/main/java/com/example/goukumusic/ContentFragment.java
new file mode 100644
index 0000000..033d4fb
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/ContentFragment.java
@@ -0,0 +1,53 @@
+package com.example.goukumusic;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import org.w3c.dom.Text;
+
+
+public class ContentFragment extends Fragment {
+ private View view;
+ private TextView text1,text2;
+ private ImageView imageView;
+// public void onAttach(Activity activity){
+// super.onAttach(activity);
+// }
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){
+ // 获取布局文件
+ view = inflater.inflate(R.layout.fragment_content, container,false);
+ if (view != null){
+ init();
+ }
+ // 获取Activity中设置的文字
+ setText(((FragmentList)getActivity()).getSettingText()[0]);
+ return view;
+ }
+ private void init(){
+ text1 = (TextView) view.findViewById(R.id.show_title);
+ text2 = (TextView) view.findViewById(R.id.show_content);
+ imageView = (ImageView) view.findViewById(R.id.show_image);
+ }
+ public void setText(String[] text){
+ text1.setText(text[0]);
+ text2.setText(text[1]);
+ }
+ // 设置图片方法
+ public void setImage(int imageIndex){
+ // 获取Activity中的图片资源数组
+ int[] imageResources = ((FragmentList) getActivity()).getImageResources();
+ // 检查图片索引是否有效
+ if (imageIndex >= 0 && imageIndex < imageResources.length) {
+ // 根据图片索引设置图片资源
+ imageView.setImageResource(imageResources[imageIndex]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/goukumusic/ForgetPassword.java b/app/src/main/java/com/example/goukumusic/ForgetPassword.java
new file mode 100644
index 0000000..cf5857e
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/ForgetPassword.java
@@ -0,0 +1,55 @@
+package com.example.goukumusic;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class ForgetPassword extends AppCompatActivity {
+
+ private EditText UserName,Password,Password_again;
+ private Button Btn_return;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_forget_password);
+ setTitle("狗酷音乐新用户注册");
+ // 添加监控
+ UserName = (EditText) findViewById(R.id.username);
+ Password = (EditText) findViewById(R.id.password);
+ Password = (EditText) findViewById(R.id.password_again);
+ Button btn_forget_pwd = (Button) findViewById(R.id.btn_forget_pwd);
+ Btn_return = (Button) findViewById(R.id.btn_return);
+
+ // 设置注册按钮btn_register监听器
+ btn_forget_pwd.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent_register = new Intent(ForgetPassword.this, MainActivity.class);
+ Bundle bundle1 = new Bundle();
+ bundle1.putString("usre_name", UserName.getText().toString());
+ bundle1.putString("user_password", Password.getText().toString());
+ bundle1.putString("user_password_again",Password_again.getText().toString());
+ intent_register.putExtras(bundle1); //上传注册的参数
+ startActivity(intent_register);
+ }
+ });
+
+ // 设置返回按钮btn_return监听器
+ Btn_return.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent_return = new Intent(ForgetPassword.this, MainActivity.class);
+ startActivity(intent_return);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/goukumusic/FragmentList.java b/app/src/main/java/com/example/goukumusic/FragmentList.java
new file mode 100644
index 0000000..0922859
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/FragmentList.java
@@ -0,0 +1,79 @@
+package com.example.goukumusic;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
+public class FragmentList extends FragmentActivity {
+ // 设置标题
+ private final String[] title = {"科幻未来","玄幻小说","情感小说","励志感悟","人物传记"};
+ private final String[][] settingText = {
+ {"三体"," 作品讲述了地球人类文明和三体文明的信息交流、生死搏杀及两个文明在宇宙中的兴衰历程。\n" +
+ " 《三体》的文本叙事在“后人类”的思考上有着重大突破,构建了科学与文学的互动范式,将道德内涵引入对科技的辩证思考中。"},
+ {"斗破苍穹"," 这里是属于斗气的世界,没有花俏艳丽的魔法,有的,仅仅是繁衍到巅峰的斗气!想要知道异界的斗气在发展到巅峰之后是何种境地吗?\n" +
+ " 萧炎:三十年河东,三十年河西,莫欺少年穷!且看萧炎从今以后便一步步走向斗气大陆巅峰!"},
+ {"我的26岁女房客"," 主角昭阳寻觅理想中的天空之城,而谁又是住在那座城池里的那个女子\n" +
+ " 这是一本贴近生活的写实书,不狗血非异能不玄幻,而是酸甜苦辣五味俱全的纯粹的都市、职场、现实生活。"},
+ {"抓落叶"," 如果你也偶尔思考人生的意义,常把人间不值得挂在嘴边,深夜听着《曾经我也想过一了百了》默默流泪,那么请看看艾略特的故事。\n"},
+ {"邓小平时代"," 《邓小平时代》,是对邓小平跌宕起伏的一生以及中国惊险崎岖的改革开放之路的全景式描述。\n" +
+ " 作者对邓小平个人性格及执政风格进行了深层分析,并对中国改革开放史进行了完整而独到的阐释。"}
+ };
+
+ private Button Btn_shouye;
+
+ // 添加图片资源
+ private final int[] imageResources = {
+ R.drawable.santi,
+ R.drawable.dpcq,
+ R.drawable.nfk,
+ R.drawable.zhualuoye,
+ R.drawable.dxp
+ };
+ //获取标题数组的方法
+ public String[] getTitles() {
+ return title;
+ }
+
+ public String[][] getSettingText() {
+ return settingText;
+ }
+ public int[] getImageResources(){return imageResources;}
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_fragment_list);
+ Btn_shouye = findViewById(R.id.btn_shouye);
+
+ Btn_shouye.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // 创建一个 Intent,将其指向 Fragment_audio 页面
+ Intent intent = new Intent(FragmentList.this, LoginSuccess.class);
+ // 启动 Fragment_audio 活动页面
+ startActivity(intent);
+
+ // 关闭当前的 FragmentList 活动页面
+ finish();
+ }
+ });
+ //创建标题和内容Fragment实例
+ TitleFragment titleFragment=new TitleFragment();
+ ContentFragment contentFragment=new ContentFragment();
+ //获取事物
+ FragmentManager fragmentManager= getSupportFragmentManager();
+ FragmentTransaction transaction = fragmentManager.beginTransaction();
+ //添加Fragment
+ transaction.replace(R.id.settitle,titleFragment);
+ transaction.replace(R.id.setcontent,contentFragment);
+ //提交事物
+ transaction.commit();
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/goukumusic/Fragment_audio.java b/app/src/main/java/com/example/goukumusic/Fragment_audio.java
new file mode 100644
index 0000000..26c259c
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/Fragment_audio.java
@@ -0,0 +1,41 @@
+package com.example.goukumusic;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
+public class Fragment_audio extends Fragment {
+ Button Btn_shouye, Btn_fenlei;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ // 创建 Fragment 布局
+ View rootView = inflater.inflate(R.layout.audio, container, false);
+
+ // 找到按钮控件
+ Btn_fenlei = rootView.findViewById(R.id.btn_fenlei);
+
+ // 设置按钮点击监听器
+ Btn_fenlei.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ // 在按钮点击时执行的操作
+ // 创建跳转到 FragmentList 活动界面的 Intent
+ Intent intent = new Intent(getActivity(),FragmentList.class);
+ // 启动 FragmentList 活动界面
+ startActivity(intent);
+ }
+ });
+
+ return rootView;
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/goukumusic/Fragment_singer.java b/app/src/main/java/com/example/goukumusic/Fragment_singer.java
new file mode 100644
index 0000000..ad1255c
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/Fragment_singer.java
@@ -0,0 +1,16 @@
+package com.example.goukumusic;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment_singer extends Fragment {
+ @Override
+ public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle saveInstanceState){
+ // 创建Fragment布局
+ return inflater.inflate(R.layout.singer,container,false);
+ }
+}
diff --git a/app/src/main/java/com/example/goukumusic/Fragment_singleinformation.java b/app/src/main/java/com/example/goukumusic/Fragment_singleinformation.java
new file mode 100644
index 0000000..1b9dcdf
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/Fragment_singleinformation.java
@@ -0,0 +1,40 @@
+package com.example.goukumusic;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.fragment.app.Fragment;
+
+public class Fragment_singleinformation extends Fragment {
+ @Override
+ public View onCreateView( LayoutInflater inflater,ViewGroup container,Bundle saveInstanceState){
+ // 创建Fragment布局
+ return inflater.inflate(R.layout.information,container,false);
+ }
+// @Override
+// protected void onCreate(Bundle savedInstanceStat){
+// TextView Name = (TextView) findViewById(R.id.username);
+//// TextView Password = (TextView) findViewById(R.id.password);
+// // 接受上传的参数
+// Intent intent = this.getIntent();
+// Bundle bundle = intent.getExtras();
+// assert bundle != null;
+// String username = bundle.getString("user_name");
+// String password = bundle.getString("user_password");
+// // 将接受的参数和文件控件绑定
+// Name.setText(String.format("用户名: %s", username));
+//// Password.setText(String.format("密码: %s", password));
+// Button button2 = (Button) findViewById(R.id.btn_return_login);
+// button2.setOnClickListener(new View.OnClickListener() { // 设置按钮的监听器
+// @Override
+// public void onClick(View v) {
+// // 创建intent对象
+// Intent intent = new Intent(LoginSuccess.this,MainActivity.class);
+// startActivity(intent); //启动Activity
+// finish(); //关闭Activity
+// }
+// });
+// }
+}
diff --git a/app/src/main/java/com/example/goukumusic/Fragment_song.java b/app/src/main/java/com/example/goukumusic/Fragment_song.java
new file mode 100644
index 0000000..6a4bac3
--- /dev/null
+++ b/app/src/main/java/com/example/goukumusic/Fragment_song.java
@@ -0,0 +1,77 @@
+package com.example.goukumusic;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ListView;
+
+import androidx.fragment.app.Fragment;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Fragment_song extends Fragment {
+ private ListView mListView;
+ private MyAdapter myAdapter;
+ private List