์ „์ฒด ๊ธ€ 402

[React-Native] 2. Splash Screen(์‹คํ–‰ํ™”๋ฉด) ์ถ”๊ฐ€ํ•˜๊ธฐ

# ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ์ค€ 1. react-native-splash-screen ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ -ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฒฝ๋กœ์—์„œ ์‹คํ–‰ npm i react-native-splash-screen --save 2. react-native-splash-screen ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™•์ธ -package.json ํ™•์ธ 3. MainActivity.java์— ์ฝ”๋“œ ์ถ”๊ฐ€ 3-1. import ์ถ”๊ฐ€ // react-native-splash-screen >= 0.3.1 import org.devio.rn.splashscreen.SplashScreenReactPackage; 3-2. onCreate ์ถ”๊ฐ€ @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen.sh..

[React-Native] 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

# ์•ˆ๋“œ๋กœ์ด๋“œsdk, ๊ฐ€์ƒ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์„ค์น˜๊ณผ์ •์€ ์ƒ๋žต 1. Node.js ์„ค์น˜ํ•˜๊ธฐ nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. Node.js ์„ค์น˜ํ™•์ธ node -v 3. React-Native-Cli ์„ค์น˜ npm install -g react-native-cli 4. React-Native-Cli ์„ค์น˜ํ™•์ธ react-native -v 5. React-Native ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ -ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ํ™•์ธ react-native init TestProject 6. React-Native ํ”„๋กœ์ ํŠธ ์‹คํ–‰ react-native run-android

์ธ์Šคํƒ€๊ทธ๋žจ ๋Œ“๊ธ€์ž…๋ ฅ EditText ๋งŒ๋“ค์–ด๋ณด๊ธฐ

์ธ์Šคํƒ€๊ทธ๋žจ์˜ EditText 1. ํ…์ŠคํŠธ ์ž…๋ ฅ ์˜์—ญ ๋์— ๋„๋‹ฌํ›„์—๋„ ๋‚ด์šฉ์ž…๋ ฅ์‹œ ์ž๋™์œผ๋กœ ๊ฐœํ–‰๋œ๋‹ค 2. EditText์˜ ์—”ํ„ฐ๋ฒ„ํŠผ ์•ก์…˜์ด ๋ณด๋‚ด๊ธฐ ์ด๋‹ค ๊ธฐ๋ณธ์ ์ธ EditText 1. ํ…์ŠคํŠธ ์ž…๋ ฅ ์˜์—ญ ๋์— ๋„๋‹ฌํ›„์—๋„ ๋‚ด์šฉ์ž…๋ ฅ์‹œ ์ž๋™์œผ๋กœ ๊ฐœํ–‰๋œ๋‹ค 2. EditText์˜ ์—”ํ„ฐ๋ฒ„ํŠผ์ด ์•ก์…˜์ด ๊ฐœํ–‰ ์ด๋‹ค ์ธ์Šคํƒ€๊ทธ๋žจ์˜ ๋Œ“๊ธ€์ž…๋ ฅ EditText๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค 1. ํ…์ŠคํŠธ ์ž…๋ ฅ ์˜์—ญ๋์— ๋„๋‹ฌํ›„์—๋„ ๋‚ด์šฉ์ž…๋ ฅ์‹œ ๊ฐœํ–‰๋ ๊ฒƒ 2. EditText์˜ ์—”ํ„ฐ๋ฒ„ํŠผ ์•ก์…˜์ด ๋ณด๋‚ด๊ธฐ ์ผ๊ฒƒ EditText ์†์„ฑ inputType ์†์„ฑ ๊ฐ’ ์ข…๋ฅ˜ ์ถœ์ฒ˜ : http://wakeupjava.tistory.com/entry/View-EditText%EC%99%80-inputType%EC%86%8D%EC%84%B1%EC%9D%98-%..

Dev_Study/Android 2018.02.20

์˜ค๋ธŒ์ ํŠธ์™€ ์˜์กด๊ด€๊ณ„

