์ ์ฒด ๊ธ (79) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 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( ) .. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 10. ์ค์ ํ๋ก์ ํธ(3) - ์ ์์ก์ ์ค์ ํ๋ก์ ํธ ์ค์ต - ์ ์ ์ก์ ์ฃผ์๊ตฌ์ฑ - ํ๋๊ทธ๋จผํธ๋ผ๋ UI ์กฐ๊ฐ์ผ๋ก ๊ตฌ์ฑํ๊ณ ํ๋๊ทธ๋จผํธ๋ค์ ์ข์ฐ๋ก ์ฌ๋ผ์ด๋ ํ ์ ์๋๋ก ๋ทฐํ์ด์ ViewPager๋ฅผ ์ฌ์ฉ - ์ฌ์ง์ด๋ฏธ์ง ๋ก๋ฉ์ Glide ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ - timer๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ฌ๋ผ์ด๋ ๋๊ฒ ํจ 1. ํ๋ก๋ฐ์ด๋ ์ฌ์ฉ ์ฝํ ์ธ ํ๋ก๋ฐ์ด๋ - ์ฑ์ ๋ฐ์ดํฐ ์ ๊ทผ์ ๋ค๋ฅธ ์ฑ์ ํ์ฉํ๋ ์ปดํฌ๋ํธ - ํ๋ก๋ฐ์ด๋๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ์์ โ ์ฌ์ง ๋ฐ์ดํฐ๋ ์ธ๋ถ ์ ์ฅ์์ ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก ์ธ๋ถ ์ ์ฅ์ ์ฝ๊ธฐ ๊ถํ์ ์ฑ์ ๋ถ์ฌ โก ์ธ๋ถ ์ ์ฅ์ ์ฝ๊ธฐ ๊ถํ์ ์ํ ๊ถํ์ผ๋ก ์คํ ์ค์ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ํ์ฉํ๋๋ก ํจ โข contentResolver ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ Cursor ๊ฐ์ฒด๋ก ๊ฐ์ง๊ณ ์ด ์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ - ์กํฐ๋นํฐ: ํ๋ฉด.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 9. ์ค์ ํ๋ก์ ํธ(2) - ์คํฑ์์น ์ค์ ํ๋ก์ ํธ ์ค์ต - ์คํฑ ์์น ์ฃผ์๊ตฌ์ฑ - ๋น ๋ฅด๊ฒ ๊ณ์ฐํ๋ฉด์ UI๋ฅผ ๊ฐฑ์ - ๊ฐ๊ฐtimer์ runOnUiThread ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ตฌํ - ๋ฉํ์์ ๋์ ํ์ฌ ํ์ํ ScrollView์ ๋์ ์ผ๋ก TextView๋ฅผ ์ถ๊ฐ 1. ํ๋ฉด๊ตฌ์ฑ - ์๊ฐ์ ํ์ํ๋ TextView 2๊ฐ - ํ์ด๋จธ๋ฅผ ์์ ๋ฐ ์ผ์์ ์ง, ์ด๊ธฐํํ๋ FloatingActionButton (๋ฒกํฐ ์์ด์ฝ ์ด๋ฏธ์ง 3๊ฐ ์ถ๊ฐ) - tint๋ก ์์ ๋ฐ๊พธ๊ธฐ → xml ์ฝ๋์์ app:tint="@color/white"์ถ๊ฐ - FloatingActionButton ์ถ๊ฐ์ No speakable text present๋ผ๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ activity_main.xml์์ FloatingActionButtom ์์ฑ์ tools:ign.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 8. ์ค์ ํ๋ก์ ํธ(1) - ๋น๋ง๋๊ณ์ฐ๊ธฐ ์ค์ ํ๋ก์ ํธ ์ค์ต - ๋น๋ง๋ ๊ณ์ฐ๊ธฐ ์ฃผ์๊ตฌ์ฑ - ๋ชธ๋ฌด๊ฒ๋ฅผ ์ ๋ ฅํ๋ ํ๋ฉด๊ณผ ๋น๋ง๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด์ผ๋ก ๊ตฌ์ฑ๋์ด ์กํฐ๋นํฐ๊ฐ ๋ ๊ฐ ํ์ํจ - ์ธํ ํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์์ ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ์ ๋ฌํจ - ConstraintLayout ๊ธฐ๋ฐ 1. res > values > color.xml - ์ก์ ๋ฐ ์์ ๋ฐ๊พธ๊ธฐ ์ํด ์ปฌ๋ฌ ์ฝ๋ ์ถ๊ฐ - 16์ง์๋ก #FF000000 #FFFFFFFF #FF018786 #00584A 2. res > values > themes > themes.xml - 3. activity_main.xml design๋ชจ๋์์ ์์ ฏ ์ถ๊ฐ - EditText 2๊ฐ, Button 1๊ฐ 4. activity_result.xml design๋ชจ๋์์ ์์ ฏ ์ถ๊ฐ - File > New > Activity > E.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 7. ์์ ฏ - ํ ์คํธ๋ทฐ/์๋ํธํ ์คํธ,๋ฒํผ/์ปดํ์ด๋๋ฒํผ/์ด๋ฏธ์ง๋ฒํผ ๋ค์ด๊ฐ๊ธฐ ์ .. [์ฐธ๊ณ ] XML ์๋ฆฌ๋จผํธ - root element๋ ํ๋ ์ด์์ child element๋ฅผ ๊ฐ์ง - ๊ฐ child element๋ ํ๋ ์ด์์ subchild element๋ฅผ ๊ฐ์ง ์ ์์ ๋ฐ์ดํฐ - ๋ฐ์ดํฐ๊ฐ ์๋ ์๋ฆฌ๋จผํธ๋ empty element๋ผ๊ณ ํ๋ฉฐ, ๋๋ ๋ก ํํํจ - ์๋ฆฌ๋จผํธ๋ ์ฌ๋ฌ ๊ฐ์ ์์ฑ์ ์ง์ ํ ์ ์์ผ๋ฉฐ ๊ฐ ์์ฑ์ ์์ฑ๋ช ๊ณผ ์์ฑ๊ฐ์ผ๋ก ํํ ์ฃผ์๋ฌธ - xml๋ฌธ์์ ์ฃผ์๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํจ ์์ ฏ ํ ์คํธ๋ทฐ - View ํด๋์ค ๋ฐ๋ก ๋ค์์ ์์นํ๋ฉฐ ๋ค์ํ ์์ ฏ์ด ๊ทธ ํ์์ ์กด์ฌํจ text ์์ฑ - ํ ์คํธ๋ทฐ์ ๋ํ๋๋ ๋ฌธ์์ด์ ํํ - “๋ฌธ์์ด” ํ์์ผ๋ก ๊ฐ์ ์ง์ ์ ๋ ฅํ๊ฑฐ๋ “@string/๋ณ์๋ช ” ํ์์ผ๋ก ์ง์ ํ ํ strings.xml ํ์ผ์ ์ง์ ํ ์ ์์ tex.. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 6. ๋ ์ด์์(3) - ๊ทธ๋ฆฌ๋ ๋ ์ด์์/์ปจ์คํธ๋ ์ธํธ ๋ ์ด์์(์ฒด์ด๋, ๊ฐ์ด๋๋ผ์ธ)/+ ์๋๋ก์ด๋ ์คํ๋์ค ํ์ฉํ๊ธฐ(์๋์ ์ฅ, ์ฝ๋์๋์์ฑ, ๋๋ฒ๊น ) ๋ ์ด์์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์(GridLayout) - ๊ฒฉ์(grid) ๋ด๋ถ์ ์ ์ ์์ ๋ทฐ๋ฅผ ๋ฐฐ์นํ๋ ๋ทฐ ๊ทธ๋ฃน - ํ ์ด๋ธ ๋ ์ด์์๊ณผ ๋น์ทํ์ง๋ง, ๊ฐ๊ฐ์ ์์ ๋ทฐ๊ฐ ์์ ์ ์์น์ ์ฐจ์งํ๋ ์ ์ ๊ฐ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ง์ ๊ฐ๋ฅ ์์ฒด์ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ - rowCount: ํ์ ์ - columnCount: ์ด์ ์ - orientation: ๊ทธ๋ฆฌ๋๋ฅผ ์ํ ๋ฐฉํฅ์ผ๋ก ์ฐ์ ํ ๊ฒ์ธ์ง, ์์ง ๋ฐฉํฅ์ผ๋ก ์ฐ์ ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์์ ํฌํจ๋ ์์ ฏ์ ์ค์ ํ๋ ์์ฑ - layout_row: ์์ ์ด ์์นํ ํ ๋ฒํธ(0๋ฒ๋ถํฐ ์์) - layout_column: ์์ ์ด ์์นํ ์ด ๋ฒํธ(0๋ฒ๋ถํฐ ์์) - layout_rowSpan: ํ์ ์ง์ ๋ ์๋งํผ ํ์ฅํจ - layout_columnSpan: ์ด์ ์ง์ ๋ ์๋งํผ .. [์๋๋ก์ด๋ ์ฝํ๋ฆฐ] 5. ๋ ์ด์์(2) - ๋ฆฌ๋์ด ๋ ์ด์์/๋ ๋ฌํฐ๋ธ ๋ ์ด์์/ํ ์ด๋ธ ๋ ์ด์์ ๋ ์ด์์ ๋ฐฐ์น๋ฅผ ๋ด๋นํ๋ ๋ ์ด์์ - ๋ ์ด์์ ์์ ์กด์ฌํ๋ ์์ ฏ์ ๋ฐฐ์นํ๊ฒ ํด์ค - ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ฑํ๋ฉด ํ๋ฉด์ ๊ตฌ์ฑํ ์ ์๋ activity_main์ด๋ผ๋ ์ด๋ฆ์ ๋ ์ด์์ ํ์ผ์ด ์๋์ผ๋ก ๋ง๋ค์ด์ง - ๋ ์ด์์ ํ์ผ์ ์์ค ์ฝ๋๊ฐ ์๋ ๋ฆฌ์์ค๋ก ๋ถ๋ฅ๋จ - ํ์ผ๋ช ์ ๋ชจ๋ ์๋ฌธ์๋ก ์์ฑ๋จ - ํ์ผ ์ด๋ฆ ๋์ ํ์ผ์ ํ์ ์ธ XML์ ๋ถ์ฌ์ activity_main.xml์ด ๋จ ์์ฃผ ์ฌ์ฉ๋๋ ๋ ์ด์์ 1) ๋ฆฌ๋์ด ๋ ์ด์์(์ ํ, LinearLayout) 2) ๋ ๋ฌํฐ๋ธ ๋ ์ด์์(์๋, RelativeLayout) 3) ํ ์ด๋ธ ๋ ์ด์์(TableLayout) 4) ๊ทธ๋ฆฌ๋ ๋ ์ด์์(GridLayout) 5) ํ๋ ์ ๋ ์ด์์(FrameLayout) 6) ์ปจ์คํธ๋ ์ธํธ ๋ ์ด์์(์ ์ฝ, ConstraintLayout.. ์ด์ 1 2 3 4 5 6 ยทยทยท 10 ๋ค์