From 168f53f24a8d13968a9e13d3072af8f046f674be Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 24 三月 2025 18:01:58 +0800
Subject: [PATCH] fix 324 免登陆,删除ActionBar

---
 app/src/main/res/drawable/bg_button_black.xml                                    |    5 
 app/src/main/res/values/styles.xml                                               |   29 +
 app/src/main/res/drawable/me_offline_mode.xml                                    |    9 
 app/src/main/java/com/example/firstapp/database/repository/KeywordRepository.kt  |    2 
 app/src/main/res/drawable/me_feedback.xml                                        |   18 +
 app/src/main/res/drawable/me_xiaohongshu.xml                                     |   12 
 app/src/main/res/layout/dialog_edit_profile.xml                                  |   16 
 app/src/main/res/drawable/me_wait_todo.xml                                       |   21 +
 app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt |  131 ++++++-
 app/src/main/java/com/example/firstapp/ui/profile/EditProfileActivity.kt         |  137 +++++++
 app/src/main/res/drawable/me_tutorial.xml                                        |   12 
 app/src/main/res/layout/activity_edit_profile.xml                                |  127 +++++++
 app/src/main/res/drawable/me_friend_invitation.xml                               |   18 +
 app/src/main/res/drawable/ic_back.xml                                            |    9 
 app/src/main/AndroidManifest.xml                                                 |    4 
 app/src/main/java/com/example/firstapp/utils/SettingUtils.kt                     |    2 
 app/src/main/java/com/example/firstapp/database/service/ApiService.kt            |    7 
 app/src/main/res/drawable/me_ai_assistant.png                                    |    0 
 app/src/main/res/layout/fragment_notifications.xml                               |  455 +++++++++++++------------
 app/src/main/res/drawable/me_privacy.xml                                         |    9 
 app/src/main/res/drawable/me_set_reminder.xml                                    |    9 
 app/src/main/res/drawable/me_email.xml                                           |   17 
 app/src/main/res/drawable/default_avatar.xml                                     |    8 
 app/src/main/java/com/example/firstapp/database/entity/ApiResponse.kt            |    2 
 app/src/main/java/com/example/firstapp/database/response/UserInfo.kt             |   11 
 25 files changed, 825 insertions(+), 245 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f471d9e..0446048 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -111,7 +111,9 @@
             android:name=".activity.ContentDetailActivity"
             android:theme="@style/Theme.ContentDetail"
             android:exported="false" />
