์๋ฐํ์ผ์์ ์๋ ๋ด๊ฐ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ํด๋ฆญ ํ Ctrl + insert๋ฅผ ํ๊ฒ ๋๋ฉด ์์ฑํ ์ ์๋ ๋ชฉ๋ก์ด ๋์จ๋ค.
ํจํค์ง๋ฅผ ํด๋ฆญํ๊ณ ctrl + alt + insert ๋ฅผ ๋๋ฅด๋ฉด ์์ฑ๊ฐ๋ฅํ ๋ชฐ๋ก์ด ๋์จ๋ค.
Shift+f10 : Run app
๊ฐ์ ๋๋ฐ์ด์ค๋ ๋ถํ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก ๊ณ์ ์ผ๋๋ ๊ฒ์ด ์ข๋ค.
Ctrl+Space : ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑ์์ผ์ค
Alt+Space: ์ค๋ฅ๊ฐ ๋จ๋ ๊ณณ์ ๋ง์ฐ์ค ์ปค์๋ฅผ ๋๊ณ ๋๋ฅด๋ฉด ์ค๋ฅํด๊ฒฐํ๊ธฐ ์ํ ํํธ ์ ๊ณต
Alt+Enter: ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ๊ณ ์ณ์ฃผ๋ ๊ธฐ๋ฅ ์ฃผ๋ก importํจ์๋ฅผ ๋ถ๋ฌ์ฌ๋ ์ฌ์ฉ๋๋ค. (ํตํฝ์ค)
Ctrl+Tab: ์ค์์ฒ๊ธฐ๋ฅ์ผ๋ก ์๋์ฐ์ ํ๋ฉด ์ ํ์ด๋ ๋น์ท
Ctrl+B : ์ ์ธ๋ถ ๋ณด๊ธฐ
Alt+Ctrl+i: ์ค ๊ฐ๊ฒฉ ๋ง์ถ๊ธฐ
F7: ํ์ฌ ๋ฉ์ถ ๋ผ์ธ์ ์๋ ๋ฉ์๋ ์์ผ๋ก ๋ค์ด๊ฐ๋ ๋จ์ถํค์ ๋๋ค.
F9: ๋ค์ ์ค๋จ์ ์ ๋ง๋ ๋๊น์ง ์คํํฉ๋๋ค.
Shift+F8: ํ์ฌ ๋ฉ์๋๋ฅผ ๋น ์ ธ๋๊ฐ๋๊น์ง ์คํํฉ๋๋ค.
F8: ์์ค ์ฝ๋๋ฅผ ๋ฑ ํ ์ค๋ง ์คํํฉ๋๋ค.
Alt+F9: ์ปค์๊ฐ ์๋ ๊ณณ๊น์ง ์คํํฉ๋๋ค.
์๋๋ก์ด๋ SDK: ์๋๋ก์ด๋ Software Development Kit
์๋๋ก์ด๋ API: ์๋๋ก์ด๋ Application Programming Interface
ํ๋ก์ ํธ์ ํฌํจ๋ ํ์ผ๊ณผ ๊ทธ์ ์ฐ๊ด๋ ๋ชจ๋๋ค์ ๋งํฌํ์ฌ ์ฑ์ ์ปดํ์ผํ๋ ๋น๋ ์์คํ ์ด๋ค.
ํ๋ก์ ํธ์ ํฌํจ๋ ๋ชจ๋์ด ์์ ๋๊ฑฐ๋ ์ถ๊ฐ๋ ๋๋ง๋ค Gradle์ ์ํ sync๊ณผ์ ์ด ๋ฐ์ํ๋ค
manifests : ์ฑ์ ๋ํ ์ค์ ํ์ผ
java: ์ฌ์ฉ์๊ฐ ๋ง๋ ์๋ฐ๋ ์ฝํ๋ฆฐ ์ฝ๋ ํฌํจ, ์๋๋ก์ด๋ ์คํ๋์ค๊ฐ ์๋์์ฑํ ์ฝ๋๊ฐ ํฌํจ
res: ์ฑ์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ๋ฆฌ์์ค๋ค์ ํฌํจํ๋ค.
Gradle Scripts : ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ธฐ ์ํด Gradle์์ ์ฌ์ฉํ๋ ์ค์ ํ์ผ๋ค์ ๋งํ๋ค.
์๋๋ก์ด๋ ์ฑ์ Ul๋ฅผ ๋ด๋นํ๋ ์ ์ผ ํฐ ๋จ์์ด๋ค.
Activity๋ ์๋๋ก์ด๋ API ๋ด์์ ํด๋์ค๋ก ์ ๊ณต๋์ด ์ด๋ฅผ ์์๋ฐ์ ์ฑ์์ ์ฌ์ฉํ Activity๋ฅผ ์ฌ์ฉํจ.
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์์คํ ์ ์ํด ์์ฑ๋์ด ๋ก๋๋๊ฑฐ๋ ์กํฐ๋นํฐ๋ฅผ ์์ํ๋
Start Activity ํจ์์ ์ํด '๊ฐ์ ์ '์ผ๋ก ๋์ธ ์ ์๋ค.
Activity์ ์์๊ณผ ์ข ๋ฃ๋ฅผ ์๋๋ก์ด๋ ์์คํ ์ด ์ง์ ๊ด๋ฆฌํ๋ ํ๋ ๊ณผ์ ์ Activity Lifecycle ์ด๋ผ๊ณ ํ๋ค.
Activity๊ฐ ์ค์ ๋ก ํ๋ฉด์ ๋ณด์ด๊ธฐ ์ ๊น์ง onCreate() , onStart(), onResume() ํจ์๊ฐ ์คํ๋๋ค.
onCreate()๋ activity ์์ฑ์ ๋จ ํ๋ฒ๋ง ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ณ์์ ์ด๊ธฐํ๋
ํ๋ฉด์ ํ์๋๋ UI์ ์ด๊ธฐ๊ฐ ์ค์ ์ ํ๋ค.
onStart(), onResume()์ ์ฒ์ ์์ํ ๋ ๋ฟ๋ง ์๋๋ผ Activity๊ฐ ๊ฐ๋ ค์ก๋ค๊ฐ ๋ค์ ๋์์ฌ๋ ์คํ๋๋ค.
ํ๋ฉด์ ์ผ๋ถ๊ฐ ๊ฐ๋ ค์ง๋ ๊ฒฝ์ฐ -> ์ผ์์ ์ง๊ฐ ๋์ด onPause() ๊ฐ ๋๊ณ
๋ค๋ฅธ Activity๋ก ์์ ํ ์ ํ๋๋ ๊ฒฝ์ฐ-> onPause()์ด ๋จผ์ ๋ถ๋ฆฌ๊ณ onStop() ์ด ๋๋ค.
๋ฐ๋ผ์ onStart(), onResume() ์ ๋ค๋ฅธ ํ๋ฉด์์ ์ ๋ ฅ๋ฐ์ ๋ด์ฉ์ ํตํด ๋ฐ๋ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐ๊ฐ ์ค์ ๋๋ ๊ฐฑ์ ์ ํ๋ ์ญํ ์ ํ๋ค.
onPause(), onStop()์ ๊ฒฝ์ฐ์๋ ์์คํ ์ด ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐฐํฐ๋ฆฌ์ ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํด์ Activity๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์์ ํ ์ ๊ฑฐํ๊ธฐ๋ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์ Activity๋ฅผ ํ๊ฒ๋๋ onCreate() ๋ถํฐ ์คํํ๊ฒ ๋๋ค.
๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก Activity๋ฅผ ์ข ๋ฃํ๊ธฐ ์ํด Activity.finish()๋ฅผ ์ฌ์ฉํ๊ฑฐ๋
์์คํ ์ ์ํด ๊ฐ์ ์ ์ผ๋ก Activity๊ฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ onDestroy()๋ฅผ ์ฌ์ฉ ํ๊ฒ ๋๋ค.
launch Activity๋ ์ฒ์ ํ๋ฉด์ผ๋ก ๋จ๋ Activity๋ก ์ค์ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
AppCompatActivity()๋ผ๋ ์๋๋ก์ด๋๊ฐ ์ ๊ณตํ๋ Activity ํด๋์ค๋ฅผ ์์๋ฐ์ ๋ง๋ค์ด ์ง๊ฒ์ด๋ค. oncreate() ํจ์ ์์๋ super.onCreate(savedInstanceState) ์ํผ ํด๋์ค์ ํจ์๋ฅผ ์ฌํธ์ถ ํ๋ ๊ตฌ๋ฌธ๊ณผ setContentView(R.layout.activity_main) ๋ ์ด์์ xml๋ฅผ ๋ถ๋ฌ ํ๋ฉด์ ์ถ๋ ฅํด์ฃผ๋ ๊ตฌ๋ฌธ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
์ฑ์ด ๋์๋๋ ๋์์ ๋ฐ๋๋ ์์ฑ์ด๋ ํด๋ฆญ ๋ฑ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์ฝํ๋ฆฐ ์ฝ๋๋ก ์์ฑ.
Activity์ View๋ฅผ ํ์ํ๊ธฐ ์ํด์๋ oncreate()ํจ์ ์์์ setContentView() ํจ์๋ฅผ ํธ์ถํ์ฌ
ํ๋ฉด์ ํ์ํ ๋ฆฌ์์ค ID๋ ์ฝ๋์์ ์ง์ ์์ฑํ view()๊ฐ์ฒด๋ฅผ ๋๊ฒจ ์ฃผ๋ฉด ๋๋ค.
view๋ฅผ ์ค์ ํ๋ค๊ณ ํด์ ๋ฐ๋ก ํ๋ฉด์ ํ์๋๋ ๊ฒ์ ์๋๋ค.
Activity LifeStyle์ ์ํด ์ด๊ธฐํ๋ ๋ณต๊ท๊ฐ ์์ ํ ๋๋ ์์ ์ด๊ฑฐ๋
ํฐ์น๋ ํค๋ณด๋ ์ ๋ ฅ ๋๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฑ์ผ๋ก ์ธํด view์ ๋ด์ฉ์ด ๋ฐ๋์ด์ผ ํ๋ ์์ ์
View System์์ View ํด๋์ค์ on Draw ํจ์๋ฅผ ํธ์ถํ์ฌ ํ๋ฉด์ View์ ๋ด์ฉ์ ํธ์ถํ์ฌ
ํ๋ฉด์ View์ ๋ด์ฉ์ ์๋ก ํ์ํด ์ค๋ค.
VIew์ ์ฉ์ด ์ค์ ๊ฐ ํด๋นํ๋ ์ฉ์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํ์ํ ๊ฒ์ด๋ค.
View๊ฐ ์ํด์๋ ์์ View๋ฅผ (parent) ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ๋ฌ์ค๊ฐ ๋ํ๋ด๋ ๊ฒ์ ์ํ์ข์ฐ๋ก ์๋ฌด๋ฐ ์ ์ฝ์ด ์๋ค๋ ๋ป์ด๋ค.
End๋ถ๋ถ์ด ์ ์ฝ์ด ๊ฑธ๋ฆฐ ๊ฒ์ ๋ณผ ์ ์๋ค.
wrap_content๋ ๋ด์ฉ์ ํฌ๊ธฐ์ ๋ฐ๋ผ VIew์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ์กฐ์ ๋๋ ์์ฑ๊ฐ์ด๋ค.
viewํด๋์ค๋ฅผ ๊ฐ๋ฐ์๊ฐ ์์๋ฐ์ ์ํ๋ View์ ํํ๋ฅผ ์ง์ ๊ตฌํ ํ ์๋ ์์ง๋ง ์๋๋ก์ด๋์์๋
์ฌ๋ฌ๊ฐ์ง์ ํ์๋View๋ฅผ ์ ๊ณตํ๋ค.
ImageView : ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ํ๋ฉด์ ํ์ํ๋ view๋ก ImageButton ๋ฑ์ผ๋ก ํ์๋ฉ๋๋ค.
Drawable์ด๋ผ๋ ๋ฆฌ์๋ฅผ ํ์ํ ์ ์๋ค.(Drawable: ํ๋ฉด์ ๊ทธ๋ฆด ์ ์๋ ๋ชจ๋ ์ข ๋ฅ์ ๊ทธ๋ํฝ ๋ฆฌ์์ค )
ex) PNG,JPG,GIF,WebP -> BitmapDrawable ๋ก ๋ถ๋ฅ๋๋ค.
src ์์ฑ: ํ์ํ Drawable์ ์ง์ ImageView.setImageResource(Drawable์ ID)
scaleType ์์ฑ: ImageView์ ์์ญ๋ด์์ ์ด๋ฏธ์ง๋ฅผ ์ค์ผ์ผํ๋ ๋ฐฉ์์ ์ค์ ํ๋ค.
์ด๋ฏธ์ง์ ์ฌ์ง์ ์ค์ฌ์ผ๋ก ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ณ ๊ธดํธ์ ์๋ผ๋ด๋ ํ์
์ด๋ฏธ์ง์ ๊ธด๋ณ์ ๋ง์ถฐ ์ฌ์ง์ ์ค์ผ์ผ๋ง ํ๊ณ ๋๋จธ์ง๋ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฑ์ด๋ฏ
์ด๋ฏธ์ง์ ๋น์จ๋ก ์ค์ผ์ผ๋ง ํ๋ ๊ธด๋ณ์ ๊ธฐ์ค์ผ๋ก ํ๊ณ ๋๋จธ์ง ๋ถ๋ถ์ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉ
fitcenter๊ฐ ์ ์ฌํ์ง๋ง ์ค์ผ์ผ๋ง ์ข์ธก ์๋จ์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
fitcenter๊ฐ ์ ์ฌํ์ง๋ง ์ค์ผ์ผ๋ง ์ฐ์ธก ํ๋จ ์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
์ด๋ฏธ์ง ๋ทฐ์ ํฌ๊ธฐ์ ๋ง์ถฐ ๋น์จ์ ์๊ด์์ด ์ด๋ฏธ์ง๋ฅผ ์ค์ผ์ผ๋ง ํ๋ค.
์ฌ์ฉ์๊ฐ ์ ์ฅํ matrix์ ๋ฐ๋ผ ํ์
์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ๋๋ ํด๋ ์ด๋ฆ์
drawable-xxhdpi ๋ก ๋ณ๊ฒฝํ๋ค.
TextView : ๋จ์ํ Text๋ฅผ ํ์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ง๋ง ๊ต์ฅํ ๋ค์ํ view๋ฅผ ํ์ํ๊ณ ์๋ค.
EditText: ํธ์ง์ด ๊ฐ๋ฅํ ํ ์คํธ ๋ฐ์ค
Button : ํ ์คํธ๊ฐ ํ์๋๋ ๋ฒํผ
RadioButton : ๊ทธ๋ฃน ์ค ํ๋๋ง ์ ํํ๋ ๋ฒํผ
Switch : ์ค์์น ๋ชจ์์ผ๋ก on/off ๋ฅผ ํ๋ ๋ฒํผ
viewGroup :
LinearLayout : ๊ฐ๋ก ๋๋ ์ธ๋ก๋ก ์์๋๋ก View๋ฅผ ๋์ด
ConstraintLayout: ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก View๋ฅผ ์์ ๋กญ๊ฒ ๋์ด
๊ฐ๋ ฅํ ์ด์ ๋ ํฌํจ๋ View๊ฐ์๋ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ReCyclerLayout : ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ๋ ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์
๋ค์ํ ํฌ๋งท์ ๋ชฉ๋ก์ผ๋ก ํ๋ฉด์ ์ถ๋ ฅํด์ฃผ๋ ๊ธฐ๋ฅ์ผ๋ก
๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ชฉ๋ก์ ํ์ํ๋ adapater , ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ ์์ดํ ์ View๋ฅผ ์์ฑํ์ฌ ์ ๊ณตํ๋
ViewHolder๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
Spinner: ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ๋ชฉ๋ก ์ค ํ๋๋ฅผ ์ ํํ๋ View
ScrollView : ๋ด๋ถ์ vIew๋ฅผ ์คํฌ๋กค ํ ์ ์๋๋ก ํ๋ View
TabLayout : ํ ์ ์ด์ฉํด View ๊ฐ์ ์ ํ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ View
CheckBox ์ RadioButton ์ ์ฐจ์ด์ ์ CheckBox ๋ ์ค๋ณตํฌํ๊ฐ ๊ฐ๋ฅํ์ง๋ง
RadioButton์ ํ๊ฐ์ง ์ ํ๋ง ๊ฐ๋ฅํ๋ค.
TextView.setTypeface(Typedface,Int) ๋ ๊ธ๊ผด์ด๋ ์คํ์ผ์ ์ค์ ํ๋ ํจ์๋ก
Typeface :ํฐํธ์ ํํ , Int๋ ๊ธ๊ผด์ ์คํ์ผ์ ์ค์
์ฒดํฌ๋ฐ์ค ๋ณํ๋ฅผ ๊ฐ์ํ๋ ํจ์ onCheckedChanged ์ ๊ธฐ๋ณธ ํฌ๋งท ํ์์ R.id.Viewid๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋ ์ด์์ ํฌ๊ธฐ์ ๋จ์์ธ DP(density-independent pixels) ์ ์ค์๋ง๋ก ์ผ๋ฐ์ ์ธ ํฝ์ ์ ๋์คํ๋ ์ด์
๋ฌผ๋ฆฌ์ ์ธ ๋ํธ ํ๋์ ํฝ์ ์ด ํ๋์ฉ ๋งค์นญ๋๋ ๊ฐ๋ ์ด์ง๋ง dpํ๋๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ํธ๋ณด๋ค ๋ ํด์๋ ,์์์๋ ์๋ค.
์ด์ฒ๋ผ ์๋๋ก์ด๋๋ ์ด๋ค ํ๋ฉด์์๋ ๋น์ทํ ํฌ๊ธฐ์ UI๋ฅผ ์ ๊ณตํ๋ DP๋ผ๋ ๋จ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
DP๋ ๋์คํ๋ ์ด ํด์๋ 160dpi ๋ฅผ ๊ธฐ์ค์ผ๋ก 1ํฝ์ =1dp ๋งค์นญํ ํฌ๊ธฐ๋ก ๋์คํ๋ ์ด์ ํด์๋ ๋์์ง์๋ก
DP์ ๋งค์นญ๋๋ ๋ฉด์ ์ด ์ปค์ง๋๋ก ์์์ UI๋ฅผ ์ค์ผ์ผ๋ง ํด์ฃผ๊ฒ ๋ฉ๋๋ค.
SP(scale-independent pixels) ๋ ๊ธฐ๋ณธ์ ์ผ๋ก๋ DP์ ๊ฐ์ด ๋ฐ๋์ ๋ ๋ฆฝ์ ์ธ ํฝ์ ์ด์ง๋ง ๊ธ๊ผด์ ์ ์ฉํ๊ธฐ ์ํ ๋จ์์ด๋ค.
๋ฐ๋ผ์ ํ ์คํธ์ ์ ๊ทผ์ฑ์ด ์ค์ํ ์ฑ์ด๋ผ๋ฉด ๊ธ๊ผด์ Sp๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
spinner๋ ๋ค๋ฅธ ํ๋ซํผ์์ ComboBox๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ
์ฌ์ฉ์์ ์ ํ์ ๋ฐ๋ ui์ด๋ค.
๋ชฉ๋ก์ ํ์ํ๊ธฐ ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์ง์ spinner์ ํ ๋นํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋
Spinner Adapter๋ฅผ ์ฌ์ฉ
Spinner Adaper๋ ๋ฐ์ดํฐ์ ์ ์ฒด ๋ชฉ๋ก ์ค์์ ํ๋ฉด์ ํ์ํ ๋ชฉ๋ก์ View๋ฅผ Spinner์ ์ ๊ณตํด์ฃผ๋ ์ญํ ์ ํ๋ค.
Spinner Adaper๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๋ถ๋ถ์ด ์ง์ ๊ตฌํ๋์ด ์์ง ์๋ค. ๋ฐ๋ผ์
Spinner Adaper๋ฅผ ์์๋ฐ์ ๋ฐฐ์ด์ ํ๋ฉด์ ์ถ๋ ฅํ๋๋ก ๊ตฌํํ ๊ฒ์ด๋ค.
ArrayAdapter์๋ ์ฌ๋ฌ๊ฐ์ง ์์ฑ์๊ฐ ์๋๋ฐ ๊ทธ์ค ๋ฐฐ์ด์ ๋ฐ์ ํ์ํ๋ ์์ฑ์๋
์ฒซ๋ฒ์งธ ํจ๋ฌ๋ฏธํฐ๋ก๋ Context: view์์ ์์คํ ์ ๊ธฐ๋ฅ์ ํธ์ถํ๊ธฐ ์ํ ํด๋์ค๋ก Activity๊ฐ ์ด๋ฅผ ์์๋ฐ์
๋ง๋ค์ด์ ธ ์์ผ๋ this ๋ก ๋๊ฒจ์ฃผ๋ฉด ๋๋ค.
๋๋ฒ์จฐ ํจ๋ฌ๋ฏธํฐ๋ก๋ Spinner ์ ๋ฆฌ์คํธ์ ๊ฐ๊ฐ์ ํญ๋ชฉ์ ํ์ํ๊ธฐ ์ํ ๋ถ๋ถ ๋ ์ด์์์ ์ง์ ํ๋ ์ต์ ์ด๋ค.
์ธ๋ฒ์งธ ํจ๋ฌ๋ฏธํฐ๋ ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
AdapterView๋ Adapter๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ VIew๊ฐ ์์๋ฐ๋ Spinner์ ์์ ํด๋์ค์ด๋ค.
์๋์์ฑ์ผ๋ก override ๋ฅผ ํด๋ณด์๋ฉด ๋๊ฐ์ง ํจ์๊ฐ ์๋ค.
onItemSelected ๋ ํญ๋ชฉ์ด ์ ํ๋์์๋ ๋์ํ๋ ํจ์์ด๋ค.
onItemSelected ์๋ ์ด 4๊ฐ์ง ์ ๋ณด๊ฐ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด์ค๋๋ฐ
์ฒ์์ ์คํผ๋ ์์ , ๋๋ฒ์งธ๋ ์ ํ๋ ํญ๋ชฉ์ ๋ทฐ , ์ธ๋ฒ์จฐ ์ ํ๋ ์์น, ๋ค๋ฒ์งธ๋ ํญ๋ชฉ์ id์ด๋ค.
onNothingSelected๋ ์๋ฌด ํญ๋ชฉ๋ ์ ํ๋์ง ์์์๋ ๋์ํ๋ ํจ์์ด๋ค.
ํ์๋๋ ๋ฌธ์์ด๊ณผ ์ฌ์ฉํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅด๋ฉด Model Class๋ฅผ ์ฌ์ฉํ๋ค.
์ฐ๊ด์ฑ์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํด๋์ค ๊ฐ์ฒด๋ก ๋ฌถ์ด ์ฌ์ฉํ๋ ๊ฐ๋ ์ผ๋ก
์ฐ๊ด๋๋ ์์ฑ๋ค์ ํจ๊ป๋ฐ์ ์ธ์คํด์คํ ํ๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๋ชจ๋ ํด๋์ค๊ฐ ๋ด๋ถ์ ์ผ๋ก ์์๋ฐ๋ Any์ ์ต์์ ํด๋์ค์ .toString() ์ถ๋ ฅ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
spinner์ ๋ชฉ๋ก์ ์ ๋ถ๋ค ๋ฐ๊ฟ๋์๋ spinner๊ฐ ๋ฐ์ ๋ฐฐ์ด์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ ๋ชปํ๊ณ ์๋ก์ด spinner๋ฅผ
์ฐ๊ฒฐํด์ผํ๋ค. ํน์ ๋ชฉ๋ก์ ์ถ๊ฐ๋ ์ญ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐฐ์ด์ listOf() ๊ฐ ์๋ mutableListOf()๋ฅผ ์ฌ์ฉํ๊ณ
List๊ฐ ๋ฐ๋์๋ค๊ณ apapter๊ฐ ์ฆ์ ํ๋ฉด์ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์
adapter.notifyDataSetChanged()๋ฅผ ๋ณ๋๋ก ํธ์ถํด์ผ ํ๋ค.
context๋ ๋ฒํผ์ด๋ฉด ๋ฒํผ์ด ํฌํจ๋์ด์๋ ์ฃผ๋ณ์ ๋ณด(์ด๋ค ๋ ์ด์์์ ํฌํจ๋์ด์๋๊ฐ )๋ฅผ ๋งํจ u.i๊ฐ์ฒด๋ ๋ฌด์กฐ๊ฑด context ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ๊ฒ ๋์ด์์ getApplicationContext()๋ ์ฑ์์ ์ฌ์ฉํ๋ ๊ณตํต context๋ฅผ ์ฐธ์กฐํ๋ ๋งค์๋์ด๋ค.
์ฝํ๋ฆฐ์์ ์๋ฐ์ static final ์ฒ๋ผ ์ฐ๋ ค๊ณ ํ๋ฉด @jvmField๋ฅผ ์ฌ์ฉํ๋ค.
ํ๋๊ทธ๋จผํธ์์ sharedPreference๋ฅผ ์ฌ์ฉํ๋ ๋ฒ
SharedPreferences preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
๋ฐ๋ก ๋ฐ์ ์ค์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ this.activity๋ฅผ ํตํด ๋ฐ์์ด
๋ทฐํ์ด์ ์๋ช ์ฃผ๊ธฐ ๋ฐ ๋ทฐํ์ด์ ์ ์ ๋ณด
deprecated ๋ ์๋ฃ๋ ๋ง์ง๋ง ์ดํดํ๊ธฐ ์ฌ์
https://itpangpang.xyz/category/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%28android%29/ViewPager
๋ทฐํ์ด์ ์์ ํ๋ฉด์ ๋น์ถฐ์ก์๋ ์ฌ์ฉํ๋ FragmentStatePagerAdapter
๋ Deprecated๋์ด ์ถํ์ ๋ฐฉ๋ฒ
https://kimyounghoons.github.io/android/android-FragmentStatePagerAdapter/
Cannot fit requested classes in a single dex file ์ค๋ฅํด๊ฒฐ๋ฐฉ๋ฒ
Dependency failing: com.google.android.gms:play-services-measurement-api:17.0.0 -> com.google.android.gms:play-services- measurement-sdk-api@[17.0.0], but play-services-measurement-sdk-api version was 17.1.0. ์ค๋ฅ ํด๊ฒฐ๋ฐฉ๋ฒ
->์ ๋ฐ์ดํธ๊ฐ ์ค๋น๋ ๋ น์๋ฐฐ๊ฒฝ ์ ๊ทธ๋ ์ด๋ ํด์ฃผ๊ธฐ
์ด์ ์ ์ค์๋ก apk๋ฅผ ๋ฑ๋กํ๋ค๋ฉด
๋ฅผ ํตํด ๋ฒ์ ผ ์ ๊ทธ๋ ์ด๋๋ฅผ ํด์ผํ๋ค.
๋ํ admob์ ํตํด ์ ๋ก๋ ํ ๋ Failed :0 ๋น์ทํ ์ฝ๋๊ฐ ๋์๋๋ฐ ๋๋ฒจ๋กํผ์ ์๋ ๊ทธ๋๋ก ํ์๋ค๋ฉด
์๋๋ชน๊ณผ ์ฑ ์ฐ๊ฒฐ, ํน์ ์ ๋๋ชน๊ณผ ํ์ด์ด๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ฌด๋ฅผ ํ์ธํ๊ณ ๋ค์ํ๋ฒ ์ํ ID์ธ์ง ํ์ธํ๊ณ ๊ทธ๋๋ค ๋ฒ์ ผ ํ์ธ ํ ๊ฒ.