header-img
Info :
CS 31
[Android] Custom View
2023.04.15
๋ฉด์ ‘๊ธฐ๋ก์šฉ Custom View ์ •๋ฆฌ ์ปค์Šคํ…€ ๋ทฐ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์  ์™„์ „ ๋งž์ถค ๋ Œ๋”๋ง ๋œ ๋ทฐ ์œ ํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ ๊ธฐ์กด view ๊ตฌ์„ฑ์š”์†Œ ๊ทธ๋ฃน์„ ์ƒˆ๋กœ์šด ๋‹จ์ผ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ ํ‚ค ๋ˆ„๋ฆ„๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋งž์ถค ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• attrs.xml ์ •์˜ : ์ปค์Šคํ…€ ๋ทฐ์—์„œ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์†์„ฑ์ด ์žˆ๋‹ค๋ฉด attrs.xml์— ์ •์˜ํ•ด์คŒ res > values ํด๋”์— attrs.xml ์„ ์ƒ์„ฑ declare-styleable ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑ ํ›„ name์—๋Š” ์ปค์Šคํ…€๋ทฐ ํด๋ž˜์Šค๋ช…์„ ์ž…๋ ฅ attr ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•ด์„œ name์—๋Š” ์†์„ฑ๋ช…, format์—๋Š” ์†์„ฑ์˜ type์„ ์ž…๋ ฅํ•ด์คŒ // ์˜ˆ์‹œ ์ปค์Šคํ…€ ๋ทฐ ํด๋ž˜์Šค ์ƒ์„ฑ View ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑ, ์ด๋•Œ์˜ ํด๋ž˜์Šค๋ช…์€ ์œ„ attrs..
[Android] Data Binding
2023.04.15
๋ฉด์ ‘๊ธฐ๋ก์šฉ Data Binding ์ •๋ฆฌ Data Binding์€ xml ํŒŒ์ผ์— data๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฒƒ์œผ๋กœ MVVM ํŒจํ„ด์„ ๊ตฌํ˜„ํ•  ๋•Œ LiveData์™€ ํ•จ๊ป˜ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋จ. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์˜ ์žฅ์ ์€ ๊ธ€๋ฃจ ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋“ค์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ ๋ถ€๋ถ„ // ... // ... ์ „์ฒด๋ฅผ ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ์ฃผ๊ณ  ํƒœ๊ทธ ์‚ฌ์ด์— ํƒœ๊ทธ๋กœ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์คŒ. ๋‚˜๋Š” viewmodel์„ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์คŒ. class MainActivity : BaseActivity(R.layout.activity_main) { override val viewModel by viewModels..
list_img
[Android] MVVM
2023.04.13
๋ฉด์ ‘์ค€๋น„์šฉ MVVM - Android ์ •๋ฆฌ (๋งจ ์•„๋ž˜์˜ ๋ ˆํผ๋Ÿฐ์Šค๋“ค์„ ๊ผญ ํ™•์ธํ•ด์ฃผ์„ธ์š”.) MVC ๊ตฌ์„ฑ : Model, View(์œ ์ €๊ฐ€ ๋ณด๊ณ ์žˆ๋Š” ํ™”๋ฉด), Controller ํ๋ฆ„ : Controller์—์„œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ → ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ Model ์—…๋ฐ์ดํŠธ๋ฅผ ์š”์ฒญ → View์— ์ „๋‹ฌ → View๋Š” Model์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ฐ›์•„์„œ ๊ฐฑ์‹  View, Controller์— ๋กœ์ง์ด ์ดํ•ฉ๋˜์–ด ์žˆ์–ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ด ์‰ฝ์ง€ ์•Š์Œ. ๋˜ํ•œ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์— ํŠน์ • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ด๋„ ์–ด๋ ค์›€์ด ์žˆ์Œ. MVP ๊ตฌ์„ฑ : Model, View, Presenter(View์—์„œ ์š”์ฒญํ•œ ์ •๋ณด๋ฅผ Model๋กœ๋ถ€ํ„ฐ ๊ฐ€๊ณตํ•˜์—ฌ ๋ทฐ๋กœ ์ „๋‹ฌ) ํ๋ฆ„ : ์‚ฌ์šฉ์ž์˜ ์•ก์…˜์„ View๋กœ๋ถ€ํ„ฐ ๋ฐ›์Œ → View๋Š” ๋ฐ›์€ ์ด๋ฒคํŠธ๋ฅผ Presenter๋กœ ๋„˜๊น€ → P..
list_img
[Android] ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ์†Œ์Šค
2023.04.07
bitmap ๋ฐฉ์‹ ์ข…๋ฅ˜ mdpi : ์ดˆ์ฐฝ๊ธฐ๋กœ 1px = 1dp์ž„ hdpi : 1.5px = 1dp xhdpi : 2px = 1dp xxhdpi : 3px = 1dp xxxhdpi : 4px = 1dp ํ•ด์ƒ๋„์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ cpu์˜ ๋…ธ๋™ ๊ฐ•๋„๊ฐ€ ๋‹ฌ๋ผ์ง ๋งŒ์•ฝ xxxhdpi์˜ ํ•ด์ƒ๋„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ xxxhdpi์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด xxhdpi, xhdpi, hdpi, mdpi ์ˆœ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์•„๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ ๋น„ํŠธ๋งต์€ ์šฉ๋Ÿ‰์ด ํฐ ๋Œ€์‹  ํ’ˆ์งˆ์ด ์ข‹์Œ, ๊ทธ๋Ÿฌ๋‚˜ xxxhdpi์˜ ํ•ด์ƒ๋„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋˜๋Š”๋ฐ ์—†์–ด์„œ mdpi๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ pixel์ด ์ฐŒ๊ทธ๋Ÿฌ๋“œ๋Š” ๋‹จ์ ์ด ์กด์žฌ vector svg ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ๋กœ xml code๋กœ ์ด๋ฃจ์–ด์ง ๋Œ€์ฒด๋กœ ์šฉ๋Ÿ‰์ด ์ž‘์Œ ์–ด๋–ค ํฌ๊ธฐ์—๋„ ์ƒ๊ด€ ์—†์Œ (ํฌ๊ธฐ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์Œ) →..
list_img
[Android] AOS ART, Garbage Collector ๋ฐฉ์‹
2023.04.07
Android Linux ๊ธฐ๋ฐ˜ ART(Android Runtime)์ด java๋กœ ๋Œ์•„๊ฐ€๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ๋…๋„ Java ๋ฐฉ์‹์„ ์‚ฌ์šฉ ART? ART๋Š” Android 5.0 (API ๋ ˆ๋ฒจ 21) ์ด์ƒ์ด ์‹คํ–‰๋˜๋Š” ๊ธฐ๊ธฐ์˜ ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„. ์ด ๋Ÿฐํƒ€์ž„์€ Android ํ”Œ๋žซํผ๊ณผ ์•ฑ์˜ ์„ฑ๋Šฅ, ์œ ์—ฐ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณต. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋˜ Dalvik VM์˜ ํ•œ๊ณ„์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ ๊ฐœ๋ฐœ๋œ ๋Ÿฐํƒ€์ž„ ART์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC) ๊ฐœ์„  GC๋Š” ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ด๋ฏ€๋กœ ์•ฑ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œ์ผœ ํ™”๋ฉด ๋Š๊น€, UI ์‘๋‹ต์„ฑ ๋ถ€์กฑ ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚จ. ART์—์„œ๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ์กฐ๊ฐํ™”๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋™์‹œ ๋ณต์‚ฌ, ๋‹จ์ผ GC ์ผ์‹œ์ค‘์ง€๊ฐ€ ์žˆ๋Š” ๋™์‹œ ์‹คํ–‰ ์„ค๊ณ„… ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ GC๋ฅผ ๊ฐœ์„  ART ๋ฐฉ์‹? m..
list_img
[etc] vi editor ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด
2023.04.07
vi editor ํŒŒ์ผ ์—ด๊ธฐ vi example.txt //์ผ๋ฐ˜ ์—ด๊ธฐ open -a Sublime\ Text example.txt //GUI ๊ธฐ๋ฐ˜ ์—๋””ํ„ฐ๋กœ ์—ด๊ธฐ //ํŒ! ์•„๋ž˜์™€ ๊ฐ™์ด alias๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•จ alias sublime='open -a Sublime\ Text' vi ํŒŒ์ผ ์ €์žฅ ๋ฐ ์ข…๋ฃŒ ํŽธ์ง‘ ๋ชจ๋“œ > ESC > :wq (์ €์žฅ ํ›„ ์ข…๋ฃŒ) :w ์ €์žฅ :q ์•„๋ฌด ์ˆ˜์ • ์ž‘์—… ํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ด์ „์— :w๋กœ ์ €์žฅํ•œ ํ›„ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ :wq ์ €์žฅ ํ›„ ์ข…๋ฃŒ :q! ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ line number :set number :set nonumber //number ๋‹ค์‹œ ๊ฐ์ถ”๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ํŽธ์ง‘ ๋ชจ๋“œ (Insert Mode, Edit Mode) ํŽธ์ง‘ ๋ชจ๋“œ์˜ ์ตœํ•˜๋‹จ๋ถ€์—๋Š” “ํŒŒ์ผ ์ด๋ฆ„” ๋ผ์ธ์ˆ˜,..