DAO (Data Access Object) DB๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ „๋‹ดํ•˜๋„๋ก ๋งŒ๋“  ์˜ค๋ธŒ์ ํŠธ ์ž๋ฐ”๋นˆ (Java Bean) ๋‘๊ฐ€์ง€ ๊ด€๋ก€๋ฅผ ๋”ฐ๋ผ ๋งŒ๋“ค์–ด์ง„ ์˜ค๋ธŒ์ ํŠธ 1. ๋””ํดํŠธ ์ƒ์„ฑ์ž :์ž๋ฐ”๋นˆ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋Š” ๋””ํดํŠธ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค ํˆด์ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋ฆฌํ”Œ๋ ‹๊ฒฌ์„ ์ด์šฉํ•ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค 2. ํ”„๋กœํผํ‹ฐ :์ž๋ฐ”๋นˆ์ด ๋…ธ์ถœํ•˜๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ์†์„ฑ์„ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ํ•œ๋‹ค ํ”„๋กœํผํ‹ฐ๋Š” set์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜์ •์ž ๋ฉ”์†Œ๋“œ(setter)์™€ get์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ ‘๊ทผ์ž ๋ฉ”์†Œ๋“œ(getter)๋ฅผ ์ด์šฉํ•ด ์ˆ˜์ • ๋˜๋Š” ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค ๋ฆฌํŒฉํ† ๋ง (Refactoring) ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ์™ธ๋ถ€์˜ ๋™์ž‘๋ฐฉ์‹์—๋Š” ๋ณ€ํ™”์—†์ด ๋‚ด๋ถ€๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—… ๋ฉ”์†Œ๋“œ ์ถ”์ถœ (Extract Method) ์ค‘๋ณต๋œ ..

JavaStudy/Spring 2018.02.19

16. AsyncTask

์ƒˆ๋กœ ๋งŒ๋“  ์Šค๋ ˆ๋“œ์—์„œ UI๊ฐ์ฒด์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋Š”๋ฐ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ข€ ๋” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด AsyncTask ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค AsyncTask ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  execute()๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด ๊ฐ์ฒด๋Š” ์ •์˜๋œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•˜๋ฏ€๋กœ UI๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†๊ฒŒ๋œ๋‹ค AsyncTask ์ฃผ์š” ๋ฉ”์†Œ๋“œ doInBackground ์ƒˆ๋กœ ๋งŒ๋“  ์Šค๋ ˆ๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค execute()๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐฐ์—ด๋กœ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค onPreExecute ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ์ „์— ํ˜ธ์ถœ๋œ๋‹ค ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜..

Dev_Study/Android 2018.02.07

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ

6๊ฐ€์ง€ ์ผ๋ฐ˜ํ™”๋œ ๋ฐ€๋„ ํ™”๋ฉดํฌ๊ธฐ dpi ์ตœ์†Œ ํฌ๊ธฐ ldpi(์ €๋ฐ€๋„) ~120dpi 426dp X 320dp mdpi(์ค‘๊ฐ„๋ฐ€๋„) ~160dpi 470dp X 320dp hdpi(๊ณ ๋ฐ€๋„) ~240dpi 640dp X 480dp xhdpi(์ดˆ๊ณ ๋ฐ€๋„) ~320dpi 960dp X 720dp xxhdpi(์ดˆ์ดˆ๊ณ ๋ฐ€๋„) ~480dpi xxxhdpi(์ดˆ์ดˆ์ดˆ๊ณ ๋ฐ€๋„) ~640dpi ํ™”๋ฉดํฌ๊ธฐ๋ณ„ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ(px) ํ™”๋ฉดํฌ๊ธฐ ์ ์‘ํ˜• ์•„์ด์ฝ˜ Google Play Store ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜ & ๋ฉ”๋‰ด ์•„์ด์ฝ˜ ์•ก์…˜๋ฐ” ์•„์ด์ฝ˜ & ์ƒํƒœํ‘œ์‹œ์ค„ ์•„์ด์ฝ˜ ํƒญ ์•„์ด์ฝ˜ & ๋Œ€ํ™” ์•„์ด์ฝ˜ & ๋ชฉ๋ก๋ณด๊ธฐ ์•„์ด์ฝ˜ ldpi 512 x 512px 36 x 36px 18 x 18px 24 x 24px mdpi 512 x 512px 48 x 48px 24 x 24px..

Dev_Study/Android 2018.02.06

1. iOS ์•ฑ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ

