Android 38

๋‘ ๋ฒˆ์งธ ์ˆœ์„œ์˜ ์ธํ…ํŠธ(intent)๋ถ€ํ„ฐ ๋ณด์—ฌ์งˆ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•   ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ app -> manifests -> AndroidManifest.xml ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.    # ๋‘ ๋ฒˆ์งธ๋กœ ๋ณด์—ฌ์งˆ ์•กํ‹ฐ๋น„ํ‹ฐ# ์ฒซ ๋ฒˆ์งธ๋กœ ๋ณด์—ฌ์งˆ ์•กํ‹ฐ๋น„ํ‹ฐ    ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์œ„๋กœ ์˜ฌ๋ ค์ค€๋‹ค # ์ฒซ ๋ฒˆ์งธ๋กœ ๋ณด์—ฌ์งˆ ์•กํ‹ฐ๋น„ํ‹ฐ # ๋‘ ๋ฒˆ์งธ๋กœ ๋ณด์—ฌ์งˆ ์•กํ‹ฐ๋น„ํ‹ฐ

Android 2024.06.07

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ์ธํ…ํŠธ(Intent) : ๋‘ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko ํ™œ๋™ ์ˆ˜๋ช… ์ฃผ๊ธฐ  |  Android Developersํ™œ๋™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ „ํ™” ๊ฑธ๊ธฐ, ์‚ฌ์ง„ ์ฐ๊ธฐ, ์ด๋ฉ”์ผ ๋ณด๋‚ด๊ธฐ ๋˜๋Š” ์ง€๋„ ๋ณด๊ธฐ์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์„ ์ œ๊ณตํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ™œ๋™์—๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜developer.android.com    ์ธํ…ํŠธ(Intent)์˜ ์šฉ๋„1.  ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์‹œ์ž‘: ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ 2. ์„œ๋น„์Šค(Service) ์‹œ์ž‘: ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ 3. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ (BroadcastReceiver): ์‹œ..

Android 2024.06.07

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ๋™์ผํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(application)์ด ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•   ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ app -> manifests -> AndroidManifest.xml ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.        AndroidManifest.xml ์—์„œ intent-filter๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์œผ๋ฉด ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ณ  ์ง€์šด๋‹ค.

Android 2024.06.07

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ์•Œ๋žŒ app ๊ฐœ๋ฐœ

ํ™”๋ฉด ๊ฐœ๋ฐœ    ๋กœ์ง์„ ์ง ๋‹ค. package com.yujinoh.alarm;import android.media.MediaPlayer;import android.os.Bundle;import android.os.CountDownTimer;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Button;import android.widget.Toast;import com.daimajia.androidanimations.library.Techniques;import com.daimajia.androidanimations.library.YoYo;public clas..

Android 2024.06.07

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์— ์Œ์•…, ๋น„๋””์˜ค ๋ฆฌ์†Œ์Šค ํŒŒ์ผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•

์Œ์•…, ๋น„๋””์˜ค ํŒŒ์ผ์€ res/raw ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ง‘์–ด๋„ฃ๋Š”๋‹ค.     ์žฌ์ƒํ•˜๋Š” ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐMediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);mp.start();

Android 2024.06.05

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ€ด์ฆˆ ํ’€๋ฉด ์ •๋‹ต ์•Œ๋ ค์ฃผ๋Š” app ๊ฐœ๋ฐœ

์ฐธ ๋˜๋Š” ๊ฑฐ์ง“์„ ๋ˆ„๋ฅด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ œ๊ฐ€ ์ฐธ์ธ์ง€ ๊ฑฐ์ง“์ธ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์–ดํ”Œ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ๋ฌธ์ œ: ์ง€๊ตฌ๋Š” ํƒœ์–‘ ์ฃผ์œ„๋ฅผ ๋ˆ๋‹ค.์ •๋‹ต: ์˜ˆ๋ฌธ์ œ: ์„œ์šธ์€ ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ์ˆ˜๋„๊ฐ€ ์•„๋‹ˆ๋‹ค.์ •๋‹ต: ์•„๋‹ˆ์˜ค๋ฌธ์ œ: ๋ฌผ์€ ํ™”ํ•™์‹์œผ๋กœ H2O๋ฅผ ๊ฐ€์ง„๋‹ค.์ •๋‹ต: ์˜ˆ๋ฌธ์ œ: ๋ถ๊ทน์€ ๋‚จ๊ทน๋ณด๋‹ค ๋”ฐ๋œปํ•˜๋‹ค.์ •๋‹ต: ์•„๋‹ˆ์˜ค๋ฌธ์ œ: ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ๊ณต์‹ ์–ธ์–ด๋Š” ์˜์–ด์ด๋‹ค.์ •๋‹ต: ์•„๋‹ˆ์˜ค๋ฌธ์ œ: ์‚ฌ๋žŒ์˜ ์‹ฌ์žฅ์€ ํ•˜๋ฃจ์— ์•ฝ 100,000๋ฒˆ ๋›ด๋‹ค.์ •๋‹ต: ์˜ˆ๋ฌธ์ œ: ์—๋ฒ ๋ ˆ์ŠคํŠธ ์‚ฐ์€ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋†’์€ ์‚ฐ์ด๋‹ค.์ •๋‹ต: ์˜ˆ๋ฌธ์ œ: ํ”ผํƒ€๊ณ ๋ผ์Šค์˜ ์ •๋ฆฌ๋Š” ์‚ผ๊ฐํ˜•์˜ ์„ธ ๋ณ€์˜ ๊ธธ์ด์— ๋Œ€ํ•œ ์ด๋ก ์ด๋‹ค.์ •๋‹ต: ์˜ˆ๋ฌธ์ œ: ์•„ํด๋กœ 11ํ˜ธ๋Š” ํ™”์„ฑ์— ์ฐฉ๋ฅ™ํ•œ ์ตœ์ดˆ์˜ ์šฐ์ฃผ์„ ์ด๋‹ค.์ •๋‹ต: ์•„๋‹ˆ์˜ค๋ฌธ์ œ: ์ปดํ“จํ„ฐ์˜ CPU๋Š” ์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.์ •๋‹ต: ์˜ˆ     ๋ฌธ์ œ Resource ๋„ฃ๊ธฐ ๋จผ์ €, res -> ..

