Kaynağa Gözat

add(index): add index page

zhaoyadi 2 yıl önce
ebeveyn
işleme
8646d129aa
52 değiştirilmiş dosya ile 965 ekleme ve 101 silme
  1. 2 0
      app/src/main/java/com/zaojiao/app/LJGApplication.kt
  2. 3 1
      app/src/main/java/com/zaojiao/app/base/BaseActivity.kt
  3. 3 0
      app/src/main/java/com/zaojiao/app/ui/home/HomeActivity.kt
  4. 3 18
      app/src/main/java/com/zaojiao/app/ui/home/HomeIndexFragment.kt
  5. 0 6
      app/src/main/res/layout/include_person_enagage.xml
  6. 0 39
      app/src/main/res/layout/include_person_info.xml
  7. BIN
      app/src/main/res/mipmap-xhdpi/ic_cart.png
  8. BIN
      app/src/main/res/mipmap-xhdpi/ic_message.png
  9. BIN
      app/src/main/res/mipmap-xhdpi/ic_qrcode.png
  10. BIN
      app/src/main/res/mipmap-xxhdpi/ic_cart.png
  11. BIN
      app/src/main/res/mipmap-xxhdpi/ic_message.png
  12. BIN
      app/src/main/res/mipmap-xxhdpi/ic_qrcode.png
  13. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_cart.png
  14. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_message.png
  15. BIN
      app/src/main/res/mipmap-xxxhdpi/ic_qrcode.png
  16. 1 1
      app/src/main/res/navigation/nav_home_graph.xml
  17. 15 0
      data/repo/src/main/kotlin/com/zaojiao/app/data/repo/RepoModule.kt
  18. 109 0
      feat/common/src/main/java/com/zaojiao/component/common/Lazys.kt
  19. 5 4
      feat/common/src/main/java/com/zaojiao/component/common/Shadow.kt
  20. 13 3
      feat/common/src/main/java/com/zaojiao/component/common/Spacer.kt
  21. 1 1
      feat/common/src/main/java/com/zaojiao/component/common/Swiper.kt
  22. 22 2
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/course/HomeCoursePage.kt
  23. 1 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/course/HomeCourseTopBar.kt
  24. 78 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexActionBar.kt
  25. 71 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexAudio.kt
  26. 156 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexCourse.kt
  27. 162 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexGood.kt
  28. 83 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexPage.kt
  29. 33 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexSwiper.kt
  30. 33 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexSwiper2.kt
  31. 22 24
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexTopBar.kt
  32. 147 0
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexTopic.kt
  33. 1 1
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/personal/HomePersonalTopBar.kt
  34. 1 1
      feat/home/src/main/kotlin/com/zaojiao/app/feat/home/personal/HomePersonalUserBar.kt
  35. 0 0
      feat/home/src/main/res/mipmap-xhdpi/default_avatar.png
  36. BIN
      feat/home/src/main/res/mipmap-xhdpi/ic_default_avatar.png
  37. BIN
      feat/home/src/main/res/mipmap-xhdpi/index_actions.png
  38. 0 0
      feat/home/src/main/res/mipmap-xhdpi/index_qrcode.png
  39. 0 0
      feat/home/src/main/res/mipmap-xhdpi/index_search.png
  40. 0 0
      feat/home/src/main/res/mipmap-xhdpi/index_signup.png
  41. 0 0
      feat/home/src/main/res/mipmap-xxhdpi/default_avatar.png
  42. BIN
      feat/home/src/main/res/mipmap-xxhdpi/ic_default_avatar.png
  43. BIN
      feat/home/src/main/res/mipmap-xxhdpi/index_actions.png
  44. 0 0
      feat/home/src/main/res/mipmap-xxhdpi/index_qrcode.png
  45. 0 0
      feat/home/src/main/res/mipmap-xxhdpi/index_search.png
  46. 0 0
      feat/home/src/main/res/mipmap-xxhdpi/index_signup.png
  47. 0 0
      feat/home/src/main/res/mipmap-xxxhdpi/default_avatar.png
  48. BIN
      feat/home/src/main/res/mipmap-xxxhdpi/ic_default_avatar.png
  49. BIN
      feat/home/src/main/res/mipmap-xxxhdpi/index_actions.png
  50. 0 0
      feat/home/src/main/res/mipmap-xxxhdpi/index_qrcode.png
  51. 0 0
      feat/home/src/main/res/mipmap-xxxhdpi/index_search.png
  52. 0 0
      feat/home/src/main/res/mipmap-xxxhdpi/index_signup.png

+ 2 - 0
app/src/main/java/com/zaojiao/app/LJGApplication.kt

@@ -4,10 +4,12 @@ import android.app.Application
 import coil.ImageLoader
 import coil.ImageLoaderFactory
 import dagger.hilt.android.HiltAndroidApp