์•ฑ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ(px) ์žฅ์น˜ AppStore ์•„์ด์ฝ˜ ์•ฑ ์•„์ด์ฝ˜ ์•ฑ ์‹œ์ž‘ํ™”๋ฉด ์ŠคํฌํŠธ๋ผ์ดํŠธ ์•„์ด์ฝ˜ ์„ค์ • ์•„์ด์ฝ˜ ์•Œ๋ฆผ์•„์ด์ฝ˜ ํƒ์ƒ‰๋ฐ” ์•„์ด์ฝ˜ & ๋„๊ตฌ๋ชจ์Œ ์•„์ด์ฝ˜ ํƒญ๋ฐ” ์•„์ด์ฝ˜ iPhone + 6+, 6S+, 7+, 8+, X 1024 x 1024px 180 x 180px 1242 x 2208px 120 x 120px 87 x 87px 60 x 60px 66 x 66px 75 x 75px ์ตœ๋Œ€ 144 x 96px iPhone 4, 4S, 5, 5C, 5S, 6, 6SE, 6S, 7, 8 1024 x 1024px 120 x 120px 750 x 1334px 80 x 80px 58 x 58px 40 x 40px 44p x 44px 50 x 50px ์ตœ๋Œ€ 96 x 64px ์˜ฌ๋“œ ์•„์ดํฐ 1, 2, 3 ์„ธ๋Œ€ 1024 x 10..

Dev_Study/iOS 2018.02.06

15. ํ•ธ๋“ค๋Ÿฌ (Handler)

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ UI์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ๋Š” '๋ฉ”์ธ ์Šค๋ ˆ๋“œ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค ์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ด๋ฏธ UI์— ์ ‘๊ทผํ•˜๊ณ ์žˆ์œผ๋ฏ€๋กœ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ๋Š” ํ•ธ๋“ค๋Ÿฌ (Handler)๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋Š” ์ตœ์ƒ์œ„์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ์ฒด์ธ ์•กํ‹ฐ๋น„ํ‹ฐ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž ๋“ฑ๊ณผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์œˆ๋„์šฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ํ(Message Queue)๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ ‡๊ฒŒ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ํ•ธ๋“ค๋Ÿฌ ํด๋ž˜์Šค๋‹ค ๊ฒฐ๊ตญ ํ•ธ๋“ค๋Ÿฌ๋Š” ์‹คํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํŠน์ •๊ธฐ๋Šฅ์ด ์žˆ์„๋•Œ ํ˜„์žฌ ์ˆ˜ํ–‰๋˜๊ณ ..

Dev_Study/Android 2018.01.29

14. ์ด๋ฒคํŠธ

OnTouchListener : ํ„ฐ์น˜ ์ด๋ฒคํŠธ ํ™”๋ฉด์„ ์†๊ฐ€๋ฝ์œผ๋กœ ๋ˆ„๋ฅผ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ OnKeyListener : ํ‚ค ์ด๋ฒคํŠธ ํ‚คํŒจ๋“œ๋‚˜ ํ•˜๋“œ์›จ์–ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ GestureDetector : ์ œ์Šค์ฒ˜ ์ด๋ฒคํŠธ ํ„ฐ์น˜ ์ด๋ฒคํŠธ์ค‘์—์„œ ์ผ์ •ํŒจํ„ด์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ด๋ฒคํŠธ onFocusChangeListener : ํฌ์ปค์Šค ๋ทฐ๋งˆ๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๋Š” ํฌ์ปค์Šค onConfigurationChanged : ํ™”๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ ํ™”๋ฉด์˜ ๋ฐฉํ–ฅ์ด ๊ฐ€๋กœ/์„ธ๋กœ๋กœ ๋ฐ”๋€œ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ

Dev_Study/Android 2018.01.29

13. ํ”„๋ž˜๊ทธ๋จผํŠธ (Fragment)

ํ”„๋ž˜๊ทธ๋จผํŠธ (Fragment) Fragmentํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค ๋ถ„ํ• ๋œ ํ™”๋ฉด๋“ค์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ๊ทธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค ์•กํ‹ฐ๋น„ํ‹ฐ์™€๋Š” ๋‹ค๋ฅด๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ ์œ„์— ์˜ฌ๋ฆด์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด๋‹ค ex) ํƒญ๋ฉ”๋‰ด ํด๋ฆญ์‹œ ํ™”๋ฉด์ „ํ™˜ ----------------------------------------------------------------------------------------------------------- Fragment public final Activity getActivity() ์ด ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋ฆฌํ„ดํ•จ public final FragmentManager getFragmentManager() ์ด ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ์ฒด๋“ค๊ณผ ์˜์‚ฌ์†Œํ†ตํ•˜๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ๋งค๋‹ˆ์ €๋ฅผ ๋ฆฌํ„ด..

Dev_Study/Android 2018.01.29