Android 2024.06.05

AlertDialog ๊ฒฝ๊ณ  ํŒ์—… ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๊ธฐ, ๋ฉ”์ธ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒํ•˜๋Š” finish ํ•จ์ˆ˜

AlertaDialog ์ƒ์„ฑ์ž์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์•Œ์•„๋ณด๊ธฐ  1. AlertDialog.Builder(MainActivity.this) AlertDialog.Builder์˜ ์ƒ์„ฑ์ž๋กœ, ๋‹ค์ด์–ผ๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค ์ปจํ…์ŠคํŠธ๋ฅผ ์ง€์ •MainActivity.this๋Š” ํ˜„์žฌ ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์˜๋ฏธ  2. setCancelable(false) ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ์ทจ์†Œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋‹ซํžˆ์ง€ ์•Š๋Š”๋‹ค.  3. set~Button setPositiveButton : ๋‹ค์‹œํ’€๊ธฐ ๋ฒ„ํŠผ setNegativeButton : ์ข…๋ฃŒ ๋ฒ„ํŠผsetNeutralButton : ๊ทธ ์™ธ ๋ฒ„ํŠผ    currentQuizIndex๋Š” ํ˜„์žฌ ํ’€๊ณ ์žˆ๋Š” ๋ฌธ์ œ ๊ฐœ์ˆ˜์ด๊ณ , quizArrayList.size()๋Š” 10์— ํ•ด๋‹นํ•œ๋‹ค.์ฆ‰, 10๊ฐœ..

Android 2024.06.05

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ๊ณ ์–‘์ด ๋‚˜์ด ๊ณ„์‚ฐํ•˜์—ฌ ์•Œ๋ ค์ฃผ๋Š” app ๊ฐœ๋ฐœ

ํ™”๋ฉด ๊ฐœ๋ฐœํ•˜๊ธฐ    ๋กœ์ง ๊ฐœ๋ฐœํ•˜๊ธฐ package com.~.catage;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.google.android.material.snackbar.Snackbar;import java.util.Calendar;public class MainActivity extends AppCompatActivity { // ๋งค๊ฐœ๋ณ€์ˆ˜ ์ž…๋ ฅํ•˜๊ธฐ Button btnCal; EditText editYear; TextView txtAge; @Override protected void onCreate(Bundle savedInstan..

Android 2024.06.05

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค LinearLayout ๋””์ž์ธ ๋ฐฉ๋ฒ•

vertical์„ ๋Œ์–ด๋‹ค ๋†“์•˜๋‹ค.    Constraint ์€ ๋ชจ๋‘ ๋‹ค ์—ฐ๊ฒฐํ•ด์ฃผ์–ด์•ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.     vertical ์•ˆ์— horizontal์„ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ Component๋ฅผ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค.    match_parent๋ฅผ wrap_content๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ™”๋ฉด์— ์ˆœ์„œ๋Œ€๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

Android 2024.06.05

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํŒ์—… ๋„์šฐ๊ธฐ : Snackbar, Toast

// ์œ ์ €์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ• 1 ์Šค๋‚ต๋ฐ”Snackbar.make(btnSave, "ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด๋ฏ€๋กœ ๋ชจ๋‘ ์ž…๋ ฅํ•˜์„ธ์š”", Snackbar.LENGTH_SHORT).show();// ์œ ์ €์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๋ฐฉ๋ฒ• 2 ํ† ์ŠคํŠธToast.makeText(MainActivity.this, "ํ•„์ˆ˜ ํ•ญ๋ชฉ์ด๋ฏ€๋กœ ๋ชจ๋‘ ์ž…๋ ฅํ•˜์„ธ์š”", Toast.LENGTH_SHORT).show();  Snackbar์™€ Toast ๋ชจ๋‘ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (์–ธ์ œ ํŒ์—…์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?, ํŒ์—…์˜ ๋‚ด์šฉ, length ์˜๋ฏธ?  duration(์ง€์†์‹œ๊ฐ„) )

Android 2024.06.05