๐ฑ ์์์ผ Today I Learned (์ง์ค ์๊ฐ: 8์๊ฐ 50๋ถ)
- (10:00 ~ 11:00 / 1์๊ฐ) ์๋ จ ํํ๋ก์ ํธ ๋ฐ์
- (11:00 ~ 13:00 / 2์๊ฐ) ์๋ จ ํํ๋ก์ ํธ SA ์์ฑ ๋ฐ ์ญํ ๋ถ๋ฐฐ
- (14:30 ~ 16:30 / 2์๊ฐ) ํํ๋ก์ ํธ ํ์
- (16:30 ~ 18:10 / 1์๊ฐ 40๋ถ) ํํ๋ก์ ํธ ๊ตฌํ ์์ (ํญ ๋ ์ด์์, UI, ๋ ธ์ ์์ ๋ฑ)
- (18:10 ~ 21:30 / 2์๊ฐ 10๋ถ) ํํ๋ก์ ํธ
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
โ
๐ฑ ํ์์ผ Today I Learned (์ง์ค ์๊ฐ: 11์๊ฐ 0๋ถ)
- (10:00 ~ 13:30 / 3์๊ฐ 30๋ถ) ํํ๋ก์ ํธ
- (14:30 ~ 22:00 / 7์๊ฐ 30๋ถ) ํํ๋ก์ ํธ (UI๊ตฌํ, ํญ๋ ์ด์์ ์ฐ๊ฒฐ, ํ๋กํ ๋ฒํผ ๋ฑ) ๋ฐ ํ์
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
๐ฑ ์์์ผ Today I Learned (์ง์ค ์๊ฐ: 11์๊ฐ 30๋ถ)
- (10:00 ~ 22:30 / 11์๊ฐ 30๋ถ) ํํ๋ก์ ํธ
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
๐ฑ ๋ชฉ์์ผ Today I Learned (์ง์ค ์๊ฐ: 8์๊ฐ 5๋ถ)
- (10:00 ~ 12:50 / 2์๊ฐ 50๋ถ) ํํ๋ก์ ํธ
- (14:00 ~ 21:00 / 6์๊ฐ) ํํ๋ก์ ํธ
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
* ๊ธ์์ผ ๋ฐ ๋ฐํ์ฃผ์ฐจ(์์์ผ) ๊ฐ์ธ์ผ์
1. [์ ์ฒด] ํญ ๋ ์ด์์ ๊ตฌํ
๐จ ๋ทฐํ์ด์ ์ ํญ ๋ ์ด์์ ๋ฐฐ์น ๋ฌธ์
- ๋ด๊ฐ ์ํ๋ ๋ชจ์์ ์ผ์ชฝ๊ณผ ๊ฐ์ด ๋ทฐํ์ด์ ๊ฐ ์ ์ฒดํ๋ฉด์ ์ฐจ์งํ๊ณ , ํญ ๋ ์ด์์์ด ํ๊ณต์ ๋ ์๋ ๋ชจ์์ด๋ค.
- ๊ทธ๋ฌ๋ ์ปจ์คํธ๋ ์ธํธ๋ก ํด๋น ๋ ์ด์์์ ๊ตฌํํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ์์๋ค.
- ํํฐ๋๊ป ์ฌ์ญค๋ณด๋, ํญ๋ ์ด์์์ผ๋ก ์ด๋ฐ ํ๋กํ ํํ๋ฅผ ๊ตฌํํ๋ ๊ฑด ๋ณธ ์ ์ด ์๋ค๊ณ ํ์ จ๋ค. ๋ณดํต์ ๋ด๋น๊ฒ์ด์ ์ด๋ ํ๋กํ ๋ฒํผ์ผ๋ก ์ด์ฉํ๊ณ ... ์ง๊ธ ์ฐ๋ฆฌ ๊ณผ์ ๋จ๊ณ์์ ์๋ ๋ฐฉ์์ธ ํญ๋ ์ด์์์ ์ฐ๊ณ ์๋ ๊ฑฐ๋ผ๊ณ ํ๋ค.
- elevation๊ณผ ๊ฐ์ข ๋ง์ง, ๋ฐฐ์น, ๋ ์ด์์์ผ๋ก ๋๊ฐ ์ ์ฌํ๊ฒ ์ด ์ ๋๋ก ๋ง๋ค์๋ค.
- ๊ทผ๋ฐ ๊ทธ๋ฅ ๋ค์ ์๋ ๋ทฐํ์ด์ ์ ํ๋จ margin์ ์์ ๊ณ , ํญ ๋ ์ด์์์ ๋์ฐ๋ฉด ์๊ฐํ๋๋ก ๊ตฌ์์ด ๊ฐ๋ฅํ๋ค.
- ํญ ๋ ์ด์์์ ํ๊ณต์ ๋์ฐ๊ณ ์๋๊น์ง ์ฐ๋ฝ์ฒ๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ ์์๋ณด๋ค ์์์ง ์์์, ๋ค์ ์๋๋๋ก ๊ตฌํํ๋ค.
๐จ ํญ ๋ ์ด์์ ์ปค์คํ ๋ฌธ์
- ํญ ๋ ์ด์์์ ์ ์ฉํ๊ณ ์ ํ๋ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
(1) ์์ด์ฝ๋ง๋ค์ ์ฌ๋ฐฑ ๊ตฌํ
(2) ํญ๋ ์ด์์์ ์ ์ฒด ๋ฐฐ๊ฒฝ์ ๋๊ทธ๋ ์ด๋ฏธ์ง๋ก ์ค์
(3) ํด๋ฆญ๋ ํ์ฌ ํ๋๊ทธ๋จผํธ ์์ด์ฝ์ ๊ฐ์กฐ ํ์ ๋ฐ ์์ ๋ณ๊ฒฝ / ํด๋ฆญ๋์ง ์์ ํ๋๊ทธ๋จผํธ ํ์ ํ์
(4) ํด๋ฆญํ ๋ ์ ๊น ๋์ค๋ ๋ฒ์ ๋ชจ์ ์์ ๊ธฐ
(1) ์์ด์ฝ๋ง๋ค์ ์ฌ๋ฐฑ ๊ตฌํ
app:tabPaddingStart="16dp" <!-- ์์ด์ฝ๊ณผ ํ
์คํธ ์ฌ์ด์ ์ผ์ชฝ ๊ฐ๊ฒฉ ์ค์ -->
app:tabPaddingEnd="16dp"> <!-- ์์ด์ฝ๊ณผ ํ
์คํธ ์ฌ์ด์ ์ค๋ฅธ์ชฝ ๊ฐ๊ฒฉ ์ค์ -->
- TabLayout์ ๊ฐ TabItem์ layout_margin ์์ฑ์ ์ง์ ์ ์ฉํ ์๋ ์๋ค.
์ด๋ TabLayout๊ฐ ๋ด๋ถ์ ์ผ๋ก TabItem์ ๋ ์ด์์ ์์ฑ์ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์ด๋ค. - ๋์ TabLayout์ tabPadding์ ์ ์ฉ์ํค๋ฉด ๋๋ค.
(2) ํญ๋ ์ด์์์ ์ ์ฒด ๋ฐฐ๊ฒฝ์ ๋๊ทธ๋๊ฒ ์ค์
- radius๋ฅผ ์ค xml์ background๋ก ๋จน์ด๋ฉด ๋๋ค.
- ์ฌ๊ธฐ์์ ๋ฌธ์ ์ ์ด ๋ช ๊ฐ์ง ์์๋๋ฐ, ๋ํ์ ์ผ๋ก Themes.xml์ background ๊ฐ์ ์ค์ ํ๋ฉด ํญ ๋ ์ด์์์ ๋ฐฐ๊ฒฝ ๋ณ๊ฒฝ์ด ์ ๋ ์ ์ฉ๋์ง ์๋๋ค. ์ด ๋ถ๋ถ์ themes.xml์ background๋ฅผ ์ญ์ ํ๋ ๋์์ก๋ค.
(3) ํด๋ฆญ๋ ํ์ฌ ํ๋๊ทธ๋จผํธ ์์ด์ฝ์ ๊ฐ์กฐ ํ์ ๋ฐ ์์ ๋ณ๊ฒฝ / ํด๋ฆญ๋์ง ์์ ํ๋๊ทธ๋จผํธ ํ์ ํ์
How to change TabLayout selected tab icon using ViewPager2
I use FragmentStateAdapter, ViewPager2, and com.google.android.material.tabs.TabLayout, and to set tab icon, I use com.google.android.material.tabs.TabLayoutMediator TabLayoutMediator( mTabAct...
stackoverflow.com
val unSelected: Int = ContextCompat.getColor(this, R.color.colorUnSelect)
val selected: Int = ContextCompat.getColor(this, R.color.colorSelect)
val tabLayout = binding.tlMainTapLayout
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
tab?.icon?.setColorFilter(selected, PorterDuff.Mode.SRC_IN)
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
tab?.icon?.setColorFilter(unSelected, PorterDuff.Mode.SRC_IN)
}
override fun onTabReselected(tab: TabLayout.Tab?) {
// Do nothing
}
})
- selected/unselected ์ํ๋ก ๋๋์ด setColorFilter๋ฅผ ์ค์ ํด์ฃผ์๋ค.
- ๋ค๋ง ๋ด๊ฐ ํ๊ณ ์ถ์๋ ๋๊ทธ๋ผ๋ฏธ ๋ชจ์ ๊ฐ์กฐ๋ indicator์ xml์ ์ค์ ํ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก๋ ํด๊ฒฐ์ด ๋ถ๊ฐํ๋ค.
- ํํฐ๋์๊ฒ ์ฌ์ญค๋ณด๋, ์์ ํด๋ฆญ๋์์ ๋์ ์์ด์ฝ๊ณผ ํด๋ฆญ๋์ง ์์์ ๋์ ์์ด์ฝ์ ๋๋์ด์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ ๊ฒ ๊ฐ๋ค๊ณ ํ์ จ๋ค. (์ฌ์ค ํญ ๋ ์ด์์์ ๊พธ๋ฏธ๋ ๊ฒ ์์ฒด๊ฐ ํ์ ์์ ์ ์ฐ์ด์ง ์๋๋ฏ ํ๋ค.)
- ์์ด์ฝ์ ๋๋์์ ๋์ ์ํฉ ์ฐธ๊ณ ์๋ฃ : ์คํ์ค๋ฒํ๋ก์ฐ ๋งํฌ
(4) ํด๋ฆญํ ๋ ์ ๊น ๋์ค๋ ๋ฒ์ ๋ชจ์ ์์ ๊ธฐ
- app:tabRippleColor="" : ํญ์ ํด๋ฆญํ์ ๋ ๋ํ๋๋ ํด๋ฆญ ์ด๋ฒคํธ์ ์์ ๊ฐ
- ์์์ ํฌ๋ช
์ผ๋ก ์ค์ ํ๋ฉด ๊ธฐ์กด์ ํ์์ผ๋ก ๋จ๋ ๋ฒ์ ํ์ ์ด๋ฒคํธ๊ฐ ๋์ ๋ณด์ด์ง ์๋๋ค.
app:tabRippleColor="@color/colorTransparent"
2. [๋ฉ์ธ] ์ฐ๋ฝ์ฒ ๊ฒ์์ฐฝ ๊ตฌํ
- ์ฟผ๋ฆฌ ํํธ๊ฐ ์ ์ฉ๋์ง ์๋ ๋ฌธ์ → iconifiedByDefault๋ฅผ true๋ก ํด์, ์์ด์ฝ์ ๋๋ฌ์ผ๋ง ๊ฒ์์ฐฝ์ด ์๋๋๋ ๋ฌธ์ ๋ค.
- iconifiedByDefault๋ฅผ false๋ก ์ค์ ํ๋ฉด ๊ฒ์์ฐฝ์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ค.
app:iconifiedByDefault="false"
android:background="@drawable/sv_search_radius"
app:queryBackground="@null"
3. [๋ฉ์ธ] ํ๋กํ ๋ฒํผ ๊ตฌํ
- ํ๋กํ ๋ฒํผ ๋ด์ SVG ํ์ผ์ด ์ ๋๋ก ์ ๋ ฌ๋์ง ์์๋ค.
- ๋ํ ์ธ๊ณฝ ๋๊ทธ๋ผ๋ฏธ ๋ชจ์๋ํ ์ ์ฉ๋์ง ์๋๋ค.
- ํ๋ฌ์ค ๋ฒํผ์ ์์๋ ๊ฒ์ ์์ ๋ฉ์ธ ํ ๋ง ์์์ผ๋ก ๋ณ๊ฒฝ๋์ด์ผ ํ๋ค. (Tint๊ฐ ์๋๋์ง ์์)
๐จ ํ๋กํ ๋ฒํผ ๋ด์ ์ ๋ ฌ ๋ฌธ์
- width์ height๋ฅผ wrap_content๋ก ์์ ํด์ฃผ๋ ๋ฐ๋ก ์๋ฃ๋์๋ค.
- ์ด ์ํ์์๋ fabSize๊ฐ ๋จน์๊น ํ๋๋ฐ ์ฌ์ ํ ์๋๋์ง ์์๋ค.
๐จ ์ธ๊ณฝ ๋๊ทธ๋ผ๋ฏธ ๋ชจ์, ์์ ๋ฑ์ด ์ ์ฉ๋์ง ์๋ ๋ฌธ์ (themes.xml ๋ฌธ์ ๋ฑ)
- float_fab_shape.xml์ ๋ง๋ค์ด app:shapeAppearanceOverlay="@drawable/fab_shape" ๋ฅผ ์ ์ฉํ๋ฉด, ๋ค๋ชจ๋ฐ์ค ๋ชจ์์ผ๋ก ์์ฒญ ํฌ๊ฒ ์ ์ฉ๋์ด ์ด์ํด์ก๋ค.
- app:maxImageSize="30dp" ๋ฅผ ์ค์ ํ๊ฑฐ๋ width ๋ฐ height๋ฅผ ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๋ค.
- ํ๋กํ ๋ฒํผ์ ๊ด๋ จ๋ ๋ฌธ์๋ฅผ ๋ง์ด ์ฐพ์๋ณด์๋ค. (๊ด๋ จ ๋ฌธ์)
- ๊ทธ๋ฐ๋ฐ ๊ด๋ จ ๊ณต์ ์์ ์ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต๋ถํด๋ ์์ ์๋ ๋ฌ๋ฆฌ ๋ค๋ชจ๋ ๋ฒํผ์ด ์์ฑ๋๋ค. ๋ฐฐ๊ฒฝ๋ ๋ณด๋ผ์์ด๋ค.
- ์ด๊ฑธ ๋ณด๊ณ ๋ญ๊ฐ xml์ด๋ ํ ๋ง์ ๊ธฐ๋ณธ๊ฐ ์์ฒด๊ฐ ์๋ชป ์ค์ ๋์ด ์๋ ๊ฒ์ด ์๋๊น ์๊ฐ์ด ๋ค์๋ค.
- ๋ง์๋ค. ์์ธ์ themes.xml์ ๊ธฐ๋ณธ ์ค์ ๋์ด ์๋ ๊ฐ์ด๋ค.
- ์ด๋ถ๋ถ์ Material3์ AppCompat์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.
- ์ด๋ ๊ฒ ํด๊ฒฐ๋๋ ์ค ์์์ผ๋, ๋ค์ ์ ์ฒด๋ฅผ ์ ์ ์๋ ํ ๋ง์ ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ์์ธ ์ด๋ก์์ด ํ ๋๋ฆฌ์ ์ ๊ฒ ์ถ๋ ฅ๋์๋ค.
- backgroundtint๋ก ํ์ดํธ๋ฅผ ์ค๋ ๋จน์ง ์์๋ค. ๋ค์ ํ ๋ง์์ ์์ ํด์ผ ํ ์ฌํญ์ธ ๊ฒ ๊ฐ๋ค.
- themes.xml์ด ๋ชจ๋ ์์๊ณผ ํํ๋ฅผ ํต์ ํ๊ณ ์๋ค.
- android:background๋ฅผ ์ฌ์ฉํ ๋ ํญ๋ ์ด์์์ ๋ฐฐ๊ฒฝ์์ด ๋จ์ง ์์๊ณ , android:colorPrimary๋ก ์ ์ฉํ๋ ๊ฒ์ด ๋ ์ถ์ฒ๋๋ ๋ฐฉ์์ด๊ธด ํ์ง๋ง ์ฌ์ ํ ์ด๋ก์ ํ๋กํ ๋ฒํผ ํ ๋๋ฆฌ๋ ์ฌ๋ผ์ง์ง ์์๋ค.
- ํ ๋ง ์์ฒด๋ฅผ ์์ ํ๋ ๋ฐฉ์์ ์์์ผ๊ฒ ๋ค ์๊ฐ๋์๋ค.
์ฑ ํ ๋ง ๋ณ๊ฒฝ | Android Developers
์ด Codelab์์๋ ์ฑ์ ์์ ํ ๋ง๋ฅผ ๋ง๋ญ๋๋ค.
developer.android.com
๊ท์ฐฎ๊ฒ ํ ๋ง๋ฅผ ์์ ํ ํ์์์ด, app:borderWidth="0dp"๋ฅผ ์ ์ฉํ๋ฉด ํ ๋๋ฆฌ๊ฐ ์ฌ๋ผ์ง๋ค.
๐จ Constraint Layout ๋ด์์ Floating Button์ margin์ด ์ ์ฉ๋์ง ์๋ ๋ฌธ์
- ์ด๋ฒ์ ํ๋กํ ๋ฒํผ์ ์์น๊ฐ ์ด์ํ๋ค. margin ๊ฐ์ ์๋ฌด๋ฆฌ ์์ ํด๋ ์ ์ฉ๋์ง ์๋๋ค.
- app:useCompatPadding="true" ๋ก ์ค์ ํ ๋ค
android:layout_margin="20dp"์ ์ค์ ํ๋ ๊ทธ์ ์์ผ ์๋ํ๋ค. - ์คํ์ค๋ฒํ๋ก์ฐ ๋งํฌ
Floating Action Button Bottom-Margin doesn't work
I tried to implement a Floating Button on the bottom-right of the screen, but the bottom-margin doesn't work for some reason :/ I tried to change the margin size only on the Bottom but it didn't wo...
stackoverflow.com
- ํ๋๊ทธ๋จผํธ ์์ ์ปจ์คํธ๋ ์ธํธ ๋ ์ด์์ ์์ ๊ตฌํ๋์ด์ ๊ทธ๋ฐ๊ฐ ์์ฌ์ค์ด๊ธดํ๋ค.
์ง์ ์ ์ธ ์์์ ํ๋กํ ๋ฒํผ์ ๋๋ ๊ฒ์ด ์ด๋ป๋๋ ๋ง์ด ์๋ค.
4. [์ ์ฒดํ์ด์ง] ์ ์ฒด UI ๊ตฌํ
๐จ ์์ธ ํ์ด์ง ์คํฌ๋กค๋ทฐ ์ ์ฉ
- ์คํฌ๋กค๋ทฐ๋ฅผ ์ค์ ํ์ง ์๊ณ ๋ง๋ค๋ค๊ฐ, ์คํฌ๋กค๋ทฐ์ ํ์์ฑ์ ๋๊ปด ์ดํ์ ์ ์ฉํ๋ค.
๊ธฐ์กด์ ๋ง๋ค์ด ๋ ๊ฒ๋ค์ ์คํฌ๋กค๋ทฐ ์์ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋๊น ๋น์ฐํ ์ ์ฉ๋์ง ์์๋ค. - ์๋จ๋ฐ์ ๋์ด๋ ์ง์ ํ dp, ์คํฌ๋กค๋ฐ์ height๋ 0dp๋ฅผ ํ๋ฉด ์คํฌ๋กค๋ฐ๊ฐ ๋จ์ ์์ญ์ ๋ชจ๋ ์ฐจ์งํ๋ค.
- ์คํฌ๋กค๋ฐ์ ๋ค์ width/height๊ฐ ๋ชจ๋ match_parent์ธ ์ปจ์คํธ๋ ์ธํธ๋ทฐ๋ฅผ ๋ฃ์ด์ฃผ๊ณ , ๊ทธ ์์ ๊ธฐ์กด ์์๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐํ๋ฉด ๋ชจ๋ ์ ์ ์๋๋๋ค.
- ๊ตฌ์กฐ๋ ์์ ๊ฐ๋ค.
๐จ ์คํฌ๋กค๋ฐ none ์ฒ๋ฆฌ
- android:scrollbars="none"์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์คํฌ๋กค๋ฐ๋ฅผ ์จ๊ฒผ๋ค.
๐จ ์ ์ ํ์ด์ง UI๊ตฌ์กฐ ๋ฐ ์ํด ์ด๋ฏธ์ง ๋ทฐ
- ์ํด์ด๋ฏธ์ง๋ฅผ ์ ์ฉํ์๊ณ , ์์ ์ฌ๋ ค๋จ๋ ์คํฌ๋กค๋ทฐ๋ฅผ ์ ์ฉํ ๋ธ๋ฃจํ๋ฆฐํธ๋ ์ฌ์ง๊ณผ ๊ฐ๋ค.
๐จ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ์์ดํ
- ์ด๋ฆ๊ณผ ์ ํ๋ฒํธ๋ฅผ ์์๊ฒ ์ถ๋ ฅํ๊ธฐ ์ํด์ Vertical chain์ด ํ์ํ๋ค.
๐จ ์์น๋ทฐ ์ปค์คํ
- ๋ด๊ฐ ์ํ๋ ์ปค์คํ
์์๋ ์๋์ ๊ฐ๋ค.
(1) ์์น๋ทฐ ๋ฅ๊ธ๊ฒ
(2) ์์น๋ทฐ ํ์ ํ ๋๋ฆฌ
(3) ์์น๋ทฐ ํ ์คํธ ํํธ ์ค์ - app:closeIcon : ๊ธ์ ์์ฑํ ํ ์ค๋ฅธ์ชฝ์ Xํ๋ฅผ ๋๋ฅด๋ฉด ์ง์์ง๋ ํ์
- app:queryHint : ์์น๋ทฐ ํ ์คํธ ํํธ ์ค์ , ๊ทธ๋ฌ๋ ๋ด๊ฐ ์ค์ ํ ๊ธ์ ํ์๋์ง ์์๋๋ฐ ์๋ง ํ ์คํธ๊ฐ ํฐ์์ผ๋ก ์ค์ ๋์ด ์์ด์๊ฐ ์๋๊น ์์ํ๋ค.
- app:queryBackground : ์์น๋ทฐ์ ๋ฐฐ๊ฒฝ์ ์ค์ ํ ์ ์๋ค.
๐จ ๋ง์ดํ์ด์ง Edittext ๊ธฐ๋ณธ๊ฐ ์ค์ ๋ฐ ์์ ๊ธ์ง
android:text="sysdocu" // ๊ธฐ๋ณธ ์
๋ ฅ๊ฐ
android:editable="false" // ์ฐ๊ธฐ(์์ ) ๊ธ์ง
๐จ ์ฑ ์์ด์ฝ ์ถ๊ฐํ๊ธฐ
- (1) ์ด๋ฏธ์ง ๋ฑ๋ก: res - new - Image Asset - Name ์ค์ - Path ์ค์ - Resize๋ก ์กฐ์ - Finish
- (2) Manifest ์์ : android:icon๊ณผ android:roundIcon ๋ถ๋ถ ์์
๐จ Dialog ์ปค์คํ
5. GitHub README ์์ฑ
- ๊นํ๋ธ ๋ฆฌ๋๋ฏธ๋ฅผ ์์ ๊ฐ์ด ์์ฑํ๋ค.
๊ธฐ์ ๋ฉด์
ํ๋๊ทธ๋จผํธ (Fragment)
- 'ํ๋๊ทธ๋จผํธ ๋งค๋์ ' ์ฐพ์๋ณด๊ธฐ, ์ญํ ์ดํดํ๊ธฐ
- 'ํ๋๊ทธ๋จผํธ ํธ๋์ญ์
' ์ฐพ์๋ณด๊ธฐ, ์ญํ ์ดํดํ๊ธฐ
- ํ๋๊ทธ๋จผํธ ํธ๋์ญ์
์(add, replace, remove, show, hide, attach, detach) ๋ฑ์ ํ ๋ Lifecycle ๋ณํ ๋ก๊ทธ๋ก ํ์ธ
- ์กํฐ๋นํฐ์ฒ๋ผ ๋ฐฑ์คํ์ ๊ด๋ฆฌํ์ง ์์์, addBackStack์ ํตํด ๋ฐฑ์คํ์ ๊ด๋ฆฌํ๊ฒ ๋ค๊ณ ๋ฐ๋ก ์ ์ํ๋ ๊ฒ
backํค๋ฅผ ๋๋ ์ ๋ ์คํ์ ์ด๋ป๊ฒ ํ๊ฒ ๋ค ๊ด๋ฆฌํ๋ ๊ฒ
- ํ๋ ์๋ ์ด์์๊ณผ์ ๊ด๊ณ ( ๋ณดํต์ ํ๋ ์๋ ์ด์์์ ๋ง๋ค์ด์ ๋นต๊พธ ๋ซ์ด๋๊ณ , ๊ฑฐ๊ธฐ๋ค ํ๋๊ทธ๋จผํธ๋ฅผ ๋ถ์.
์์ฆ์ ํ๋ ์๋ ์ด์์ ๋ง๊ณ ํ๋๊ทธ๋จผํธ์ปจํ
์ด๋๋ทฐ๋ผ๋ ๊ฒ๋ ์ฌ์ฉ)
ํ๋๊ทธ๋จผํธ ์๋ช
์ฃผ๊ธฐ
- ์ฐธ๊ณ ๋งํฌ (๋งํฌ)
- onActivityCreated๋ deprecated๋๊ณ , ์ง๊ธ์ onCreateView๋ฅผ ์
- ์กํฐ๋นํฐ์ ํ๋๊ทธ๋จผํธ ์ฌ์ด ๊ฐ์ ๋ผ์ดํ์ฌ์ดํด ์๊ฐํด๋ณด๊ธฐ
๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ์์ ๋ทฐํ๋๊ฐ ์กด์ฌํ๋ ์ด์
- ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ์ฌํ์ฉ ํ๊ธฐ ์ํจ / positionํ๊ณ viewtype์ ํตํด์ ๋ด๋ถ์ ์บ์๋ ๋ฆฌ์ฌ์ดํด๋ฌ ํ์ด๋ผ๋๊ฐ๋ฅผ
- ์ด ์กด์ฌ ์ด์ ์ ๋ํด์๋ ๋ ์ฐพ์ ๋ณด๊ธฐ
๋ฉํฐ ๋ทฐ ํ์
- ๊ฒ ์์ดํ
๋ทฐํ์
์ ๋ฐ๋์ ์ค ๋ค์์ ๊ทธ ํ์
์ผ๋ก ๋ทฐํ๋๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋จ
๐ญ Retrospect
๊ฐ์ธ์ฌ์ ์ผ๋ก ์ธํด ์ด๋ฒ ํ๋ก์ ํธ์ ํ๋ฐ๋ถ์ ์ฐธ์ฌ๋ฅผ ํ์ง ๋ชปํ๊ฒ ๋์ด UI ๊ตฌํ ํน์ ์ด์ ์ ์ฌ์ฉํ๋ ๊ธฐ์ ์์ฃผ๋ก ์ฝ๋๋ฅผ ์ง๊ฒ ๋์๋ค. ์๋ จ ์ฃผ์ฐจ์์ ๋ฐฐ์ด ๊ธฐ์ ์ ์ ๋๋ก ์ด์ฉํ๊ฑฐ๋ ํ์ฉํด๋ณด์ง ๋ชปํ๊ฒ ์ ๋ง ๋๋ฌด x 1000 ์์ฝ๋ค. ์ฌํ ์ฃผ์ฐจ ๊ฐ์ธ ์๊ฐ ๋ ์ฃผ๋ง๊ณผ ๋ฆ์ ๋ฐค ์๊ฐ์ ํ ์ ํด์๋ผ๋ ๋ฐ๋ฆฐ ๋ด์ฉ๋ค, ์ดํด ๋ชปํ ๋ด์ฉ๋ค์ ๋ง์คํฐํ์. ๊ทธ๋ฆฌ๊ณ ๋ค์ ํํ๋ก์ ํธ ๋ UI๋ณด๋จ ๊ธฐ์ ๊ตฌํ ์์ฃผ๋ก ์ง์คํ๊ณ ์ถ๋ค.
โ