Skip to content

Commit fb66fc0

Browse files
authored
Merge pull request #1497 from BCSDLab/feature/1496-main-bottom-navigation-skeleton
[Feature] 홈화면 리디자인 Bottom Navigation Skeleton 구현
2 parents 274b1a3 + b34891c commit fb66fc0

17 files changed

Lines changed: 339 additions & 2 deletions

koin/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@
101101
</intent-filter>
102102
</activity>
103103

104+
<activity
105+
android:name=".ui.newmain.NewMainActivity"
106+
android:exported="false"
107+
android:label="@string/app_name"
108+
android:theme="@style/KAPTheme.NoActionBar">
109+
</activity>
110+
104111
<meta-data
105112
android:name="com.naver.maps.map.NCP_KEY_ID"
106113
android:value="${naverMapKey}" />
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package `in`.koreatech.koin.ui.newmain
2+
3+
import android.os.Bundle
4+
import androidx.appcompat.app.AppCompatActivity
5+
import androidx.core.graphics.Insets
6+
import androidx.core.view.ViewCompat
7+
import androidx.core.view.WindowInsetsCompat
8+
import androidx.core.view.updatePadding
9+
import androidx.navigation.fragment.NavHostFragment
10+
import androidx.navigation.ui.setupWithNavController
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import `in`.koreatech.koin.core.designsystem.util.enableEdgeToEdgeWithLightStatusBar
13+
import `in`.koreatech.koin.databinding.ActivityNewMainBinding
14+
15+
@AndroidEntryPoint
16+
class NewMainActivity : AppCompatActivity() {
17+
18+
private lateinit var binding: ActivityNewMainBinding
19+
override fun onCreate(savedInstanceState: Bundle?) {
20+
enableEdgeToEdgeWithLightStatusBar()
21+
super.onCreate(savedInstanceState)
22+
binding = ActivityNewMainBinding.inflate(layoutInflater)
23+
setContentView(binding.root)
24+
25+
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, insets ->
26+
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
27+
28+
view.updatePadding(
29+
left = systemBars.left,
30+
right = systemBars.right,
31+
top = systemBars.top,
32+
bottom = systemBars.bottom
33+
)
34+
35+
WindowInsetsCompat.Builder(insets)
36+
.setInsets(WindowInsetsCompat.Type.systemBars(), Insets.NONE)
37+
.build()
38+
}
39+
40+
val navHostFragment = supportFragmentManager.findFragmentById(binding.navHostFragmentMain.id) as NavHostFragment
41+
val navController = navHostFragment.navController
42+
43+
binding.bottomNavigationMain.setupWithNavController(navController)
44+
}
45+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package `in`.koreatech.koin.ui.newmain.fragment
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.material3.Text
8+
import androidx.compose.ui.platform.ComposeView
9+
import androidx.compose.ui.platform.ViewCompositionStrategy
10+
import androidx.fragment.app.Fragment
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import `in`.koreatech.koin.core.designsystem.theme.RebrandKoinTheme
13+
14+
@AndroidEntryPoint
15+
class ArticleFragment : Fragment() {
16+
override fun onCreateView(
17+
inflater: LayoutInflater,
18+
container: ViewGroup?,
19+
savedInstanceState: Bundle?
20+
): View {
21+
return ComposeView(requireContext()).apply {
22+
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
23+
setContent {
24+
RebrandKoinTheme {
25+
Text("Article")
26+
}
27+
}
28+
}
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package `in`.koreatech.koin.ui.newmain.fragment
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.material3.Text
8+
import androidx.compose.ui.platform.ComposeView
9+
import androidx.compose.ui.platform.ViewCompositionStrategy
10+
import androidx.fragment.app.Fragment
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import `in`.koreatech.koin.core.designsystem.theme.RebrandKoinTheme
13+
14+
@AndroidEntryPoint
15+
class CategoryFragment : Fragment() {
16+
override fun onCreateView(
17+
inflater: LayoutInflater,
18+
container: ViewGroup?,
19+
savedInstanceState: Bundle?
20+
): View {
21+
return ComposeView(requireContext()).apply {
22+
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
23+
setContent {
24+
RebrandKoinTheme {
25+
Text("Category")
26+
}
27+
}
28+
}
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package `in`.koreatech.koin.ui.newmain.fragment
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.material3.Text
8+
import androidx.compose.ui.platform.ComposeView
9+
import androidx.compose.ui.platform.ViewCompositionStrategy
10+
import androidx.fragment.app.Fragment
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import `in`.koreatech.koin.core.designsystem.theme.RebrandKoinTheme
13+
14+
@AndroidEntryPoint
15+
class HomeFragment : Fragment() {
16+
override fun onCreateView(
17+
inflater: LayoutInflater,
18+
container: ViewGroup?,
19+
savedInstanceState: Bundle?
20+
): View {
21+
return ComposeView(requireContext()).apply {
22+
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
23+
setContent {
24+
RebrandKoinTheme {
25+
Text("Home")
26+
}
27+
}
28+
}
29+
}
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package `in`.koreatech.koin.ui.newmain.fragment
2+
3+
import android.os.Bundle
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import androidx.compose.material3.Text
8+
import androidx.compose.ui.platform.ComposeView
9+
import androidx.compose.ui.platform.ViewCompositionStrategy
10+
import androidx.fragment.app.Fragment
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import `in`.koreatech.koin.core.designsystem.theme.RebrandKoinTheme
13+
14+
@AndroidEntryPoint
15+
class ProfileFragment : Fragment() {
16+
override fun onCreateView(
17+
inflater: LayoutInflater,
18+
container: ViewGroup?,
19+
savedInstanceState: Bundle?
20+
): View {
21+
return ComposeView(requireContext()).apply {
22+
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
23+
setContent {
24+
RebrandKoinTheme {
25+
Text("Profile")
26+
}
27+
}
28+
}
29+
}
30+
}

koin/src/main/java/in/koreatech/koin/ui/splash/SplashActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import `in`.koreatech.koin.domain.state.version.VersionUpdatePriority
3838
import `in`.koreatech.koin.feature.article.ArticleActivity
3939
import `in`.koreatech.koin.feature.lostandfound.ui.LostAndFoundActivity
4040
import `in`.koreatech.koin.ui.forceupdate.ForceUpdateActivity
41-
import `in`.koreatech.koin.ui.main.activity.MainActivity
41+
import `in`.koreatech.koin.ui.newmain.NewMainActivity
4242
import `in`.koreatech.koin.ui.splash.state.TokenState
4343
import `in`.koreatech.koin.ui.splash.viewmodel.SplashViewModel
4444
import `in`.koreatech.koin.util.FirebasePerformanceUtil
@@ -264,7 +264,7 @@ class SplashActivity : ActivityBase() {
264264
Pair(EXTRA_POST_ID, targetPostId)
265265
)
266266
} else {
267-
Intent(this@SplashActivity, MainActivity::class.java)
267+
Intent(this@SplashActivity, NewMainActivity::class.java)
268268
}
269269

270270
startActivity(intent)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:state_checked="true" android:color="#980AC9" />
4+
<item android:state_checked="false" android:color="#1F1F1F" />
5+
</selector>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
3+
<solid android:color="#FFFFFF" />
4+
<corners android:topLeftRadius="16dp" android:topRightRadius="16dp" />
5+
</shape>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:pathData="M7.996,15H11.425M7.996,11H15.996M14.496,2H9.496C9.098,2 8.717,2.158 8.435,2.439C8.154,2.721 7.996,3.102 7.996,3.5C7.996,3.898 8.154,4.279 8.435,4.561C8.717,4.842 9.098,5 9.496,5H14.496C14.894,5 15.275,4.842 15.557,4.561C15.838,4.279 15.996,3.898 15.996,3.5C15.996,3.102 15.838,2.721 15.557,2.439C15.275,2.158 14.894,2 14.496,2Z"
8+
android:strokeLineJoin="round"
9+
android:strokeWidth="1.5"
10+
android:fillColor="#00000000"
11+
android:strokeColor="#1F1F1F"
12+
android:strokeLineCap="round"/>
13+
<path
14+
android:pathData="M15.996,3.5C17.55,3.547 18.476,3.72 19.117,4.362C19.997,5.24 19.997,6.655 19.997,9.482V16C19.997,18.828 19.997,20.242 19.117,21.121C18.239,22 16.824,22 13.997,22H9.997C7.167,22 5.753,22 4.875,21.121C3.997,20.242 3.996,18.828 3.996,16V9.483C3.996,6.655 3.996,5.24 4.875,4.362C5.516,3.72 6.443,3.547 7.996,3.5"
15+
android:strokeLineJoin="round"
16+
android:strokeWidth="1.5"
17+
android:fillColor="#00000000"
18+
android:strokeColor="#1F1F1F"
19+
android:strokeLineCap="round"/>
20+
</vector>

0 commit comments

Comments
 (0)