Android(15)
-
[Kotlin in Action] 10์ฅ. Annotaion ๊ณผ Reflection
์ง๋ ๊ธ(9์ฅ. ์ ๋ค๋ฆญ์ค(Generics)์ ์ด์ด Kotlin in Action ์ด๋ผ๋ ์ฑ ์ ๋ณด๋ฉด์ ๋งค์ฃผ ๊ณต๋ถํ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์ ๊ธฐ๋กํ๋ค. ์ด๋ฒ ์ฃผ๋ 10์ฅ Annotaion ๊ณผ Reflection ์ ๋ํ ๋ด์ฉ์ด๋ค. ์ด๋ฒ ์ฑํฐ๋ ๊ฐ๋ ๋ณด๋ค๋ annotaion ๊ณผ reflection ์ด ๋ง์ด ์ฌ์ฉ๋๋ json serializer ์ธ ์ ์ดํค๋(jkid) ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ์ํ๋ ๋ด์ฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ง ์ ๋ฆฌํ๋ค. ๋ชฉ์ฐจ Annotaion Android Annotations is an annotation-driven framework that allows you to simplify the code in your applications and reduces the boilerplate o..
2022.02.20 -
Android ๋๋ฒ๊น ๋ฐฉ๋ฒ ๋ฐ Tip (Debug mode ์ฌ์ฉํ๊ธฐ)
์ฑ์์ ๋ค์ํ ์ด์๋ก ๋๋ฒ๊น ์ ํ๊ฒ ๋๋ค. ์ด๋, ๋ด ๋ง๋๋ก ์ฑ์ด ๋์์ ํ์ง ์๋๋ค๋ฉด, ๋๋ ์์น ์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๊ทธ ๋ฌธ์ ๊ฐ ์ด๋์ ์๊ธฐ๋์ง, ์ด ๋ฉ์๋๋ฅผ ์ ํ๊ณ ์๋ ๊ฒ์ธ์ง, ๋ณ์์ ๋ด๊ฐ ์๊ฐํ ๊ฐ์ด ์ ์์ ์ผ๋ก ํ ๋น๋๊ณ ์๋์ง ๋ฑ๋ฑ~ ์ ๋ง ๋ค์ํ ์ด์ ๋ก ๋๋ฒ๊น ์ ํด์ผ ํ๋ค. ์ฌ๊ธฐ์๋ ์๋๋ก์ด๋ ์คํ๋์ค์์ ์ ๊ณตํ๋ Debug mode ๋ฅผ ํตํด ๋๋ฒ๊น ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ค. ๋ชฉ์ฐจ โน๏ธ Android Studio Arctic Fox | 2020.3.1 Patch 4 ๊ธฐ์ค์ผ๋ก ์์ฑ๋จ ๋๋ฒ๊ทธ ๋ชจ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ ๊ฐ์ฅ ๋จผ์ ์ฝ๋์ ํน์ ํฌ์ธํธ์์ ์ด๋ค ๊ฐ์ด ๋ค์ด๊ฐ ์๋์ง, ๋ฉ์๋๋ ์ ์คํ๋๊ณ ์๋์ง ๋ฑ์ ์๊ธฐ ์ํด ๋ด๊ฐ ํ์ธํ๊ณ ์ถ์ ์ฝ๋์ break point(์ค๋จ์ )๋ฅผ ๊ฑธ์ด์ผ ํ๋ค. break p..
2022.01.16 -
[Android] Recyclerview ํด๋ฆญํ ์์ดํ ์ ๊ฐ์ด๋ฐ๋ก scroll ๋๊ฒ ํ๊ธฐ
Horizontal Recyclerview ์์ ํด๋ฆญํ ์์ดํ (selected item)์ ๊ฐ์ด๋ฐ๋ก scroll ๋๊ฒ ํ๊ธฐ. ์ฌ์ค ๋ฆฌ์คํธ๊ฐ ๋ง์ง ์์ผ๋ฉด smoothScrollToPosition ๋ฑ์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง, ๋์ ๊ฒฝ์ฐ ๋ฟ๋ ค์ฃผ๋ ๋ฆฌ์คํธ๊ฐ 100๊ฐ๊ฐ ๋์๊ธฐ ๋๋ฌธ์ smoothScrollToPosition ๊ฐ ์ํ๋๋๋ก ๋์ํ์ง ์์๋ค. ์ด์ ๊ด๋ จํด ๊ตฌ๊ธ๋ง์ ํด๋ณด์์ง๋ง, ์ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋์ scrollToPositionWithOffset() ์ ์ด์ฉํด ํด๊ฒฐ!! // selectedPosition: Recyclerview adapter ๋ฅผ ํตํด ๋ฐ์์จ ํด๋ฆญ๋(์ ํ๋) ์์ดํ ์ position private fun scrollSelectedItemToCenter(selectedPositi..
2021.08.16 -
[Android] Progress ๋ฅผ ๋ํ๋ด๋ Custom ProgressBar ๊ตฌํํ๊ธฐ
์ต๊ทผ์ ํ์ฌ์์ custom progress bar ๋ฅผ ๊ฐ๋ฐํด์ผ ํ์๋ค. ์ฌ๊ธฐ์ custom progress bar ๋, spinning ํ์ง ์๋ ๊ณ ์ ๋ progress ๊ฐ์ ํํํ๋ progress bar ์ด๋ค. ์ฆ, ํ์์ ๋คํธ์ํฌ ๋ก๋ฉ ๋ฑ์ ์ฌ์ฉ๋๋ ๋ฌดํ ๋ก๋ฉ์ด ๋๋ progress bar ์ ๋ฌ๋ฆฌ, spinning ํ์ง ์๋ ์์ด๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ๊ฒฐ๊ณผ๋ฌผ ์๋๋ ๊ฒฐ๊ณผ๋ฌผ์ด๋ค. ์ด๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค. progress max ๊ฐ : 100 progressBar width : 76dp. ์ฆ ๋ฐ๊นฅ ์(outer circle)์ ์ง๋ฆ์ด 76dp progressBar ๋๊ป : 10dp ๋ด๋ถ ์(inner circle) ์ง๋ฆ : 56dp ์ค์ ๊ตฌํ - ProgressBar ์์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค๊ธฐ ์ํด์ ๋๋..
2021.08.08 -
[Android] Fragment์์ viewModel ์ ๊ทผ์ onAttach() ์ดํ์ ํด์ผํ๋ ์ด์
TL;DR: Fragment ์์ ์๋์ ๊ฐ์ด viewModel ์์ฑํ์ ๋, onAttach() ๋ฉ์๋๊ฐ ํธ์ถ๋ ์ดํ์ viewModel ์ ์ ๊ทผํด์ผ ํ๋ค. private val viewModel by viewModels() ์ฌ๋ฐ๋ฅธ ์ ๊ทผ (โญ๏ธ) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.apply { viewModel.initAddTask(getInt(ARG_TASK_ID).toLong()) } } ์ฌ๋ฐ๋ฅด์ง ์์ ์ ๊ทผ (โ) override fun onAttach(context: Context) { super.onAttach(context) arguments?.appl..
2021.07.17 -
[Android] ์ ์ฉํ ADB ๋ช ๋ น์ด ๋ชจ์
๊ฐ์ธ์ ์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ ์ ์ฉํ๊ฒ ์ฐ๋ ADB ๋ช ๋ น์ด(command) ๋ชจ์์ด๋ค. ๋ค๋ฅธ ๋ถ๋ค์๊ฒ๋ ๋์์ด ๋์์ผ๋ฉด ์ถ์ด ๊ณต์ ํ๋ค. ํน์ ์ด ๊ธ์ ์ฝ์ผ์๋ ๋ถ๋ค ์ค, ์ด ์ธ์ ์ ์ฉํ ๋ช ๋ น์ด๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ๊ณต์ ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๐ ADB๋, Android Debug Bridge์ ์ฝ์๋ก, ์๋๋ก์ด๋ ๊ธฐ๊ธฐ์ ํต์ ํ ์์๋ ๋ช ๋ น ์ค ๋๊ตฌ(command-line tool)์ ๋๋ค. adb ๋ช ๋ น์ด๋ ์ฑ ์ค์น ๋ฐ ๋๋ฒ๊น ๊ณผ ๊ฐ์ ๋ค์ํ ๊ธฐ๊ธฐ ์์ ์ ์ฉ์ดํ๊ฒํ๋ฉฐ ๊ธฐ๊ธฐ์์ ๋ค์ํ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉํ ์์๋ Unix ์ ธ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. - ๊ตฌ๊ธ ๊ณต์๋ฌธ์ ๋ชฉ์ฐจ ํ์ฌ ์ฐ๊ฒฐ๋ ์๋๋ก์ด๋ ๊ธฐ๊ธฐ(์๋ฎฌ๋ ์ดํฐ ํฌํจ) ๋ชฉ๋ก ํ์ธ adb devices APK ํ์ผ ์ค์น ๋ฐ ์ ๊ฑฐ # ์ค์น adb install X..
2021.07.05