android - deptno/deptno.github.io GitHub Wiki

android

Android android-studio

  • Actions -> New Module

์„ค์ •

Android Studio

Auto import

  • Settings -> Editor -> General -> Auto import -> Kotlin
    • Add unambiguous imports on to fly
    • Optimize imports on the fly (for current project)

Emulator|์—๋ฎฌ๋ ˆ์ดํ„ฐ

  • ์•„๋ž˜์„œ ์œ„๋กœ ์Šค์™€์ดํ”„ -> ์‹œ์Šคํ…œ
    • Auto Rotate
    • System Language -> ํ…Œ์ŠคํŠธํ•  ์–ธ์–ด ์ฒซ๋ฒˆ์งธ๋กœ

Layout|๋ ˆ์ด์•„์›ƒ

  • LinearLayout
  • RelativeLayout
  • FrameLayout
  • GridLayout
  • ConstraintLayout

viewBinding

  • as-is
overridefunonCreate(savedlnstanceState: Bundle?) {
    super.onCreate(savedlnstanceState)
    
    setContentView(R.layout.main_activity)
    findViewById(R.id.text1)
}
  • to-be findViewById ์‚ฌ์šฉ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ gradle ์—์„œ viewBinding ์„ค์ •์ด ์‚ฌ์šฉ๋œ๋‹ค.
android {
    viewBinding {
        enabled true
    }
}
overridefunonCreate(savedlnstanceState: Bundle?) {
    super.onCreate(savedlnstanceState)
    
    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
}

Event|์ด๋ฒคํŠธ

  • Single Abstract Method(SAM) - ์˜ค๋ธŒ์ ํŠธ ๋Œ€์‹  ๋ฉ”์†Œ๋“œ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.
override fun onCreate(savedlnstanceState: Bundle?) {
    super.onCreate(savedlnstanceState)
    
    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
    
    binding.startButton.setOnClickListener {
        // ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
    }
}

Life Cycle|์ƒ๋ช…์ฃผ๊ธฐ

  • ์•กํ‹ฐ๋น„ํ‹ฐ ์‹œ์ž‘
  • onCreate call setContentView
  • onStart
  • onResume
  • ์•กํ‹ฐ๋น„ํ‹ฐ ์‹คํ–‰(setContentView ์—์„œ ์ง€์ •ํ•œ UI)
  • onPause ํฌ์ปค์Šค๊ฐ€ ์—†๋Š”์ƒํƒœ, ํ™”๋ฉด ๋ถ„ํ•  ๋“ฑ -> onResume
  • onStop ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ, ํ™ˆ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋‚˜๊ฐ„ ์ƒํƒœ ๋“ฑ-> onRestart -> onStart
  • onDestroy -> onCreate
  • ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒ @todo restart ๋“ฑ ์ถ”๊ฐ€ ํ•„์š”

ํ™”๋ฉด์„ ํšŒ์ „ํ™”๋Š” ๊ฒฝ์šฐ

onResume -> onPause -> onStop -> onSaveInstanceState -> onDestroy -> onCreate -> onStart -> onRestoreInstanceState -> onResume

Intent|์ธํ…ํŠธ

์ธํ…ํŠธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์— ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ƒ์„ฑ์„ ์š”์ฒญํ•œ๋‹ค.

val intent = Intent(this, MainActivity::class.java)
intent.putExtra("key", "value")
startActivity(intent)
startActivityForResult(intent, intrequestCode)

์ƒ์„ฑ ํ›„ ๋ฐ›๋Š” ์ชฝ์—์„œ๋Š” getIntent ๋ฅผ ํ†ตํ•ด์„œ ์ธํ…ํŠธ๋ฅผ ์–ป๊ณ  ์ธ์ž๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ธํ…ํŠธ ์‹คํ–‰์‹œ์— ํŠน์ • ์•ฑ์„ ์ง€์ •ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค.

intent.setPackage("com.google.android.apps.maps")

error

์—†๋Š” activity ๋ฅผ ์ง€์ •ํ•œ ๊ฒฝ์šฐ(์—†๋Š” intent)

์‹คํ–‰ํ•œ ์ชฝ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

Coludn't sign in

There was a problem communicating with Google servers.

์•กํ‹ฐ๋น„ํ‹ฐ ์‹คํ–‰

๋ช…์‹œ์ 

์•ฑ์˜ ๋‚ด๋ถ€์—์„œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ด์„œ ์‹คํ–‰, ์•”์‹œ์ ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‚˜ ๊ถŒ์žฅ๋œ๋‹ค. ์•”์‹œ์ ์œผ๋กœ๋Š” ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•œ๋‹ค.

val intent = Intent(this, MainActivity::class.java)

์•”์‹œ์ 

์™ธ๋ถ€์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก manifest ํŒŒ์ผ์— intent ์„ค์ •์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.

<activity android:name=".oneActivity" />
<activity android:name=".TwoActivity">
  <intent-filter>
    <actlon android:name="ACTION EDIT" />
  </intent-filter>
</activity>
<service ... />
<receiver ... />

์ธํ…ํŠธ ํ•„ํ„ฐ

๋ฐ์ดํ„ฐ ์ „๋‹ฌ

  • - android:name ์€ ์œ ์ผํ•˜์ง€ ์•Š์•„๋„๋œ๋‹ค. ๊ธฐ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ž. eg, android.intent.action.MAIN
  • - android:name -> android.intent.category.LAUNCHER
  • - ํ•„์š”ํ•œ ๋ฐ์ด

๋Ÿฐ์ฒ˜์•ฑ์€ android.intent.category.LAUNCHER ์นดํ…Œ๊ณ ๋ฆฌ์˜ action.intent.action.MAIN ์„ ๊ฐ€์ ธ์™€์„œ ๋ฆฌ์ŠคํŠธ์—…ํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋‹ค.

Resource|๋ฆฌ์†Œ์Šค

๊ตฌ์„ฑ ํ•œ์ •์ž

  • https://developer.android.com/guide/topics/resources/providing-resources?hl=ko ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ์— suffix ๋ฅผ ๋ถ™์ž„์œผ๋กœ์จ ํŠน์ • ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์ž„์„ ๋ช…์‹œํ•œ๋‹ค. ์–ธ์–ด, ๋””๋ฐ”์ด์Šค ๋ฐฉํ–ฅ ์ƒํƒœ, ํ•ด์ƒ๋„ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค. ์ค‘๋ณต ๋ช…์‹œ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • res/layout/activity_main.xml - ์„ธ๋กœ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ
  • res/layout/land/activity_main.xml - ๊ฐ€๋กœ ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉ

link

โš ๏ธ **GitHub.com Fallback** โš ๏ธ