-
+        <activity
+            android:name=".ui.profile.EditProfileActivity"
+            android:exported="false"/>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/database/entity/ApiResponse.kt b/app/src/main/java/com/example/firstapp/database/entity/ApiResponse.kt
index 40a0f4b..aa0f21c 100644
--- a/app/src/main/java/com/example/firstapp/database/entity/ApiResponse.kt
+++ b/app/src/main/java/com/example/firstapp/database/entity/ApiResponse.kt
@@ -1,7 +1,7 @@
 package com.example.firstapp.database.entity
 
 data class ApiResponse<T>(
-    val status: Int,
+    val code: String,
     val msg: String,
     val info: String,
     val data: T
diff --git a/app/src/main/java/com/example/firstapp/database/repository/KeywordRepository.kt b/app/src/main/java/com/example/firstapp/database/repository/KeywordRepository.kt
index 4b9caf7..26c45cb 100644
--- a/app/src/main/java/com/example/firstapp/database/repository/KeywordRepository.kt
+++ b/app/src/main/java/com/example/firstapp/database/repository/KeywordRepository.kt
@@ -15,7 +15,7 @@
         return try {
             // 从网络获取配置
             val response = apiService.getKeywords()
-            if (response.status == 1) {
+            if (response.code == "0") {
                 // 保存到本地数据库作为缓存
                 saveToLocal(response.data)
                 keywordDao.getAllKeywords()
diff --git a/app/src/main/java/com/example/firstapp/database/response/UserInfo.kt b/app/src/main/java/com/example/firstapp/database/response/UserInfo.kt
new file mode 100644
index 0000000..a9c0cec
--- /dev/null
+++ b/app/src/main/java/com/example/firstapp/database/response/UserInfo.kt
@@ -0,0 +1,11 @@
+package com.example.firstapp.database.response
+
+// 添加数据类
+data class UserInfo(
+    val id: Long,
+    val name: String,
+    val cover: String,
+    val contactTel: String,
+    val passTime: String,
+    val showed: Boolean
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt
index 2aca993..b563cd2 100644
--- a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt
+++ b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt
@@ -6,10 +6,12 @@
 import com.example.firstapp.database.response.DictResponse
 import com.example.firstapp.database.response.LoginResponse
 import com.example.firstapp.database.response.SecurityResponse
+import com.example.firstapp.database.response.UserInfo
 import retrofit2.Retrofit
 import retrofit2.converter.gson.GsonConverterFactory
 import retrofit2.http.GET
 import retrofit2.http.POST
+import retrofit2.http.Path
 import retrofit2.http.Query
 
 /**
@@ -34,12 +36,15 @@
 
     @GET("config-security/enable-list-all")
     suspend fun getSecurityList(): SecurityResponse
+
+    @GET("flower/api/supplier/info/{phone}")
+    suspend fun getUserInfo(@Path("phone") phone: String): ApiResponse<UserInfo>
 }
 
 // 创建Retrofit实例(单例)
 object RetrofitClient{
 
-    private const val BASE_URL ="http://192.168.1.198:8888/jshERP-boot/"
+    private const val BASE_URL ="http://192.168.1.213:8080/"
 
     //添加Gson解析器,用于自动将JSON响应转换为Kotlin/Java对象
     private val retrofit = Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build()
diff --git a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
index 455a039..a2becfc 100644
--- a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
@@ -11,6 +11,8 @@
 import android.view.ViewGroup
 import android.widget.EditText
 import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.lifecycleScope
 import androidx.navigation.fragment.findNavController
@@ -21,7 +23,9 @@
 import com.example.firstapp.databinding.FragmentNotificationsBinding
 import com.example.firstapp.ui.reminderOther.ReminderOtherAddActivity2
 import com.example.firstapp.ui.reminderOther.ReminderSettingsFragmentOther
+import com.example.firstapp.ui.profile.EditProfileActivity
 import kotlinx.coroutines.launch
+import com.bumptech.glide.Glide
 
 class NotificationsFragment : Fragment() {
 
@@ -40,6 +44,31 @@
     private var xiaohongshuUrl = ""
     private var contactEmail = ""
     private var shareText = ""
+
+    private val editProfileLauncher = registerForActivityResult(
+        ActivityResultContracts.StartActivityForResult()
+    ) { result ->
+        if (result.resultCode == AppCompatActivity.RESULT_OK) {
+            result.data?.let { data ->
+                // 更新昵称
+                val newNickname = data.getStringExtra("nickname")
+                newNickname?.let {
+                    binding.tvNickname.text = it
+                }
+
+                // 更新头像
+                val avatarUri = data.getStringExtra("avatar_uri")
+                avatarUri?.let {
+                    Glide.with(requireContext())
+                        .load(Uri.parse(it))
+                        .circleCrop()
+                        .into(binding.ivAvatar)
+                }
+
+                // TODO: 将更新后的信息保存到服务器
+            }
+        }
+    }
 
     override fun onCreateView(
         inflater: LayoutInflater,
@@ -92,49 +121,72 @@
 
     private fun setupClickListeners() {
         // 设置提醒
-        binding.settingsReminder.setOnClickListener {
-            // 跳转到设置提醒页面
+        binding.layoutReminder.setOnClickListener {
             findNavController().navigate(R.id.action_navigation_notifications_to_reminderSettingsFragment)
         }
 
-//         设置其他提醒 暂时不需要
-//        binding.settingsReminderOther.setOnClickListener {
-//            // 跳转到设置提醒页面
-//            findNavController().navigate(R.id.action_settings_to_reminderSettingsFragmentOther)
-//        }
+        // 待办
+        binding.layoutTodo.setOnClickListener {
+            // TODO: 实现待办功能
+            Toast.makeText(context, "待办功能开发中", Toast.LENGTH_SHORT).show()
+        }
 
+        // 好友邀请
+        binding.layoutInvite.setOnClickListener {
+            shareToWechat()
+        }
 
+        // AI助手
+        binding.layoutAi.setOnClickListener {
+            // TODO: 实现AI助手功能
+            Toast.makeText(context, "AI助手功能开发中", Toast.LENGTH_SHORT).show()
+        }
+
+        // 离线模式
+        binding.layoutOffline.setOnClickListener {
+            // TODO: 实现离线模式功能
+            Toast.makeText(context, "离线模式功能开发中", Toast.LENGTH_SHORT).show()
+        }
 
         // 关于小红书
-        binding.aboutApp.setOnClickListener {
-            // 跳转到小红书账号页面
+        binding.layoutAbout.setOnClickListener {
             val intent = Intent(Intent.ACTION_VIEW, Uri.parse(xiaohongshuUrl))
             startActivity(intent)
         }
 
         // 邮件联系
-        binding.emailContact.setOnClickListener {
+        binding.layoutEmail.setOnClickListener {
             showEmailDialog()
         }
 
         // 意见与反馈
-        binding.feedback.setOnClickListener {
+        binding.layoutFeedback.setOnClickListener {
             showFeedbackDialog()
         }
 
-        // 分享给好友
-        binding.shareToFriends.setOnClickListener {
-            shareToWechat()
-        }
-
         // 隐私协议
-        binding.privacyPolicy.setOnClickListener {
+        binding.layoutPrivacy.setOnClickListener {
             startContentActivity("privacy_policy", "隐私协议")
         }
 
-        // 如何使用
-        binding.howToUse.setOnClickListener {
-            startContentActivity("user_guide", "使用说明")
+        // 使用教程
+        binding.layoutTutorial.setOnClickListener {
+            startContentActivity("user_guide", "使用教程")
+        }
+
+        // 头像点击
+        binding.layoutUserInfo.setOnClickListener {
+            val intent = Intent(requireContext(), EditProfileActivity::class.java).apply {
+                putExtra("nickname", binding.tvNickname.text.toString())
+                // 如果有当前头像的URL,也可以传递
+                // putExtra("avatar_url", currentAvatarUrl)
+            }
+            editProfileLauncher.launch(intent)
+        }
+
+        // VIP续费
+        binding.btnRenew.setOnClickListener {
+            Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
         }
     }
 
@@ -198,6 +250,45 @@
         startActivity(intent)
     }
 
+    private suspend fun loadUserInfo() {
+        try {
+            val response = RetrofitClient.apiService.getUserInfo("17586582287")
+            if (response.code == "0" && response.data != null) {
+                val userInfo = response.data
+                
+                // 设置头像
+                Glide.with(this)
+                    .load(userInfo.cover)
+                    .placeholder(R.drawable.default_avatar)
+                    .into(binding.ivAvatar)
+                
+                // 设置昵称和账号
+                binding.tvNickname.text = userInfo.name
+                binding.tvUserId.text = "个人账号:${userInfo.contactTel}"
+                
+                // 设置VIP信息
+                if (userInfo.showed) {
+                    binding.cardVip.visibility = View.VISIBLE
+                    binding.tvVipExpire.text = "${userInfo.passTime} 到期"
+                } else {
+                    binding.cardVip.visibility = View.GONE
+                }
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+            Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
+        }
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        
+        // 加载用户信息
+        lifecycleScope.launch {
+            loadUserInfo()
+        }
+    }
+
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
diff --git a/app/src/main/java/com/example/firstapp/ui/profile/EditProfileActivity.kt b/app/src/main/java/com/example/firstapp/ui/profile/EditProfileActivity.kt
new file mode 100644
index 0000000..761bc17
--- /dev/null
+++ b/app/src/main/java/com/example/firstapp/ui/profile/EditProfileActivity.kt
@@ -0,0 +1,137 @@
+package com.example.firstapp.ui.profile
+
+import android.Manifest
+import android.app.Activity
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.provider.MediaStore
+import android.view.View
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.app.ActivityCompat
+import androidx.core.content.ContextCompat
+import com.bumptech.glide.Glide
+import com.example.firstapp.R
+import com.example.firstapp.databinding.ActivityEditProfileBinding
+
+class EditProfileActivity : AppCompatActivity() {
+    private lateinit var binding: ActivityEditProfileBinding
+    private var selectedImageUri: Uri? = null
+
+    private val pickImage = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
+        if (result.resultCode == Activity.RESULT_OK) {
+            result.data?.data?.let { uri ->
+                selectedImageUri = uri
+                Glide.with(this)
+                    .load(uri)
+                    .circleCrop()
+                    .into(binding.ivAvatar)
+            }
+        }
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        binding = ActivityEditProfileBinding.inflate(layoutInflater)
+        setContentView(binding.root)
+
+        // 设置状态栏
+        window.statusBarColor = ContextCompat.getColor(this, android.R.color.white)
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+        }
+
+        // 获取传入的数据
+        val currentNickname = intent.getStringExtra("nickname") ?: ""
+        val currentAvatarUrl = intent.getStringExtra("avatar_url")
+
+        // 设置当前数据
+        binding.etNickname.setText(currentNickname)
+        if (!currentAvatarUrl.isNullOrEmpty()) {
+            Glide.with(this)
+                .load(currentAvatarUrl)
+                .circleCrop()
+                .into(binding.ivAvatar)
+        }
+
+        // 设置点击事件
+        binding.btnBack.setOnClickListener {
+            finish()
+        }
+
+        binding.ivAvatar.setOnClickListener {
+            checkAndRequestPermission()
+        }
+
+        binding.btnSaveBottom.setOnClickListener {
+            saveAndFinish()
+        }
+
+        binding.btnSaveBottom.setOnClickListener {
+            saveAndFinish()
+        }
+    }
+
+    private fun saveAndFinish() {
+        val newNickname = binding.etNickname.text.toString()
+        if (newNickname.isEmpty()) {
+            Toast.makeText(this, "昵称不能为空", Toast.LENGTH_SHORT).show()
+            return
+        }
+
+        val resultIntent = Intent().apply {
+            putExtra("nickname", newNickname)
+            putExtra("avatar_uri", selectedImageUri?.toString())
+        }
+        setResult(Activity.RESULT_OK, resultIntent)
+        finish()
+    }
+
+    private fun checkAndRequestPermission() {
+        when {
+            ContextCompat.checkSelfPermission(
+                this,
+                Manifest.permission.READ_EXTERNAL_STORAGE
+            ) == PackageManager.PERMISSION_GRANTED -> {
+                openGallery()
+            }
+            else -> {
+                ActivityCompat.requestPermissions(
+                    this,
+                    arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
+                    PERMISSION_REQUEST_CODE
+                )
+            }
+        }
+    }
+
+    override fun onRequestPermissionsResult(
+        requestCode: Int,
+        permissions: Array<out String>,
+        grantResults: IntArray
+    ) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
+        when (requestCode) {
+            PERMISSION_REQUEST_CODE -> {
+                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                    openGallery()
+                } else {
+                    Toast.makeText(this, "需要存储权限来选择头像", Toast.LENGTH_SHORT).show()
+                }
+            }
+        }
+    }
+
+    private fun openGallery() {
+        val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
+        pickImage.launch(intent)
+    }
+
+    companion object {
+        private const val PERMISSION_REQUEST_CODE = 100
+    }
+} 
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/utils/SettingUtils.kt b/app/src/main/java/com/example/firstapp/utils/SettingUtils.kt
index 02dd9a9..0d96f96 100644
--- a/app/src/main/java/com/example/firstapp/utils/SettingUtils.kt
+++ b/app/src/main/java/com/example/firstapp/utils/SettingUtils.kt
@@ -161,6 +161,6 @@
     }
 
     init {
-        throw UnsupportedOperationException("u can't instantiate me...")
+        throw UnsupportedOperationException("u can't instantiate drawable-me...")
     }
 }
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_button_black.xml b/app/src/main/res/drawable/bg_button_black.xml
new file mode 100644
index 0000000..55bcaa7
--- /dev/null
+++ b/app/src/main/res/drawable/bg_button_black.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@android:color/black"/>
+    <corners android:radius="4dp"/>
+</shape> 
\ No newline at end of file
diff --git a/app/src/main/res/drawable/default_avatar.xml b/app/src/main/res/drawable/default_avatar.xml
new file mode 100644
index 0000000..39c184b
--- /dev/null
+++ b/app/src/main/res/drawable/default_avatar.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="#CCCCCC" />
+    <size
+        android:width="50dp"
+        android:height="50dp" />
+</shape> 
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_back.xml b/app/src/main/res/drawable/ic_back.xml
new file mode 100644
index 0000000..b0ce776
--- /dev/null
+++ b/app/src/main/res/drawable/ic_back.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:fillColor="#000000"
+        android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
+</vector> 
\ No newline at end of file
diff --git a/app/src/main/res/drawable/me_ai_assistant.png b/app/src/main/res/drawable/me_ai_assistant.png
new file mode 100644
index 0000000..4eaeba7
--- /dev/null
+++ b/app/src/main/res/drawable/me_ai_assistant.png
Binary files differ
diff --git a/app/src/main/res/drawable/me_email.xml b/app/src/main/res/drawable/me_email.xml
new file mode 100644
index 0000000..8c1c6dd
--- /dev/null
+++ b/app/src/main/res/drawable/me_email.xml
@@ -0,0 +1,17 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M985.2,842.5c-1.7,23.9 -24.2,45.3 -49.5,47.6a4795.6,4795.6 0,0 1,-847.4 0c-25.3,-2.3 -47.8,-23.8 -49.5,-47.6 -13.7,-194 1.8,-388 46.3,-582.1 5.6,-23.9 28.8,-45.1 51.2,-47.1a4253,4253 0,0 1,751.5 0c22.4,2 45.6,23.3 51.2,47.1 44.5,194 59.9,388 46.3,582.1z"
+      android:fillColor="#0091FF"/>
+  <path
+      android:pathData="M887.7,213.3a4266.5,4266.5 0,0 0,-246.9 -14.7c-74.8,115.1 -169.5,235.4 -266.7,353.4 109.5,111.4 227.4,225.8 335.5,332.6a5141.6,5141.6 0,0 0,265.7 -17.2c5.5,-7.4 9.1,-16 9.7,-24.9 13.7,-194 -1.8,-388 -46.3,-582.1 -5.6,-23.9 -28.8,-45.1 -51.2,-47.1z"
+      android:strokeAlpha="0.3"
+      android:fillColor="#1B6DAB"
+      android:fillAlpha="0.3"/>
+  <path
+      android:pathData="M888.5,213.3A4252.9,4252.9 0,0 0,137.1 213.2c-16.5,1.5 -33.2,13.3 -43.3,28.9 97.2,124.1 238,268.8 383.4,413.4 18.2,18.1 47.8,18.1 66,0 146.7,-145.8 288.7,-291.8 386.2,-416.7 -10.2,-13.9 -25.7,-24.1 -40.9,-25.5z"
+      android:fillColor="#42AEFF"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_feedback.xml b/app/src/main/res/drawable/me_feedback.xml
new file mode 100644
index 0000000..ec7c085
--- /dev/null
+++ b/app/src/main/res/drawable/me_feedback.xml
@@ -0,0 +1,18 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="128dp"
+    android:height="128dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M360.4,557.5l184.9,0 0,30.8 -184.9,0 0,-30.8Z"
+      android:fillColor="#00D3D3"/>
+  <path
+      android:pathData="M360.4,481l308.2,0 0,30.8 -308.2,0 0,-30.8Z"
+      android:fillColor="#00D3D3"/>
+  <path
+      android:pathData="M360.4,404.4l308.2,0 0,30.8 -308.2,0 0,-30.8Z"
+      android:fillColor="#00D3D3"/>
+  <path
+      android:pathData="M512,64c-247.3,0 -447.7,200.5 -447.7,447.7s200.5,447.7 447.7,447.7 447.7,-200.5 447.7,-447.7S759.3,64 512,64zM761.1,620.2c0,34 -27.6,61.6 -61.6,61.6l-154.1,0 0,123.3L422,681.8 329.6,681.8c-34,0 -61.6,-27.6 -61.6,-61.6L267.9,373.6c0,-34 27.6,-61.6 61.6,-61.6l369.8,0c34,0 61.6,27.6 61.6,61.6L761.1,620.2z"
+      android:fillColor="#00D3D3"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_friend_invitation.xml b/app/src/main/res/drawable/me_friend_invitation.xml
new file mode 100644
index 0000000..29a482d
--- /dev/null
+++ b/app/src/main/res/drawable/me_friend_invitation.xml
@@ -0,0 +1,18 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M249.7,287.7h524.9c82.9,0 149.7,67.4 149.7,149.7L924.3,862.2c0,82.9 -67.4,149.7 -149.7,149.7L249.7,1011.9c-82.9,0 -149.7,-67.4 -149.7,-149.7L99.9,437.2c-0.6,-82.1 66.8,-149.5 149.7,-149.5zM249.7,287.7"
+      android:fillColor="#FF5000"/>
+  <path
+      android:pathData="M399.2,562.8h225.1v449.5L399.2,1012.3L399.2,562.8zM535.3,188.2s154.6,-190.5 199.7,-174.9c0,0 82.9,-48.1 124.9,249.9v24.8h-124.9s21.1,-179.4 -50.2,-149.7L534.5,287.9c0.8,-0.2 0.8,-99.7 0.8,-99.7zM479,188.8S324.4,0.2 279.3,15.8c0,0 -82.9,-47.5 -124.9,247.4v24.8h124.9S258.3,110.6 329.5,139.5l100.1,98.9 50.2,49.6 -0.8,-99.1zM479,188.8"
+      android:fillColor="#FFB400"/>
+  <path
+      android:pathData="M161.8,287.7h699.4c76,0 137.2,61.2 137.2,137.2s-61.8,137.2 -137.2,137.2L161.8,562.2c-76,0 -137.2,-61.2 -137.2,-137.2s61.8,-137.2 137.2,-137.2zM161.8,287.7"
+      android:fillColor="#FF6E00"/>
+  <path
+      android:pathData="M624.2,300v-12.3h-0.6c-6.1,-56.3 -53.9,-100.1 -111.8,-100.1 -58.2,0 -105.7,43.8 -111.8,100.1h-0.6v275h225.1L624.4,300zM624.2,300"
+      android:fillColor="#FFC937"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_offline_mode.xml b/app/src/main/res/drawable/me_offline_mode.xml
new file mode 100644
index 0000000..68bf30b
--- /dev/null
+++ b/app/src/main/res/drawable/me_offline_mode.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="51.2dp"
+    android:height="32dp"
+    android:viewportWidth="1638"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M1292.8,384A481.7,481.7 0,0 0,819.2 0C633.5,0 473.6,102.4 396.8,256 198.3,281.6 51.2,441.5 51.2,640A385.1,385.1 0,0 0,435.2 1024h831.9A316.9,316.9 0,0 0,1587.2 703.9c0,-166.3 -134.3,-307.2 -294.4,-319.9m-247.5,-38.1a63.9,63.9 0,0 1,0 90.4L909.6,571.9l135.7,135.7a63.9,63.9 0,0 1,-90.4 90.4L819.2,662.3 683.5,798a63.9,63.9 0,0 1,-90.4 -90.4l135.7,-135.7 -135.7,-135.6a63.9,63.9 0,1 1,90.4 -90.4L819.2,481.5l135.7,-135.6a63.9,63.9 0,0 1,90.4 0z"
+      android:fillColor="#1296db"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_privacy.xml b/app/src/main/res/drawable/me_privacy.xml
new file mode 100644
index 0000000..7c559d8
--- /dev/null
+++ b/app/src/main/res/drawable/me_privacy.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M464.3,14.4a73.9,73.9 0,0 1,87.7 0,682.2 682.2,0 0,0 164.5,96 1345.9,1345.9 0,0 0,184 42.9A72.6,72.6 0,0 1,957.4 217.3l0.3,0.6h-2.6a2953.9,2953.9 0,0 1,-3.2 305.9c-40.3,324.8 -293.1,499.2 -442.6,499.2 -149.4,0 -448,-247.4 -448,-503l0,-12.7v-4.3l0,-8.6 0,-8.6 0,-17.2c0.3,-121.6 1.7,-241.1 1.8,-249.1l0,-0.4a67.2,67.2 0,0 1,56.3 -64,608 608,0 0,0 178.9,-44.8 430.7,430.7 0,0 0,165.8 -96zM522.6,375c-40.7,0 -73.7,33 -73.7,73.7 0,25.6 13,48.1 32.8,61.3v136.7a42.3,42.3 0,0 0,84.6 0L566.3,510.2c0,-0.7 -0,-1.3 -0.1,-2a73.6,73.6 0,0 0,30.1 -59.4c0,-40.7 -33,-73.7 -73.7,-73.7z"
+      android:fillColor="#000000"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_set_reminder.xml b/app/src/main/res/drawable/me_set_reminder.xml
new file mode 100644
index 0000000..7626b5b
--- /dev/null
+++ b/app/src/main/res/drawable/me_set_reminder.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M648.2,887.7C648.1,962.8 587.6,1023.8 511.8,1023.8 436.7,1023.8 375.7,963.1 375.5,887.7 375.5,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7 648.2,887.7ZM603,88.6C603,39.8 562.2,0 511.9,0 461.7,0 420.9,39.7 420.9,88.6 420.9,93.5 421.3,98.4 422.1,103.2 296.4,145.8 205.1,254.8 205.1,409.7 205.1,409.7 205.1,580.3 205.1,580.3 205.1,580.3 193.3,728.9 148.9,730.4 122.5,730.4 102.2,750.3 102.2,774.7 102.2,799.3 122.6,819 147.8,819 147.8,819 511.9,819 511.9,819 511.9,819 830.6,819 830.6,819 830.6,819 876.1,819 876.1,819 901.4,819 921.6,799.2 921.6,774.7 921.6,750.1 901.3,730.4 876.1,730.4 830.6,730.4 819.4,580.3 819.4,580.3 819.4,580.3 819.4,409.7 819.4,409.7 819.4,254.7 734.2,145.6 601.8,103.1 602.6,98.4 603,93.5 603,88.6 603,88.6 603,88.6 603,88.6 603,88.6 603,88.6 603,88.6Z"
+      android:fillColor="#272636"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_tutorial.xml b/app/src/main/res/drawable/me_tutorial.xml
new file mode 100644
index 0000000..789feea
--- /dev/null
+++ b/app/src/main/res/drawable/me_tutorial.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M513.1,189.8c-177.9,0 -322.2,144.2 -322.2,322.2 0,177.9 144.2,322.2 322.2,322.2 177.9,0 322.2,-144.2 322.2,-322.2 -0,-177.9 -144.2,-322.2 -322.2,-322.2zM533.8,670c-5.7,5.6 -12.4,8.5 -20.2,8.5 -7.7,0 -14.4,-2.9 -20.2,-8.5 -5.7,-5.6 -8.6,-12.3 -8.6,-19.9 0,-7.6 2.8,-14.3 8.6,-19.9 5.7,-5.6 12.4,-8.5 20.2,-8.5 7.7,0 14.5,2.8 20.2,8.5 5.7,5.7 8.6,12.3 8.6,19.9 0,7.6 -2.9,14.3 -8.6,19.9zM617,446.1c-5,10.6 -16.6,24.4 -34.8,41.4 -8.7,8.6 -16.1,16 -22.2,22.2 -6,6.2 -10.6,11.4 -13.6,15.7 -5.4,8 -8.9,15.8 -10.6,23.4 -1.3,6.6 -2,18.1 -2,34.4 0,5.3 -2.4,9.3 -7.1,12 -4.7,2.7 -9.8,4 -15.4,4 -5.6,0 -10.6,-1.3 -15.2,-3.7 -4.5,-2.5 -6.8,-6.6 -6.8,-12.2 0.3,-12.6 0.8,-23 1.5,-31.2 0.7,-8.2 2.5,-15.9 5.6,-23.2 3,-7.3 7.9,-15 14.6,-23.2 6.7,-8.2 16.1,-18.7 28.2,-31.7 16.1,-16 26.6,-27.7 31.3,-35.4 4.7,-7.6 7.1,-18.8 7.1,-33.4 0,-7.3 -1.3,-14.3 -4,-21 -2.7,-6.6 -6.6,-12.5 -11.6,-17.7 -5,-5.2 -11.4,-9.2 -18.9,-12.2 -7.6,-3 -16.4,-4.5 -26.5,-4.5 -44.7,0 -67.1,26.3 -67.1,78.8 0,13.3 -7.7,19.9 -23.2,19.9 -6.7,0 -12,-1.8 -15.6,-5.5 -3.7,-3.6 -5.5,-8.5 -5.5,-14.4 0,-40.5 11.1,-70.1 33.3,-88.8 22.5,-18.6 49.1,-27.9 79.7,-27.9 30.6,0 56,9 76.2,26.9 20.5,17.3 30.8,40.9 30.8,70.8 -0,13.6 -2.7,25.7 -8.1,36.4z"
+      android:fillColor="#d4237a"/>
+  <path
+      android:pathData="M802.7,4.1H223.5c-120.5,0 -218.2,97.7 -218.2,218.2v579.3c0,120.5 97.7,218.2 218.2,218.2H802.7c120.5,0 218.2,-97.7 218.2,-218.2V222.4c0,-120.5 -97.7,-218.2 -218.2,-218.2zM513.1,890.2c-208.9,0 -378.2,-169.3 -378.2,-378.2 0,-208.9 169.3,-378.2 378.2,-378.2 208.9,0 378.2,169.4 378.2,378.2 -0,208.9 -169.3,378.2 -378.2,378.2z"
+      android:fillColor="#d4237a"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_wait_todo.xml b/app/src/main/res/drawable/me_wait_todo.xml
new file mode 100644
index 0000000..7b2ca02
--- /dev/null
+++ b/app/src/main/res/drawable/me_wait_todo.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M76.4,82.1m135.9,0l525.5,0q135.9,0 135.9,135.9l0,580.5q0,135.9 -135.9,135.9l-525.5,0q-135.9,0 -135.9,-135.9l0,-580.5q0,-135.9 135.9,-135.9Z"
+      android:fillColor="#A5ADF6"/>
+  <path
+      android:pathData="M642.4,379.2H229.3a41,41 0,0 1,0 -81.9h413.1a41,41 0,1 1,0 81.9zM485.5,611.9h-256a41,41 0,0 1,0 -81.9h256a41,41 0,0 1,0 81.9z"
+      android:fillColor="#FFFFFF"/>
+  <path
+      android:pathData="M738.6,724.7m-221.6,0a221.6,221.6 0,1 0,443.2 0,221.6 221.6,0 1,0 -443.2,0Z"
+      android:fillColor="#A5ADF6"/>
+  <path
+      android:pathData="M738.6,503.1a221.5,221.5 0,0 0,-71.7 431.3h70.8a135.9,135.9 0,0 0,136.1 -135.7v-249.5a220.2,220.2 0,0 0,-135.2 -46.1z"
+      android:fillColor="#635DF7"/>
+  <path
+      android:pathData="M686.1,857a41,41 0,0 1,-31.3 -67.4l60,-70.9v-97.7a41,41 0,0 1,81.9 0v112.6a41,41 0,0 1,-9.7 26.4l-69.6,82.4a41,41 0,0 1,-31.3 14.6z"
+      android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/app/src/main/res/drawable/me_xiaohongshu.xml b/app/src/main/res/drawable/me_xiaohongshu.xml
new file mode 100644
index 0000000..b837f91
--- /dev/null
+++ b/app/src/main/res/drawable/me_xiaohongshu.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M726.5,457.5c-6.7,-0.1 -13.4,0 -20,-0.1 -2.4,0 -3,1.1 -3,3.2 0.1,5.1 0.1,10.1 0.1,15.2v0c0.1,4.9 0,9.8 0.1,14.6 0,3.9 0.7,4.7 4.5,4.7 7.1,0.1 14.3,0 21.4,0.1 2.7,0 3.7,-1.3 3.7,-3.8 -0.1,-9.2 -0.1,-18.3 -0.2,-27.5a6.8,6.8 0,0 0,-6.5 -6.5z"
+      android:fillColor="#FF2E4D"/>
+  <path
+      android:pathData="M849.9,51.2h-675.8c-67.9,0 -122.9,55 -122.9,122.9v675.8c0,67.9 55,122.9 122.9,122.9h675.8c67.9,0 122.9,-55 122.9,-122.9L972.8,174.1c0,-67.9 -55,-122.9 -122.9,-122.9zM250.8,505.7c-0.7,10.6 -1.4,21.3 -2.6,31.8 -2.1,18.4 -6.2,36.3 -14.6,52.9 -2.2,4.1 -5.1,7.8 -8.2,12.5 -1.9,-3.9 -3.4,-7 -4.8,-10.1a3203.6,3203.6 0,0 1,-14.8 -33.6c-0.5,-1.2 -0.9,-2.9 -0.4,-4 3.2,-6.8 3.4,-14.1 3.9,-21.4 0.6,-9.2 1.4,-18.2 2,-27.4 0.5,-7 0.8,-14 1.4,-21 0.7,-8.1 1.5,-16.2 2.2,-24.2 0.1,-2 1,-2.6 2.8,-2.6 11.1,0 22.1,0 33.2,-0.1 2.4,0 3,1 2.9,3.2 -1,14.6 -1.9,29.3 -2.9,43.9zM322.1,593.1c-0.7,9.5 -5.1,17.5 -12.6,23.5 -5.4,4.4 -11.7,6.2 -18.7,6.1 -5.9,0 -11.7,-0.1 -17.5,0 -2,0 -3.3,-0.6 -4.1,-2.6 -3.4,-7.7 -6.9,-15.3 -10.3,-23 -0.5,-1.1 -0.7,-2.3 -1.1,-3.5 -1.6,-4.1 -1.6,-4.3 3,-4.4h13.9c5.9,0 8.5,-2.5 8.6,-8.6 0.1,-4.6 0.1,-9.1 0.1,-13.7L283.3,494.2c0.1,0.2 0.2,0.2 0.3,0.2L283.6,408.6c0,-4.3 0.1,-4.4 4.4,-4.4h29.2c5.1,0 5.2,0.1 5.2,5.4 0,27.2 0,54.4 0.1,81.5 0.1,23.9 0.3,47.8 0.3,71.6 0,10.1 0.1,20.3 -0.7,30.3zM397.7,564.2c-5,11.6 -10.2,23 -15.3,34.5 -0.5,1.1 -1.2,2.3 -2.4,4.4v0c-3,-4.5 -6.1,-8.2 -8.1,-12.4 -2.8,-6.1 -4.5,-12.8 -7.4,-19 -3,-6.7 -4.2,-13.9 -5.6,-20.9 -1.2,-6 -1.4,-12.3 -1.8,-18.3 -1.2,-15.4 -2.2,-30.8 -3.4,-46.1a2450,2450 0,0 0,-2.1 -25.2c-0.1,-1.5 0.2,-2.2 1.9,-2.2 11.5,0 23,-0.1 34.5,-0.2 2.2,0 3,1 3.1,3 0.3,4.7 0.5,9.3 0.9,14 0.3,3.8 0.7,7.7 1,11.4 0.5,5.4 1,10.8 1.4,16.1 0.5,6.9 0.5,13.8 1.5,20.6 1.3,10.4 0.3,21.1 3.9,31.3 0.9,2.4 -1,6.1 -2.2,8.9zM481.9,586.2c-2.9,6.7 -6,13.2 -9,19.8 -1.6,3.7 -3.2,7.5 -4.8,11.3 -1.9,4.5 -3.1,5.4 -7.9,5.4h-22.3c-7.5,0 -15,0.2 -22.5,-0.1 -3.6,-0.1 -7.1,-1.3 -10.6,-2 -1.8,-0.4 -2.2,-1.4 -1.4,-3.1a3709.7,3709.7 0,0 0,13.5 -29.2c1,-2.2 1.9,-4.7 3,-6.9 0.3,-0.6 1.4,-1.3 2,-1.1 12.4,3.2 25.1,2.8 37.8,2.6a874.6,874.6 0,0 1,20.1 0c3.2,0 3.5,0.5 2.2,3.4zM485.8,564.3a4.5,4.5 0,0 1,-2.7 1.4c-13.9,0.1 -27.9,0.1 -41.8,-0.1 -4.2,-0.1 -8.6,-1.1 -11.7,-4.3 -3.4,-3.4 -5,-7.4 -3.3,-11.9a897.5,897.5 0,0 1,9.6 -24.1c3.9,-9.2 7.8,-18.3 12.1,-28.2 -2.3,-0.1 -3.7,-0.3 -5,-0.3 -4.1,-0.1 -8.2,0.3 -12.3,-0.2 -4.5,-0.5 -9,-1 -12.5,-4.8 -3.4,-3.7 -3.9,-8 -2.6,-12.3 2.2,-6.8 5,-13.4 7.8,-20 2.7,-6.2 5.7,-12.2 8.5,-18.2 3,-6.5 5.9,-13.1 8.8,-19.6a1362,1362 0,0 0,7.7 -17.3c0.7,-1.8 1.9,-2.5 3.9,-2.5 10.9,0.1 21.9,0 32.9,0 3.6,0 3.7,0.4 2.3,3.7 -6.3,14.6 -12.7,29.2 -19,43.8a11.5,11.5 0,0 0,-1.2 4.9c0.2,3.9 1,4.5 5.1,4.5 8.2,0.1 16.4,0 24.4,0 1.6,0 3.4,0.2 5,0.3 2.3,0.1 2.6,1.1 1.6,3.1a2455.2,2455.2 0,0 0,-13.4 29.2c-3,6.9 -5.9,13.9 -8.9,20.8a1530.2,1530.2 0,0 1,-6.2 13.8c-1.9,4.2 -0.6,6.3 4.2,6.4 6,0 12,0.1 18.1,0 2.1,0 3.1,0.6 2.1,2.9 -3.6,8.3 -7.2,16.6 -10.8,24.9 -0.7,1.5 -1.4,3.1 -2.4,4.4zM620.6,623h-125.3c-1.7,-0.2 -3.5,-0.2 -5.9,-0.2v-0c0.9,-2.6 1.4,-4.4 2.2,-6.1 4.7,-10.3 9.4,-20.5 14.1,-30.8 1,-2.3 2.5,-2.9 4.8,-2.9h28.7c4.5,0 4.8,-0.2 4.8,-4.7L543.7,461.7c0,-4 -0.1,-4.1 -4.1,-4.1 -6.1,0 -12.3,-0.1 -18.4,0 -2.3,0 -3.3,-0.5 -3.3,-3.1 0.1,-11 0.1,-21.9 0.1,-32.9 0,-3.9 0.1,-3.9 3.9,-3.9h73c4.2,0 8.6,0.1 12.8,0 2,0 2.8,0.8 2.7,2.9 -0.1,11.4 -0.1,22.8 -0.1,34.3 0,2 -0.7,2.8 -2.8,2.8 -6.6,-0.1 -13.1,0.1 -19.8,0.1 -2.3,0 -3.3,1.1 -3.3,3.5 0.1,18.4 0.1,36.7 0.1,55.1 0,20.9 0,41.7 0.1,62.7 0,3.8 0.4,4.2 4.2,4.2h31.4c3.4,0 3.9,0.4 3.9,3.8 0.1,11 0,21.9 0.1,32.9 -0,2.9 -1.6,3.2 -3.7,3.2zM819.3,588.1c-0.1,16.4 -11,29.2 -26.4,32.9 -4.3,1.1 -8.8,1.4 -13.2,1.5 -6.8,0.2 -13.7,0.1 -20.6,0.1 -4.2,0 -5.4,-0.8 -7,-4.7 -3.3,-8 -6.8,-15.9 -10.3,-23.9l-0.7,-1.6c-1.2,-3.1 -0.8,-3.6 2.5,-3.6 9.4,-0.1 19,0.2 28.4,-0.3 5.7,-0.3 8,-2.9 8.2,-8.6 0.2,-11 -0.3,-22.1 -0.1,-33.1 0.1,-5.5 -6.8,-11.4 -11.7,-11.7a32.8,32.8 0,0 0,-2.7 -0.1c-18.7,0 -37.5,0 -56.3,0.1 -5.3,0 -5.7,0.5 -5.7,5.9l0.2,77.6c0,4.1 -0.1,4.2 -4.2,4.2h-31.2c-4,0 -4.3,-0.3 -4.3,-4.3v-39.9c0.1,0.1 0.1,0.1 0.2,0.1v-41c0,-2.8 -1.9,-2.9 -3.8,-2.9 -10.2,0.1 -20.4,0.3 -30.6,0.3 -6.9,0 -6.2,0.8 -6.3,-6.4 -0.1,-9.9 0,-19.9 0,-29.8 0,-3.6 0.4,-4.1 3.9,-4.1 10.7,-0.1 21.3,0 32,-0.1 4.1,0 4.3,-0.2 4.4,-4.2 0.1,-9.9 -0.1,-19.8 0,-29.7 0,-2.5 -1,-3.2 -3.4,-3.2 -6.8,0.1 -13.8,-0.1 -20.6,0 -2.2,0 -2.9,-0.7 -2.9,-2.9 0.1,-11.3 0.1,-22.5 -0.1,-33.7 0,-2.7 1,-3.3 3.4,-3.3 6.3,0.1 12.6,0 19,0 4.2,0 4.5,-0.3 4.5,-4.7 0,-2.6 0.1,-5.2 0,-7.9 -0.1,-2.5 1,-3.2 3.3,-3.2 9.1,0.1 18.2,0.1 27.3,0.1h5c3.9,0 4,0 4.2,4.1 0.1,2.4 -0.2,4.9 -0.1,7.3 0.1,3.4 1,4.3 4.3,4.4 5.7,0.1 11.3,0.1 17,0.1 14.6,0.1 27.4,5.1 37,16.3 5.4,6.2 8.7,13.8 9.2,22.1 0.5,8.5 0.2,17 0.3,25.5 0,3.2 0.2,6.4 0.4,9.5 0.1,3.2 0.9,4 4.1,3.9a48.6,48.6 0,0 1,19 3.2c13,5 21,14.2 23.6,28a44.4,44.4 0,0 1,0.7 8.3c0.1,17.9 0.1,35.8 -0.1,53.7zM810.1,453.6c-5.9,3.9 -12.2,3.8 -19.4,3.7 -2.2,0 -5.2,0.1 -8.1,-0.1 -0.7,-0.1 -2,-1 -2.1,-1.6 -0.7,-8.8 -1.8,-17.8 1.4,-26.4 2.8,-7.6 9.6,-12 17.6,-12.2a20,20 0,0 1,19.3 14.3c2.3,8.3 -1.6,17.4 -8.7,22.2z"
+      android:fillColor="#FF2E4D"/>
+</vector>
diff --git a/app/src/main/res/layout/activity_edit_profile.xml b/app/src/main/res/layout/activity_edit_profile.xml
new file mode 100644
index 0000000..d5653b2
--- /dev/null
+++ b/app/src/main/res/layout/activity_edit_profile.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <!-- 标题栏(保持不变) -->
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="56dp"
+        android:background="@android:color/white">
+
+        <ImageButton
+            android:id="@+id/btn_back"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:layout_centerVertical="true"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            android:src="@drawable/ic_back"
+            android:contentDescription="返回"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:text="资料编辑"
+            android:textColor="@android:color/black"
+            android:textSize="18sp"/>
+    </RelativeLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="#EEEEEE"/>
+
+    <!-- 内容区域 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="16dp">
+
+        <!-- 昵称行 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingVertical="12dp">
+
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:text="昵称"
+                android:textColor="#333333"
+                android:textSize="16sp"/>
+
+            <!-- 使用 View 作为间隔 -->
+            <View
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:background="@android:color/transparent"/>
+
+            <EditText
+                android:id="@+id/et_nickname"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:minWidth="120dp"
+                android:background="@null"
+                android:hint="请输入昵称"
+                android:textSize="16sp"
+                android:padding="8dp"
+                android:gravity="end"/> <!-- 文本右对齐 -->
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="#EEEEEE"/>
+
+        <!-- 头像行 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingVertical="16dp">
+
+            <TextView
+                android:layout_width="80dp"
+                android:layout_height="wrap_content"
+                android:text="头像"
+                android:textColor="#333333"
+                android:textSize="16sp"/>
+
+            <!-- 使用 View 作为间隔 -->
+            <View
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:background="@android:color/transparent"/>
+
+            <com.google.android.material.imageview.ShapeableImageView
+                android:id="@+id/iv_avatar"
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                android:scaleType="centerCrop"
+                android:src="@drawable/default_avatar"/>
+        </LinearLayout>
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"/>
+
+    <Button
+        android:id="@+id/btn_save_bottom"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="16dp"
+        android:background="@drawable/bg_button_black"
+        android:text="保存"
+        android:textColor="@android:color/white"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_edit_profile.xml b/app/src/main/res/layout/dialog_edit_profile.xml
new file mode 100644
index 0000000..cb905f1
--- /dev/null
+++ b/app/src/main/res/layout/dialog_edit_profile.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:padding="16dp">
+
+    <EditText
+        android:id="@+id/edit_nickname"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:hint="输入新昵称"
+        android:inputType="text"
+        android:maxLines="1" />
+
+</LinearLayout> 
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_notifications.xml b/app/src/main/res/layout/fragment_notifications.xml
index 5a0a012..a6a983e 100644
--- a/app/src/main/res/layout/fragment_notifications.xml
+++ b/app/src/main/res/layout/fragment_notifications.xml
@@ -3,286 +3,301 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:fillViewport="true">
+    android:background="@android:color/white"
+    android:fillViewport="true"
+    android:paddingBottom="56dp">
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical">
 
-        <!-- 标题栏 -->
-        <TextView
+        <!-- 顶部广告位 - 减小高度 -->
+        <ImageView
+            android:id="@+id/iv_banner"
+            android:layout_width="match_parent"
+            android:layout_height="32dp"
+            android:scaleType="centerCrop" />
+
+        <!-- 用户信息区域 - 减小padding -->
+        <RelativeLayout
+            android:id="@+id/layout_user_info"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:background="#FFE4C4"
-            android:gravity="center"
-            android:padding="16dp"
-            android:text="终身会员"
-            android:textColor="@android:color/black"
-            android:textSize="20sp"
-            android:textStyle="bold" />
+            android:padding="12dp">
 
-        <!-- 功能区标题 -->
-        <TextView
+            <com.google.android.material.imageview.ShapeableImageView
+                android:id="@+id/iv_avatar"
+                android:layout_width="50dp"
+                android:layout_height="50dp"
+                android:scaleType="centerCrop"
+                app:shapeAppearanceOverlay="@style/CircleImageView" />
+
+            <TextView
+                android:id="@+id/tv_nickname"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="16dp"
+                android:layout_toEndOf="@id/iv_avatar"
+                android:textColor="@android:color/black"
+                android:textSize="18sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_user_id"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/tv_nickname"
+                android:layout_marginStart="16dp"
+                android:layout_marginTop="4dp"
+                android:layout_toEndOf="@id/iv_avatar"
+                android:textColor="@android:color/darker_gray"
+                android:textSize="14sp" />
+        </RelativeLayout>
+
+        <!-- VIP会员卡片 - 减小margin和padding -->
+        <androidx.cardview.widget.CardView
+            android:id="@+id/card_vip"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="16dp"
-            android:paddingHorizontal="16dp"
-            android:paddingVertical="8dp"
-            android:text="功能"
-            android:textColor="@android:color/darker_gray"
-            android:textSize="14sp"
-            android:textStyle="bold" />
+            android:layout_marginHorizontal="12dp"
+            android:layout_marginVertical="8dp"
+            app:cardCornerRadius="8dp"
+            app:cardElevation="4dp">
 
-        <!-- 设置选项 -->
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@android:color/black"
+                android:orientation="horizontal"
+                android:padding="12dp">
 
-            <!-- 设置提醒 -->
-            <RelativeLayout
-                android:id="@+id/settings_reminder"
-                style="@style/SettingsItem"
-                android:padding="16dp">
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical">
 
-                <TextView
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="VIP会员"
+                        android:textColor="#B8741A"
+                        android:textSize="18sp"
+                        android:textStyle="bold" />
+
+                    <TextView
+                        android:id="@+id/tv_vip_expire"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:textColor="#FFD700"
+                        android:textSize="14sp" />
+                </LinearLayout>
+
+                <Button
+                    android:id="@+id/btn_renew"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="设置提醒"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+                    android:backgroundTint="#7A441E"
+                    android:text="立即续费"
+                    android:textColor="#FFFFFF" />
+            </LinearLayout>
+        </androidx.cardview.widget.CardView>
+
+        <!-- 功能区域标题 - 调整margin -->
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_columnSpan="4"
+            android:layout_marginStart="12dp"
+            android:layout_marginTop="12dp"
+            android:layout_marginBottom="4dp"
+            android:text="功能"
+            android:textColor="#333333"
+            android:textSize="15sp"
+            android:textStyle="bold" />
+
+        <!-- 功能图标网格 - 减小padding和调整间距 -->
+        <GridLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:columnCount="4"
+            android:paddingHorizontal="8dp"
+            android:paddingVertical="4dp">
+
+            <!-- 设置提醒 -->
+            <LinearLayout
+                android:id="@+id/layout_reminder"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_set_reminder" />
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="设置提醒" />
+            </LinearLayout>
 
-            <!-- 设置其他提醒 暂时不需要 -->
-<!--            <RelativeLayout-->
-<!--                android:id="@+id/settings_reminder_other"-->
-<!--                style="@style/SettingsItem"-->
-<!--                android:padding="16dp">-->
+            <!-- 待办 -->
+            <LinearLayout
+                android:id="@+id/layout_todo"
+                style="@style/FunctionIconStyle">
 
-<!--                <TextView-->
-<!--                    android:layout_width="wrap_content"-->
-<!--                    android:layout_height="wrap_content"-->
-<!--                    android:layout_centerVertical="true"-->
-<!--                    android:text="设置其他提醒"-->
-<!--                    android:textColor="@android:color/black"-->
-<!--                    android:textSize="16sp" />-->
+                <ImageView
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_wait_todo" />
 
-<!--                <ImageView-->
-<!--                    android:layout_width="24dp"-->
-<!--                    android:layout_height="24dp"-->
-<!--                    android:layout_alignParentEnd="true"-->
-<!--                    android:layout_centerVertical="true"-->
-<!--                    android:src="@drawable/right_forward" />-->
-<!--            </RelativeLayout>-->
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="待办" />
+            </LinearLayout>
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
+            <!-- 好友邀请 -->
+            <LinearLayout
+                android:id="@+id/layout_invite"
+                style="@style/FunctionIconStyle">
 
-            <!-- 联系与反馈 -->
+                <ImageView
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_friend_invitation" />
+
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="好友邀请" />
+            </LinearLayout>
+
+            <!-- AI助手 -->
+            <LinearLayout
+                android:id="@+id/layout_ai"
+                style="@style/FunctionIconStyle">
+
+                <ImageView
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_ai_assistant" />
+
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="AI助手" />
+            </LinearLayout>
+
+            <!-- 离线模式 -->
+            <LinearLayout
+                android:id="@+id/layout_offline"
+                style="@style/FunctionIconStyle">
+
+                <ImageView
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_offline_mode" />
+
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="离线模式" />
+            </LinearLayout>
+
+            <!-- 联系与反馈标题 - 调整margin -->
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="16dp"
-                android:paddingHorizontal="16dp"
-                android:paddingVertical="8dp"
+                android:layout_columnSpan="4"
+                android:layout_marginStart="12dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginBottom="4dp"
                 android:text="联系与反馈"
-                android:textColor="@android:color/darker_gray"
-                android:textSize="14sp"
+                android:textColor="#333333"
+                android:textSize="15sp"
                 android:textStyle="bold" />
 
             <!-- 关于小红书 -->
-            <RelativeLayout
-                android:id="@+id/about_app"
-                style="@style/SettingsItem"
-                android:padding="16dp">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="关于小红书"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+            <LinearLayout
+                android:id="@+id/layout_about"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_xiaohongshu" />
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="关于小红书" />
+            </LinearLayout>
 
             <!-- 邮件联系 -->
-            <RelativeLayout
-                android:id="@+id/email_contact"
-                style="@style/SettingsItem"
-                android:padding="16dp">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="邮件联系"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+            <LinearLayout
+                android:id="@+id/layout_email"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_email" />
 
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="邮件联系" />
+            </LinearLayout>
 
             <!-- 意见与反馈 -->
-            <RelativeLayout
-                android:id="@+id/feedback"
-                style="@style/SettingsItem"
-                android:padding="16dp">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="意见与反馈"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+            <LinearLayout
+                android:id="@+id/layout_feedback"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
-
-            <!-- 分享给好友 -->
-            <RelativeLayout
-                android:id="@+id/share_to_friends"
-                style="@style/SettingsItem"
-                android:padding="16dp">
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_feedback" />
 
                 <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="分享给好友"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+                    style="@style/FunctionTextStyle"
+                    android:text="意见与反馈" />
+            </LinearLayout>
 
-                <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
-
-            <!-- 其他区域标题 -->
+            <!-- 其他标题 - 调整margin -->
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="16dp"
-                android:paddingHorizontal="16dp"
-                android:paddingVertical="8dp"
+                android:layout_columnSpan="4"
+                android:layout_marginStart="12dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginBottom="4dp"
                 android:text="其他"
-                android:textColor="@android:color/darker_gray"
-                android:textSize="14sp"
+                android:textColor="#333333"
+                android:textSize="15sp"
                 android:textStyle="bold" />
 
             <!-- 隐私协议 -->
-            <RelativeLayout
-                android:id="@+id/privacy_policy"
-                style="@style/SettingsItem"
-                android:padding="16dp">
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="隐私协议"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+            <LinearLayout
+                android:id="@+id/layout_privacy"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="0.5dp"
-                android:layout_marginHorizontal="16dp"
-                android:background="#E0E0E0" />
-
-            <!-- 如何使用 -->
-            <RelativeLayout
-                android:id="@+id/how_to_use"
-                style="@style/SettingsItem"
-                android:padding="16dp">
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_privacy" />
 
                 <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_centerVertical="true"
-                    android:text="如何使用"
-                    android:textColor="@android:color/black"
-                    android:textSize="16sp" />
+                    style="@style/FunctionTextStyle"
+                    android:text="隐私协议" />
+            </LinearLayout>
+
+            <!-- 使用教程 -->
+            <LinearLayout
+                android:id="@+id/layout_tutorial"
+                style="@style/FunctionIconStyle">
 
                 <ImageView
-                    android:layout_width="24dp"
-                    android:layout_height="24dp"
-                    android:layout_alignParentEnd="true"
-                    android:layout_centerVertical="true"
-                    android:src="@drawable/right_forward" />
-            </RelativeLayout>
+                    style="@style/FunctionImageStyle"
+                    android:src="@drawable/me_tutorial" />
 
-        </LinearLayout>
+                <TextView
+                    style="@style/FunctionTextStyle"
+                    android:text="使用教程" />
+            </LinearLayout>
+
+        </GridLayout>
+
+        <!-- 底部间距缩小 -->
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="8dp" />
 
     </LinearLayout>
 </ScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index e08b4e9..b325d99 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,4 +17,33 @@
         <item name="android:background">@color/black_overlay</item>
         <item name="android:buttonBarStyle">?android:attr/buttonBarStyle</item>
     </style>
+
+    <!-- 功能图标样式 -->
+    <style name="FunctionIconStyle">
+        <item name="android:layout_width">0dp</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_columnWeight">1</item>
+        <item name="android:gravity">center</item>
+        <item name="android:orientation">vertical</item>
+        <item name="android:padding">8dp</item>
+    </style>
+
+    <style name="FunctionImageStyle">
+        <item name="android:layout_width">50dp</item>
+        <item name="android:layout_height">50dp</item>
+        <item name="android:padding">6dp</item>
+    </style>
+
+    <style name="FunctionTextStyle">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginTop">2dp</item>
+        <item name="android:textSize">11sp</item>
+        <item name="android:textColor">@android:color/black</item>
+    </style>
+
+    <style name="CircleImageView">
+        <item name="cornerFamily">rounded</item>
+        <item name="cornerSize">50%</item>
+    </style>
 </resources>

--
Gitblit v1.9.3