+import javax.inject.Inject
 import javax.inject.Provider
 
 @HiltAndroidApp
 class LJGApplication : Application(), ImageLoaderFactory {
+    @Inject
     lateinit var imageLoader: Provider<ImageLoader>
 
     override fun newImageLoader(): ImageLoader = imageLoader.get()

+ 3 - 1
app/src/main/java/com/zaojiao/app/base/BaseActivity.kt

@@ -10,9 +10,11 @@ import androidx.core.view.WindowCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.WindowInsetsControllerCompat
 
-abstract class BaseActivity(@LayoutRes val layoutId: Int? = null) : AppCompatActivity() {
+abstract class BaseActivity() : AppCompatActivity() {
     private lateinit var windowInsetsController: WindowInsetsControllerCompat
 
+    @LayoutRes
+    protected var layoutId: Int? = null
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         configureSystemBar()

+ 3 - 0
app/src/main/java/com/zaojiao/app/ui/home/HomeActivity.kt

@@ -9,10 +9,13 @@ import com.zaojiao.app.R
 import com.zaojiao.app.base.BaseActivity
 import com.zaojiao.app.databinding.ActivityHomeBinding
 import com.zaojiao.app.ui.login.LoginActivity
+import dagger.hilt.android.AndroidEntryPoint
 
+@AndroidEntryPoint
 class HomeActivity : BaseActivity() {
     private var _binding: ActivityHomeBinding? = null
     private val binding get() = _binding!!
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 

+ 3 - 18
app/src/main/java/com/zaojiao/app/ui/home/HomeMainFragment.kt → app/src/main/java/com/zaojiao/app/ui/home/HomeIndexFragment.kt

@@ -4,15 +4,12 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.ComposeView
 import androidx.fragment.app.Fragment
 import com.zaojiao.app.R
-import com.zaojiao.app.ui.home.main.HomeMainSlider
-import com.zaojiao.app.ui.home.main.HomeMainTopBar
+import com.zaojiao.app.feat.home.index.HomeIndexPage
 
-class HomeMainFragment : Fragment() {
+class HomeIndexFragment : Fragment() {
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -24,19 +21,7 @@ class HomeMainFragment : Fragment() {
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
         if (view is ComposeView) {
-            view.setContent {
-                LazyColumn(
-                    modifier = Modifier
-                ) {
-                    item {
-                        HomeMainTopBar()
-                    }
-
-                    item {
-                        HomeMainSlider()
-                    }
-                }
-            }
+            view.setContent { HomeIndexPage() }
         }
     }
 }

+ 0 - 6
app/src/main/res/layout/include_person_enagage.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 39
app/src/main/res/layout/include_person_info.xml

@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="70dp">
-
-    <androidx.appcompat.widget.AppCompatImageView
-        android:id="@+id/person_avatar"
-        android:layout_width="70dp"
-        android:layout_height="70dp"
-        android:src="@mipmap/personal_qrcode" />
-
-    <View
-        android:layout_width="12dp"
-        android:layout_height="match_parent" />
-
-    <TextView
-        android:id="@+id/person_name"
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:gravity="center_vertical"
-        android:text="逻辑狗" />
-
-    <androidx.appcompat.widget.LinearLayoutCompat
-        android:id="@+id/person_homepage"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="center_vertical"
-            android:text="个人主页" />
-
-        <View
-            android:layout_width="7dp"
-            android:layout_height="match_parent" />
-    </androidx.appcompat.widget.LinearLayoutCompat>
-</androidx.appcompat.widget.LinearLayoutCompat>

BIN
app/src/main/res/mipmap-xhdpi/ic_cart.png


BIN
app/src/main/res/mipmap-xhdpi/ic_message.png


BIN
app/src/main/res/mipmap-xhdpi/ic_qrcode.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_cart.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_message.png


BIN
app/src/main/res/mipmap-xxhdpi/ic_qrcode.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_cart.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_message.png


BIN
app/src/main/res/mipmap-xxxhdpi/ic_qrcode.png


+ 1 - 1
app/src/main/res/navigation/nav_home_graph.xml

@@ -6,7 +6,7 @@
 
     <fragment
         android:id="@+id/nav_home_main"
-        android:name="com.zaojiao.app.ui.home.HomeMainFragment"
+        android:name="com.zaojiao.app.ui.home.HomeIndexFragment"
         android:label="HomeMainFragment" />
     <fragment
         android:id="@+id/nav_home_course"

+ 15 - 0
data/repo/src/main/kotlin/com/zaojiao/app/data/repo/RepoModule.kt

@@ -0,0 +1,15 @@
+package com.zaojiao.app.data.repo
+
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+
+@Module
+@InstallIn(SingletonComponent::class)
+interface RepoModule {
+    @Binds
+    fun bindsUserRepository(
+        userRepositoryImpl: UserRepositoryImpl,
+    ): UserRepository
+}

+ 109 - 0
feat/common/src/main/java/com/zaojiao/component/common/Lazys.kt

@@ -0,0 +1,109 @@
+package com.zaojiao.component.common
+
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentWidth
+import androidx.compose.foundation.lazy.LazyListScope
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.key
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+
+fun LazyListScope.list(
+    count: Int,
+    itemContent: @Composable (index: Int) -> Unit,
+    itemSeparation: @Composable (index: Int) -> Unit,
+) {
+    val total = count * 2 - 1
+    items(total) { index ->
+        if (index % 2 == 0) {
+            itemContent(index / 2)
+        } else {
+            itemSeparation(index / 2)
+        }
+    }
+}
+
+fun LazyListScope.grid(
+    count: Int,
+    span: Int,
+    hSpace: Dp = 0.dp,
+    vSpace: Dp = 0.dp,
+    isVertical: Boolean,
+    padding: Dp = 0.dp,
+    itemContent: @Composable (index: Int) -> Unit,
+) {
+    val gridCount = (count + span - 1) / span
+
+    val mainTotal = gridCount * 2 - 1
+    val crossTotal = span * 2 - 1
+
+    for (i in 0 until mainTotal) {
+        if (i % 2 == 0) {
+            item {
+                if (isVertical) {
+                    Row(
+                        modifier = Modifier
+                            .padding(horizontal = padding)
+                            .wrapContentHeight()
+                            .fillMaxWidth(),
+                    ) {
+                        for (j in 0 until crossTotal) {
+                            if (j % 2 == 0) {
+                                val index = (i / 2) * span + j / 2
+                                Box(
+                                    modifier = Modifier.weight(1f, fill = true),
+                                    propagateMinConstraints = true,
+                                ) {
+                                    itemContent(index)
+                                }
+                            } else {
+                                Box(modifier = Modifier.width(hSpace))
+                            }
+                        }
+                    }
+                } else {
+                    Column(
+                        modifier = Modifier
+                            .padding(vertical = padding)
+                            .wrapContentWidth()
+                            .fillMaxHeight(),
+                    ) {
+                        for (j in 0 until crossTotal) {
+                            if (j % 2 == 0) {
+                                val index = (i / 2) * span + j / 2
+                                Box(
+                                    modifier = Modifier.weight(1f, fill = true),
+                                    propagateMinConstraints = true
+                                ) {
+                                    itemContent(index)
+                                }
+                            } else {
+                                Box(modifier = Modifier.height(vSpace))
+                            }
+                        }
+                    }
+
+                }
+            }
+        } else {
+            item {
+                if (isVertical) {
+                    Box(modifier = Modifier.height(vSpace))
+                } else {
+                    Box(modifier = Modifier.width(hSpace))
+                }
+            }
+        }
+    }
+}

+ 5 - 4
feat/common/src/main/java/com/zaojiao/component/common/Shadow.kt

@@ -16,6 +16,7 @@ fun Modifier.shadow(
     offsetY: Dp = 0.dp,
     blurRadius: Dp = 0.dp,
     shadowRadius: Dp = 0.dp,
+    spreadSize: Dp = 0.dp,
 ) = then(
     drawBehind {
         drawIntoCanvas { canvas ->
@@ -27,10 +28,10 @@ fun Modifier.shadow(
             }
             frameworkPaint.color = color.toArgb()
 
-            val leftPixel = offsetX.toPx()
-            val topPixel = offsetY.toPx()
-            val rightPixel = size.width + topPixel
-            val bottomPixel = size.height + leftPixel
+            val leftPixel = (offsetX - spreadSize).toPx()
+            val topPixel = (offsetY - spreadSize).toPx()
+            val rightPixel = size.width + topPixel + spreadSize.toPx()
+            val bottomPixel = size.height + leftPixel + spreadSize.toPx()
 
             canvas.drawRoundRect(
                 left = leftPixel,

+ 13 - 3
feat/common/src/main/java/com/zaojiao/component/common/Spacer.kt

@@ -9,12 +9,22 @@ import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.unit.Dp
 
+@Composable
+fun RowScope.Spacer(width: Dp) {
+    return Box(modifier = Modifier.width(width))
+}
+
 @Composable
 fun ColumnScope.Spacer(height: Dp) {
     return Box(modifier = Modifier.height(height))
 }
 
 @Composable
-fun RowScope.Spacer(width: Dp) {
-    return Box(modifier = Modifier.width(width))
-}
+fun RowScope.Expanded(flex: Float = 1f) {
+    return Box(modifier = Modifier.weight(flex))
+}
+
+@Composable
+fun ColumnScope.Expanded(flex: Float = 1f) {
+    return Box(modifier = Modifier.weight(flex))
+}

+ 1 - 1
feat/common/src/main/java/com/zaojiao/component/common/Swiper.kt

@@ -70,7 +70,7 @@ fun <T> LJGBanner(
     HorizontalPager(
         pageCount = Int.MAX_VALUE,
         state = state,
-        pageSpacing = 16.dp,
+        pageSpacing = 0.dp,
         modifier = modifier,
     ) { index ->
         val actualIndex = index % data.size

+ 22 - 2
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/course/HomeCoursePage.kt

@@ -1,15 +1,21 @@
 package com.zaojiao.app.feat.home.course
 
 import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.material3.Surface
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.unit.dp
 import com.zaojiao.component.common.PageState
+import com.zaojiao.component.common.Spacer
 import com.zaojiao.component.common.StatePage
+import com.zaojiao.component.common.grid
 
 @OptIn(ExperimentalFoundationApi::class)
 @Composable
@@ -42,8 +48,22 @@ fun HomeCoursePage() {
                     HomeCourseGroupBuy()
                 }
 
-                item {
-                    HomeCourseRecommend()
+                grid(
+                    count = 100,
+                    span = 2,
+                    hSpace = 12.dp,
+                    vSpace = 20.dp,
+                    padding = 16.dp,
+                    isVertical = true,
+                ) {
+                    Column(
+                        modifier = Modifier
+                            .background(color = Color.Red)
+                            .wrapContentHeight()
+                            .fillMaxWidth()
+                    ) {
+                        Spacer(height = 200.dp)
+                    }
                 }
             }
         }

+ 1 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/course/HomeCourseTopBar.kt

@@ -29,6 +29,7 @@ import com.zaojiao.component.common.Spacer
 internal fun HomeCourseTopBar() {
     Row(
         modifier = Modifier
+            .background(color = Color.White)
             .statusBarsPadding()
             .padding(horizontal = 16.dp, vertical = 14.dp)
             .height(34.dp)

+ 78 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexActionBar.kt

@@ -0,0 +1,78 @@
+package com.zaojiao.app.feat.home.index
+
+import android.util.Log
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+import com.zaojiao.app.feat.home.R
+
+@Composable
+fun HomeIndexActionBar() {
+    Box(
+        modifier = Modifier
+            .padding(vertical = 10.dp)
+            .aspectRatio(375f / 170f)
+            .fillMaxSize()
+    ) {
+        Image(
+            painter = painterResource(id = R.mipmap.index_actions),
+            contentDescription = "首页按钮区",
+            modifier = Modifier.fillMaxSize(),
+            contentScale = ContentScale.Fit,
+        )
+        Row(
+            modifier = Modifier
+                .padding(horizontal = 16.dp)
+                .fillMaxSize(),
+        ) {
+            Box(
+                modifier = Modifier
+                    .clickable {
+                        Log.d("xxxxxxx", "HomeIndexActionBar: 逻辑狗游戏中心")
+                    }
+                    .weight(1f)
+                    .fillMaxHeight()
+            )
+            Box(
+                modifier = Modifier
+                    .weight(1f)
+                    .fillMaxHeight()
+            ) {
+                Column(
+                    modifier = Modifier.fillMaxSize()
+                ) {
+                    Box(
+                        modifier = Modifier
+                            .clickable {
+                                Log.d("xxxxxxx", "HomeIndexActionBar: 爆款专区")
+                            }
+                            .weight(1f)
+                            .fillMaxWidth()
+                    )
+                    Box(
+                        modifier = Modifier
+                            .clickable {
+                                Log.d("xxxxxxx", "HomeIndexActionBar: 商城中心")
+                            }
+                            .weight(1f)
+                            .fillMaxWidth()
+                    )
+                }
+            }
+        }
+    }
+}

+ 71 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexAudio.kt

@@ -0,0 +1,71 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.zaojiao.component.common.Colors
+import com.zaojiao.component.common.Expanded
+import com.zaojiao.component.common.Icons
+import com.zaojiao.component.common.Spacer
+
+@Composable
+fun HomeIndexAudio() {
+    Column(
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 20.dp)
+            .wrapContentHeight()
+            .fillMaxWidth()
+    ) {
+        HomeIndexAudioTitle()
+    }
+}
+
+
+@Composable
+fun HomeIndexAudioTitle() {
+    Row(
+        modifier = Modifier.wrapContentHeight(),
+        verticalAlignment = Alignment.CenterVertically,
+    ) {
+
+        Text(
+            text = "逻辑狗知听",
+            style = TextStyle(
+                fontSize = 18.sp,
+                lineHeight = 18.sp,
+                fontWeight = FontWeight.SemiBold,
+                color = Colors.FF333333,
+            ),
+        )
+
+        Expanded()
+
+        Text(
+            text = "更多",
+            style = TextStyle(
+                fontSize = 12.sp,
+                lineHeight = 16.sp,
+                fontWeight = FontWeight.Normal,
+                color = Colors.FF999999,
+            ),
+        )
+        Spacer(width = 4.dp)
+
+        Icons.Forward(
+            size = Size(3.6f, 6f),
+            color = Colors.FF999999,
+            width = 0.5.dp,
+        )
+    }
+}

+ 156 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexCourse.kt

@@ -0,0 +1,156 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.zaojiao.app.feat.home.R
+import com.zaojiao.component.common.Colors
+import com.zaojiao.component.common.Expanded
+import com.zaojiao.component.common.Icons
+import com.zaojiao.component.common.Spacer
+import com.zaojiao.component.common.shadow
+
+@Composable
+fun HomeIndexCourse() {
+    Column(
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 20.dp)
+            .wrapContentHeight()
+            .fillMaxWidth()
+    ) {
+        HomeIndexCourseTitle()
+    }
+}
+
+@Composable
+fun HomeIndexCourseTitle() {
+    Row(
+        modifier = Modifier.wrapContentHeight(),
+        verticalAlignment = Alignment.CenterVertically,
+    ) {
+
+        Text(
+            text = "好课榜单",
+            style = TextStyle(
+                fontSize = 18.sp,
+                lineHeight = 18.sp,
+                fontWeight = FontWeight.SemiBold,
+                color = Colors.FF333333,
+            ),
+        )
+
+        Expanded()
+
+        Text(
+            text = "更多",
+            style = TextStyle(
+                fontSize = 12.sp,
+                lineHeight = 16.sp,
+                fontWeight = FontWeight.Normal,
+                color = Colors.FF999999,
+            ),
+        )
+        Spacer(width = 4.dp)
+
+        Icons.Forward(
+            size = Size(3.6f, 6f),
+            color = Colors.FF999999,
+            width = 0.5.dp,
+        )
+    }
+}
+
+@Composable
+fun HomeIndexCourseRecommendItem() {
+    Box(
+        modifier = Modifier
+            .padding(horizontal = 8.dp)
+            .clip(RoundedCornerShape(20.dp))
+            .shadow(
+                color = Colors.from("#99E7EDF1"),
+                offsetY = 4.dp,
+                blurRadius = 19.dp,
+                spreadSize = 4.dp,
+            )
+            .background(color = Color.White)
+            .padding(12.dp)
+            .wrapContentHeight()
+            .fillMaxWidth(),
+    ) {
+        Row(
+            modifier = Modifier.fillMaxWidth()
+        ) {
+            Image(
+                painter = painterResource(id = R.mipmap.default_avatar),
+                contentDescription = "课程封面",
+                contentScale = ContentScale.Crop,
+                modifier = Modifier
+                    .clip(RoundedCornerShape(10.dp))
+                    .size(115.dp),
+            )
+            Spacer(width = 12.dp)
+            Column(
+                modifier = Modifier
+                    .weight(1f)
+                    .height(115.dp),
+                horizontalAlignment = Alignment.Start,
+            ) {
+                Text(
+                    text = "逻辑狗好盆友逻辑狗好辑狗好盆友逻辑狗好辑狗好盆友逻辑狗好",
+                    maxLines = 1,
+                    overflow = TextOverflow.Ellipsis,
+                    style = TextStyle(
+                        fontSize = 16.sp,
+                        lineHeight = 22.sp,
+                        fontWeight = FontWeight.SemiBold,
+                        color = Colors.FF333333,
+                    ),
+                )
+                Spacer(height = 19.dp)
+                Text(
+                    text = "34万人学过",
+                    style = TextStyle(
+                        fontSize = 12.sp,
+                        lineHeight = 12.sp,
+                        fontWeight = FontWeight.Normal,
+                        color = Colors.FF999999,
+                    ),
+                )
+                Expanded()
+                Text(
+                    text = "免费",
+                    style = TextStyle(
+                        fontSize = 16.sp,
+                        lineHeight = 16.sp,
+                        fontWeight = FontWeight.Medium,
+                        color = Colors.from("#FFFF5749"),
+                    ),
+                )
+                Spacer(height = 6.dp)
+            }
+        }
+    }
+}

+ 162 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexGood.kt

@@ -0,0 +1,162 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.zaojiao.app.feat.home.R
+import com.zaojiao.component.common.Colors
+import com.zaojiao.component.common.Expanded
+import com.zaojiao.component.common.Icons
+import com.zaojiao.component.common.Spacer
+import com.zaojiao.component.common.shadow
+
+@Composable
+fun HomeIndexGood() {
+    Column(
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 20.dp)
+            .wrapContentHeight()
+            .fillMaxWidth()
+    ) {
+        HomeIndexGoodTitle()
+    }
+}
+
+@Composable
+fun HomeIndexGoodTitle() {
+    Row(
+        modifier = Modifier.wrapContentHeight(),
+        verticalAlignment = Alignment.CenterVertically,
+    ) {
+
+        Text(
+            text = "提升好物",
+            style = TextStyle(
+                fontSize = 18.sp,
+                lineHeight = 18.sp,
+                fontWeight = FontWeight.SemiBold,
+                color = Colors.FF333333,
+            ),
+        )
+
+        Expanded()
+
+        Text(
+            text = "更多",
+            style = TextStyle(
+                fontSize = 12.sp,
+                lineHeight = 16.sp,
+                fontWeight = FontWeight.Normal,
+                color = Colors.FF999999,
+            ),
+        )
+        Spacer(width = 4.dp)
+
+        Icons.Forward(
+            size = Size(3.6f, 6f),
+            color = Colors.FF999999,
+            width = 0.5.dp,
+        )
+    }
+}
+
+@Composable
+fun HomeIndexGoodRecommendItem() {
+    Column(
+        modifier = Modifier
+            .shadow(
+                color = Colors.from("#99E7EDF1"),
+                offsetY = 4.dp,
+                blurRadius = 19.dp,
+                shadowRadius = 10.dp,
+                spreadSize = 4.dp,
+            )
+            .clip(RoundedCornerShape(10.dp))
+            .background(color = Color.White)
+            .padding(12.dp)
+            .wrapContentHeight()
+            .fillMaxWidth(),
+    ) {
+        Image(
+            painter = painterResource(id = R.mipmap.default_avatar),
+            contentDescription = "课程封面",
+            contentScale = ContentScale.Fit,
+            modifier = Modifier
+                .clip(RoundedCornerShape(10.dp))
+                .size(140.dp),
+        )
+
+        Spacer(height = 12.dp)
+
+        Text(
+            text = "逻辑狗好盆友逻辑狗好狗好狗",
+            style = TextStyle(
+                fontSize = 14.sp,
+                lineHeight = 20.sp,
+                fontWeight = FontWeight.SemiBold,
+                color = Colors.FF333333,
+            ),
+        )
+
+        Spacer(height = 12.dp)
+
+        Row(
+            modifier = Modifier
+                .wrapContentHeight()
+                .fillMaxWidth(),
+            verticalAlignment = Alignment.CenterVertically,
+        ) {
+            Text(
+                text = "¥",
+                style = TextStyle(
+                    fontSize = 10.sp,
+                    lineHeight = 10.sp,
+                    fontWeight = FontWeight.Medium,
+                    color = Colors.from("#FFFF5749"),
+                ),
+                modifier = Modifier.padding(top = 2.dp)
+            )
+            Text(
+                text = "158.0",
+                style = TextStyle(
+                    fontSize = 14.sp,
+                    lineHeight = 14.sp,
+                    fontWeight = FontWeight.Medium,
+                    color = Colors.from("#FFFF5749"),
+                ),
+            )
+
+            Spacer(width = 4.dp)
+
+            Text(
+                text = "¥158.0",
+                style = TextStyle(
+                    fontSize = 10.sp,
+                    lineHeight = 14.sp,
+                    fontWeight = FontWeight.Normal,
+                    color = Colors.FF999999,
+                ),
+            )
+        }
+    }
+}

+ 83 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexPage.kt

@@ -0,0 +1,83 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.unit.dp
+import com.zaojiao.component.common.grid
+import com.zaojiao.component.common.list
+
+@OptIn(ExperimentalFoundationApi::class)
+@Composable
+fun HomeIndexPage() {
+    LazyColumn(
+        modifier = Modifier
+            .background(color = Color(0xFFFBFCFD))
+            .statusBarsPadding()
+            .fillMaxSize(),
+    ) {
+        stickyHeader {
+            HomeIndexTopBar()
+        }
+
+        item {
+            HomeIndexSwiper()
+        }
+
+        item {
+            HomeIndexActionBar()
+        }
+
+        item {
+            HomeIndexSwiper2()
+        }
+
+        item {
+            HomeIndexTopic()
+        }
+
+        item {
+            HomeIndexAudio()
+        }
+
+        item {
+            HomeIndexCourse()
+        }
+
+        list(
+            count = 5,
+            itemContent = { index -> HomeIndexCourseRecommendItem() },
+            itemSeparation = { index -> Box(modifier = Modifier.height(16.dp)) }
+        )
+
+        item {
+            Box(modifier = Modifier.height(20.dp))
+        }
+
+        item {
+            HomeIndexGood()
+        }
+
+        grid(
+            count = 10,
+            span = 2,
+            hSpace = 13.dp,
+            vSpace = 13.dp,
+            padding = 16.dp,
+            isVertical = true,
+        ) { index ->
+            HomeIndexGoodRecommendItem()
+        }
+
+        item {
+            Box(modifier = Modifier.height(40.dp))
+        }
+    }
+}

+ 33 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexSwiper.kt

@@ -0,0 +1,33 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.unit.dp
+import com.zaojiao.component.common.LJGBanner
+
+@OptIn(ExperimentalFoundationApi::class)
+@Composable
+fun HomeIndexSwiper() {
+    LJGBanner(
+        data = listOf(
+            "https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=4198287529,2774471735&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=1956604245,3662848045&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=2529476510,3041785782&fm=193&f=GIF",
+        ),
+        onImagePath = { _, item ->
+            item
+        },
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 10.dp)
+            .aspectRatio(343f / 150f)
+            .clip(RoundedCornerShape(20.dp))
+            .fillMaxWidth()
+    )
+}

+ 33 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexSwiper2.kt

@@ -0,0 +1,33 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.unit.dp
+import com.zaojiao.component.common.LJGBanner
+
+@OptIn(ExperimentalFoundationApi::class)
+@Composable
+fun HomeIndexSwiper2() {
+    LJGBanner(
+        data = listOf(
+            "https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=4198287529,2774471735&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=1956604245,3662848045&fm=193&f=GIF",
+            "https://t7.baidu.com/it/u=2529476510,3041785782&fm=193&f=GIF",
+        ),
+        onImagePath = { _, item ->
+            item
+        },
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 2.dp)
+            .aspectRatio(343f / 70f)
+            .clip(RoundedCornerShape(100.dp))
+            .fillMaxWidth()
+    )
+}

+ 22 - 24
app/src/main/java/com/zaojiao/app/ui/home/main/MainComponents.kt → feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexTopBar.kt

@@ -1,10 +1,11 @@
-package com.zaojiao.app.ui.home.main
+package com.zaojiao.app.feat.home.index
 
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
@@ -29,27 +30,28 @@ import androidx.compose.ui.text.font.FontWeight
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
-import com.zaojiao.app.R
+import com.zaojiao.app.feat.home.R
+import com.zaojiao.component.common.Spacer
 
 @Composable
-fun HomeMainTopBar() {
+fun HomeIndexTopBar() {
     Row(
         modifier = Modifier
-            .padding(top = 24.dp, bottom = 22.dp)
+            .background(color = Color(0xFFFBFCFD))
+            .padding(top = 24.dp, bottom = 10.dp)
             .statusBarsPadding()
             .fillMaxWidth()
-            .height(44.dp)
+            .height(44.dp),
+        verticalAlignment = Alignment.CenterVertically,
     ) {
-        HomeMainTopBarUserInfo()
-        Box(modifier = Modifier.weight(1f)) {
-            HomeMainTopBarSearchBar()
-        }
-        HomeMainTopMainSignupButton()
+        HomeIndexTopBarUserInfo()
+        HomeIndexTopBarSearchBar()
+        HomeIndexTopBarSignupButton()
     }
 }
 
 @Composable
-fun HomeMainTopBarUserInfo() {
+fun HomeIndexTopBarUserInfo() {
     Row(
         modifier = Modifier
             .padding(start = 16.dp)
@@ -62,7 +64,7 @@ fun HomeMainTopBarUserInfo() {
         verticalAlignment = Alignment.CenterVertically,
     ) {
         Image(
-            painter = painterResource(id = R.mipmap.ic_default_avatar),
+            painter = painterResource(id = R.mipmap.default_avatar),
             contentDescription = "这是用户的头像",
             modifier = Modifier
                 .clip(
@@ -101,9 +103,10 @@ fun HomeMainTopBarUserInfo() {
 }
 
 @Composable
-fun HomeMainTopBarSearchBar() {
+fun RowScope.HomeIndexTopBarSearchBar() {
     Row(
         modifier = Modifier
+            .weight(1f)
             .padding(start = 12.dp, end = 12.dp)
             .shadow(
                 elevation = 2.dp,
@@ -119,10 +122,11 @@ fun HomeMainTopBarSearchBar() {
         verticalAlignment = Alignment.CenterVertically,
     ) {
         Image(
-            painter = painterResource(id = R.mipmap.ic_home_search),
+            painter = painterResource(id = R.mipmap.index_search),
             contentDescription = "",
             contentScale = ContentScale.Fit,
         )
+        Spacer(width = 6.dp)
         Text(
             text = "逻辑狗",
             style = TextStyle(
@@ -133,7 +137,7 @@ fun HomeMainTopBarSearchBar() {
             modifier = Modifier.weight(1f),
         )
         Image(
-            painter = painterResource(id = R.mipmap.ic_home_qrcode),
+            painter = painterResource(id = R.mipmap.index_qrcode),
             contentDescription = "",
             contentScale = ContentScale.Fit,
         )
@@ -141,19 +145,13 @@ fun HomeMainTopBarSearchBar() {
 }
 
 @Composable
-fun HomeMainTopMainSignupButton() {
+fun HomeIndexTopBarSignupButton() {
     Image(
-        painter = painterResource(id = R.mipmap.ic_default_avatar),
-        contentDescription = "这是用户的头像",
+        painter = painterResource(id = R.mipmap.index_signup),
+        contentDescription = "签到",
         modifier = Modifier
             .padding(end = 16.dp)
-            .clip(shape = RoundedCornerShape(50))
             .size(44.dp),
         contentScale = ContentScale.Crop,
     )
-}
-
-@Composable
-fun HomeMainSlider() {
-
 }

+ 147 - 0
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/index/HomeIndexTopic.kt

@@ -0,0 +1,147 @@
+package com.zaojiao.app.feat.home.index
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.lazy.LazyRow
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.blur
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.text.TextStyle
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.zaojiao.app.feat.home.R
+import com.zaojiao.component.common.Colors
+import com.zaojiao.component.common.Expanded
+import com.zaojiao.component.common.Icons
+import com.zaojiao.component.common.Spacer
+import com.zaojiao.component.common.list
+
+@Composable
+fun HomeIndexTopic() {
+    Column(
+        modifier = Modifier
+            .padding(horizontal = 16.dp, vertical = 20.dp)
+            .wrapContentHeight()
+            .fillMaxWidth()
+    ) {
+        HomeIndexTopicTitle()
+        Spacer(height = 20.dp)
+        HomeIndexTopicRecommend()
+    }
+}
+
+@Composable
+fun HomeIndexTopicTitle() {
+    Row(
+        modifier = Modifier.wrapContentHeight(),
+        verticalAlignment = Alignment.CenterVertically,
+    ) {
+
+        Text(
+            text = "今日热点",
+            style = TextStyle(
+                fontSize = 18.sp,
+                lineHeight = 18.sp,
+                fontWeight = FontWeight.SemiBold,
+                color = Colors.FF333333,
+            ),
+        )
+
+        Expanded()
+
+        Text(
+            text = "更多",
+            style = TextStyle(
+                fontSize = 12.sp,
+                lineHeight = 16.sp,
+                fontWeight = FontWeight.Normal,
+                color = Colors.FF999999,
+            ),
+        )
+        Spacer(width = 4.dp)
+
+        Icons.Forward(
+            size = Size(3.6f, 6f),
+            color = Colors.FF999999,
+            width = 0.5.dp,
+        )
+    }
+}
+
+@Composable
+fun HomeIndexTopicRecommend() {
+    LazyRow(
+        modifier = Modifier
+            .height(202.dp)
+            .fillMaxWidth(),
+    ) {
+        list(
+            count = 10,
+            itemSeparation = {
+                Box(modifier = Modifier.width(12.dp))
+            },
+            itemContent = {
+                HomeIndexTopicRecommendItem()
+            },
+        )
+    }
+
+}
+
+@Composable
+fun HomeIndexTopicRecommendItem() {
+    Box(
+        modifier = Modifier
+            .clip(RoundedCornerShape(20.dp))
+            .width(152.dp)
+            .fillMaxHeight()
+    ) {
+        Image(
+            painter = painterResource(id = R.mipmap.default_avatar),
+            contentDescription = null,
+            contentScale = ContentScale.Crop,
+            modifier = Modifier
+                .clip(RoundedCornerShape(20.dp))
+                .blur(radius = 20.dp)
+                .fillMaxSize(),
+        )
+
+        Image(
+            painter = painterResource(id = R.mipmap.default_avatar),
+            contentDescription = null,
+            contentScale = ContentScale.Fit,
+            modifier = Modifier
+                .align(Alignment.TopCenter)
+                .fillMaxSize(),
+        )
+
+        Column(
+            modifier = Modifier
+                .align(Alignment.BottomCenter)
+                .clip(RoundedCornerShape(20.dp))
+                .background(color = Colors.from("#CCFFFFFF"))
+                .height(102.dp)
+                .fillMaxWidth()
+        ) {
+
+        }
+    }
+}

+ 1 - 1
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/personal/HomePersonalTopBar.kt

@@ -58,7 +58,7 @@ fun HomePersonalScrollTopBar() {
     ) {
         Spacer(width = 16.dp)
         Image(
-            painter = painterResource(id = R.mipmap.ic_default_avatar),
+            painter = painterResource(id = R.mipmap.default_avatar),
             contentDescription = "用户头像",
             modifier = Modifier.size(30.dp, 30.dp)
         )

+ 1 - 1
feat/home/src/main/kotlin/com/zaojiao/app/feat/home/personal/HomePersonalUserBar.kt

@@ -29,7 +29,7 @@ fun HomePersonalUserBar() {
         verticalAlignment = Alignment.CenterVertically,
     ) {
         Image(
-            painter = painterResource(id = R.mipmap.ic_default_avatar),
+            painter = painterResource(id = R.mipmap.default_avatar),
             contentDescription = "用户头像",
             modifier = Modifier.size(70.dp, 70.dp)
         )

+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_default_avatar.png → feat/home/src/main/res/mipmap-xhdpi/default_avatar.png


BIN
feat/home/src/main/res/mipmap-xhdpi/ic_default_avatar.png


BIN
feat/home/src/main/res/mipmap-xhdpi/index_actions.png


+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_home_qrcode.png → feat/home/src/main/res/mipmap-xhdpi/index_qrcode.png


+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_home_search.png → feat/home/src/main/res/mipmap-xhdpi/index_search.png


+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_home_signup.png → feat/home/src/main/res/mipmap-xhdpi/index_signup.png


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_default_avatar.png → feat/home/src/main/res/mipmap-xxhdpi/default_avatar.png


BIN
feat/home/src/main/res/mipmap-xxhdpi/ic_default_avatar.png


BIN
feat/home/src/main/res/mipmap-xxhdpi/index_actions.png


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_home_qrcode.png → feat/home/src/main/res/mipmap-xxhdpi/index_qrcode.png


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_home_search.png → feat/home/src/main/res/mipmap-xxhdpi/index_search.png


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_home_signup.png → feat/home/src/main/res/mipmap-xxhdpi/index_signup.png


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_default_avatar.png → feat/home/src/main/res/mipmap-xxxhdpi/default_avatar.png


BIN
feat/home/src/main/res/mipmap-xxxhdpi/ic_default_avatar.png


BIN
feat/home/src/main/res/mipmap-xxxhdpi/index_actions.png


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_home_qrcode.png → feat/home/src/main/res/mipmap-xxxhdpi/index_qrcode.png


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_home_search.png → feat/home/src/main/res/mipmap-xxxhdpi/index_search.png


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_home_signup.png → feat/home/src/main/res/mipmap-xxxhdpi/index_signup.png