Study/Android (18) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] ํ๋ก์ ํธ - ํ๋๊ทธ๋จผํธ๋ฅผ ์ด์ฉํ ๋ค๋น๊ฒ์ด์ ๋ฐ 2023.7.24~25 1. ์ค๋น 1) ๋ฉ์ธ ์กํฐ๋นํฐ - activity_main.xml / MainActivity.kt 2) ๋ค๋น๊ฒ์ด์ ๋ฐ ๋ฉ๋ด (res > ์ฐํด๋ฆญ new > Android Resource Derectory, menu ์ถ๊ฐ / menu resource file๋ก ์์ฑ) - bottom_nav.xml 3) ํ๋๊ทธ๋จผํธ(๋ค๋น๊ฒ์ด์ ๋ฐ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด ์ ํ์ ์ํด ํ์ํ ๋งํผ์ ํ๋๊ทธ๋จผํธ๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋จ) - fragment_asmr.xml / AsmrFragment.kt - fragment_book_search.xml / BookSearchFragment.kt - fragment_home.xml / HomeFragment.kt - fragment_book_shelf.xml / BookShelfF.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] ํ๋ก์ ํธ - RecyclerView(๋ฆฌ์ฌ์ดํ๋ฌ๋ทฐ)๋ฅผ ์ด์ฉํ ์กํฐ๋นํฐ ์ ํ 2023.7.29 1. ์ค๋น - ์ด์ ๊ฒ์๋ฌผ(https://hibread.tistory.com/75)์ ์ฐ์ฅ์ ์ผ๋ก ์ฑ ์ ๋ณด๋ฅผ ๋ฐ์ ํ๋ฉด์ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ๋ฆฌ์ฌ์ดํ๋ฌ๋ทฐ๋ฅผ ํด๋ฆญํ์ ๋ ์ฑ ์ ๋ณด๊ฐ ๋ํ๋๋ ์กํฐ๋นํฐ๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค. - ์ด์ ์ ์ฌ์ฉํ ํ์ผ: BookAdapter.kt - activity_second.xml, SecondActivity.kt 2. xml ์์ฑ - activity_second.xml 3. BookAdapter.kt ์ฝ๋ ์ถ๊ฐ - ๋ฆฌ์ฌ์ดํ๋ฌ๋ทฐ์ ์์ดํ ์ ํด๋ฆญํ์ ๋ ๊ทธ ์์ดํ ์ ์ ๋ณด์ ํจ๊ป ์กํฐ๋นํฐ ์ด๋ import android.content.Intent import android.util.Log import android.view.LayoutInflater import andro.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] ํ๋ก์ ํธ - ๋ค์ด๋ฒ ์ฑ api ํต์ 2023.7.28 1. ๋ค์ด๋ฒ ์ฑ api ํต์ ์ ํ์ํ ๊ฒ - ๋ค์ด๋ฒ ์คํ์์ค https://developers.naver.com/main/ - ์ฑ api ์ ๋ณด https://developers.naver.com/docs/serviceapi/search/book/book.md#%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0 - Application > ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก - ๋ด ์ ํ๋ฆฌ์ผ์ด์ - Clinet ID(ํด๋ผ์ด์ธํธ id), Client Secret(ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ)์ api ์ฝ๋ ์์ฑ์ ํ์ํจ 2. ์ค๋น - MainActivity.kt / activity_main.xml - item_book.xml (๋ฆฌ์ฌ์ดํ๋ฌ๋ทฐ ์์ดํ ) - BookSearchAdapter.kt (๋ฆฌ์ฌ์ดํ๋ฌ๋ทฐ ์ด.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] ํ๋ก์ ํธ - ์คํ๋์ฌ 2023.7.25 1. ์ค๋น - ์ด๋ฏธ์ง ์ค๋น - SplashActivity.kt - activity_splash.xml 2. activity_splash.xml ์์ฑ - background ์ด๋ฏธ์ง๋ก ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ์ฃผ์๋ค. 2. themes.xml ์์ฑ - res > values > themes - windowNoTitle: ์๋จ ํ์ดํ ๋ฐ - windowFullscreen: ํ์คํฌ๋ฆฐ ๋ชจ๋ (์๋จ ์ก์ ๋ฐ์ ์ํ๋ฐ ๋ชจ๋ ํ์X) 3. SplashActivity.kt ์์ฑ - Handler ํจ์ ์ด์ฉ package com.example.bartest import android.content.Intent import androidx.appcompat.app.AppCompatActivity import andro.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 14. DB ํ๋ก์ ํธ - ์๊ฐ์ ์ ๋ณด ๊ด๋ฆฌ DB ํ๋ก์ ํธ ์๊ฐ์ ์ ๋ณด ๊ด๋ฆฌ ์ฃผ์ ๊ตฌ์ฑ - ์ด 4๊ฐ์ ํ๋ฉด์ผ๋ก ๊ตฌ์ฑ๋จ - ์ฑ์ ์๊ฐํ๋ ๋ฉ์ธ ํ๋ฉด - ์๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ ํ๋ฉด - ๊ฐ๋ณ ์๊ฐ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ํ๋ฉด - ๋ชจ๋ ์๊ฐ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ ํ๋ฉด - SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉ - ์ถ๋ ฅํด์ผ ํ ๋ฐ์ดํฐ ์๊ฐ ์ ํด์ ธ ์์ง ์์ผ๋ฏ๋ก ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ค์ ํจ ํ์ผ ํธ์ง ์์ - ๋ฉ์ธ์กํฐ๋นํฐ - MainActivity.kt / activity_main.xml / menu_main.xml - ์๊ฐ์ ๋ฑ๋ก ์กํฐ๋นํฐ - PersonnelReg.kt / activity_personnel_reg.xml/menu_personnel_reg.xml - ์๊ฐ์ ์ ๋ณด ์กํฐ๋นํฐ - PersonnelInfo.kt / activity_personnel_info.xml .. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 13. DB ํ๋ก์ ํธ - ๊ทธ๋ฃน ๊ด๋ฆฌ DB ํ๋ก์ ํธ ๊ทธ๋ฃน ๊ด๋ฆฌ [์ฐธ๊ณ ] ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ ๋ฐฉ๋ฒ ์ค๋ช ๊ณต์ ํ๋ ํผ๋ฐ์ค(Shared Preferences) ํค-๊ฐ ์(key-value pair)์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ ๋ด๋ถ ์ ์ฅ(Internal Storage) ๋ด๋ถ ์ ์ฅ์์ ์ ์ฅ ์ธ๋ถ ์ ์ฅ(External Storage) ์ธ๋ถ ์ ์ฅ์์ ์ ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database) ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ๋คํธ์ํฌ ์ฐ๊ฒฐ(Network Connection) ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ ์๋ฒ์ ์ ์ฅ - ๋ด๋ถ ์ ์ฅ์์ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ์ฑ ์ ๊ฑฐํ๋ฉด ํ์ผ๋ ๊ฐ์ด ์ ๊ฑฐ๋จ - ์ธ๋ถ์ ์ฅ: SD์นด๋ ๊ฐ์ ์ธ๋ถ ์ ์ฅ์ ํ์. ๋ชจ๋ ์ฑ๋ค์ด ๋ค ์ ๊ทผํ ์ ์์(๊ณต์ ํ์ํ ํ์ผ์ ์ ํฉ) - ๋ด๋ถ์ ์ธ๋ถ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฐ์ฅ ํฐ ํน์ง: permission - ๋ด๋ถ: permissio.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 12. ์ค์ ํ๋ก์ ํธ(5) - ์ค๋กํฐ ์ค์ ํ๋ก์ ํธ ์ค์ต - ์์ ๋ฑ ์ฃผ์๊ตฌ์ฑ - ๊ฐ๋กํ๋ฉด์ผ๋ก ๊ณ ์ ๋ ํ ์กํฐ๋นํฐ์ ๋, ๋ , ๋ฏธ, ํ, ์, ๋ผ, ์, ๋ ์ํ์ด ์์ - ์ํ์ ๋๋ฅด๋ฉด ํด๋น ์์ด ์ฌ์๋จ - ์ํ์ ํ ์คํธ ๋ทฐ ์์ฑ์ ์์ ํ๊ณ , ์๋ฆฌ๋ SoundPool ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ํจ - SoundPool์ ์๋๋ก์ด๋ 5.0๋ถํฐ ์ฌ์ฉ๋ฒ์ด ๋ฌ๋ผ์ง - ๊ตฌ ๋ฒ์ ๊ณผ ์ ๋ฒ์ ๊ธฐ๊ธฐ์์ ๋ชจ๋ ์ ๋์ํ๋๋ก ๋ฒ์ ๋ถ๊ธฐ๋ฅผ ์ ์ฉํจ 1. ๋ ์ด์์ ์์ฑ ๊ฐ๋ก ๋ชจ๋๋ก ๊ณ ์ ํ๊ธฐ ๋ฐฉ๋ฒ1) MainActivity.kt class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // ํ๋ฉด์ด ๊ฐ๋ก ๋ชจ๋๋ก ๊ณ ์ ๋๊ฒ ํ๊ธฐ ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ //requestedOr.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 11. ์ค์ ํ๋ก์ ํธ(4) - ์์ ๋ฑ / + ์๋น์ค ์ค์ ํ๋ก์ ํธ ์ค์ต - ์์ ๋ฑ ์ฃผ์๊ตฌ์ฑ - ์์ ๋ฑ ์ฑ์ ์ฑ๊ณผ ์์ ฏ์ผ๋ก ๊ตฌ์ฑ - ์ฑ๊ณผ ์์ ฏ ๋ชจ๋ ์์ ๋ฑ์ ์ผ๊ณ ๋๋ ์ธํฐํ์ด์ค๋ง์ ์ ๊ณตํ๊ณ ํต์ฌ ๊ธฐ๋ฅ์ ์๋น์ค์์ ์ํ โป ์์ ๋ฑ ๊ธฐ๋ฅ์ ๊ฐ์๊ธฐ๊ธฐ๋ก ๋ถ๊ฐ! ์๋๋ก์ด๋ ์คํ๋์ค์ ํด๋ํฐ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ https://curryyou.tistory.com/375 1. ์์ ๋ฑ ๊ธฐ๋ฅ ๊ตฌํ ์์ ๋ฑ ๊ธฐ๋ฅ์ Torch ํด๋์ค ์์ฑ - ์์ ๋ฑ ๊ธฐ๋ฅ์ ๋ณ๋์ ํด๋์ค๋ก ๋ถ๋ฆฌํด์ Torch ํด๋์ค๋ฅผ ์๋ก ์์ฑ โ ํ๋ก์ ํธ ์ฐฝ์ ํจํค์ง๋ช ์์ ๋ง์ฐ์ค ์ฐํด๋ฆญ์ ํ์ฌ New → Kotlin File/Class๋ฅผ ํด๋ฆญํ๋ฉด ํ์ผ ์ข ๋ฅ์ ์ด๋ฆ์ ๊ฒฐ์ ํ๋ ํ๋ฉด์ด ํ์ โก ํ์ผ ์ด๋ฆ์ผ๋ก Torch๋ฅผ ์ ๋ ฅํ๊ณ ์ข ๋ฅ๋ Class๋ฅผ ์ ํํ์ฌ OK๋ฅผ ํด๋ฆญ โ ์ด ํด๋์ค๋ ํ๋์๋ฅผ ์ผ๋ flashOn( ) .. ์ด์ 1 2 3 ๋ค์