
1. 아이콘 지정하기

▲그림 저장 위치
- 애플리케이션에 필요한 이미지 파일의 대부분은 res\drawable 폴더에 저장한다.

- 저장할 때 v24를 선택하지 않도록 주의한다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.my01_helloworld">
<application
android:allowBackup="true"
android:icon="@drawable/apple"
android:label="@string/app_name"
android:roundIcon="@drawable/apple"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Sub1Activity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
▲ AndroidManifest.xml
위와 같이 icon과 roundIcon 속성을 이용해 어플리케이션 아이콘 이미지를 따로 지정할 수 있다.

2. 명시적 인텐트 (Explicit Intent)
- 명시적 인텐트 파라미터로 실행할 다음 엑티비티의 클래스이름을 넘겨주어 새 엑티비티를 실행하는 인텐트를 말한다.
| Intent intent = new Intent(Context context, 실행할 새 엑티비티.class) startActivity(intent); |
3. 암시적 인텐트(Implicit Intent)
- 암시적 인텐트는 다른 기능을하는 앱을 호출할 수있는 기능을 구현하는 인텐트이다.
1) 사이트의 url을 다른 브라우저 앱으로 실행시킬 때
| Intent intent = new Intent( Intent.ACTION_VIEW , Uri.parse(url주소) ); startActivity(intent); |
2) 전화를 걸지 않고 번호까지만 입력해줄 때
| Intent intent = new Intent( Intent.ACTION_DIAL , Uri.parse(“tel:”+“전화번호”) ); startActivity(intent); |
3) 전화번호를 입력하고 바로 걸어주게끔할 때
| Intent intent = new Intent( Intent.ACTION_CALL , Uri.parse(“tel:”+“전화번호”) ); startActivity(intent); |
● activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="193dp"
android:layout_height="46dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:gravity="center"
android:text="안녕하세요 한울!!!"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="72dp"
android:onClick="btn1Clicked"
android:text="클릭하기"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/textView" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:onClick="btn2Clicked"
android:text="네이버 보기"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnClick" />
<Button
android:id="@+id/btnCall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:text="전화걸기"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />
<EditText
android:id="@+id/etPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:ems="10"
android:hint="전화번호"
android:inputType="number|textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnCall" />
<Button
android:id="@+id/btnNewActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="새창띄우기"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etPhone" />
</androidx.constraintlayout.widget.ConstraintLayout>
● activity_sub1.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#AAC1A0"
tools:context=".Sub1Activity">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:background="#9EFFD2"
android:text="서브1 액티비티 화면입니다!"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnRtnMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="메인으로 돌아가기"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
● MainActivity.java
package com.example.my01_helloworld;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText etPhone;
Button btnCall, btnNewActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etPhone = findViewById(R.id.etPhone);
btnCall = findViewById(R.id.btnCall);
btnNewActivity = findViewById(R.id.btnNewActivity);
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String phoneNum = "tel:" + etPhone.getText().toString();
// → etPhone.getText() : object 형식
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(phoneNum));
// Intent.ACTION_DIAL : 안드로이드의 암시적 Intent(전화걸기 기능 구현)
//Uri.parse() : 전화번호, 페이지 url, 이메일주소 등등
// URL을 Uri Object로 변환해주기 위해 사용하는 메소드
startActivity(intent);
}//onClick
});//btnCall.setOnClickListener
btnNewActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Sub1Activity.class);
startActivity(intent);
// → 명시적 Intent
}//onClick
});//btnNewActivity.setOnClickListener
}//onCreate
// 이렇게 함수를 만들어 xml의 design탭의 onclicked 속성에 함수를 연결하여
// 함수를 실행시키게 하는 방법도 있다.
public void btn1Clicked(View view) {
//팝업 메세지 띄우기 : Toast
// context: this / getApplicationContext() / MainActivity.this
// Context → 내가 가지고 있는 환경 설정 문서
Toast.makeText(this, "버튼1이 클릭됨!", Toast.LENGTH_LONG).show();
}//btn1Clicked()
public void btn2Clicked(View view) {
// url로 연결하여 새창 띄우기 : Intent
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com"));
startActivity(intent);
}//btn2Clicked()
}//class
● Sub1Activity.java
package com.example.my01_helloworld;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class Sub1Activity extends AppCompatActivity {
Button btnRtnMain;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub1);
btnRtnMain = findViewById(R.id.btnRtnMain);
btnRtnMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish(); //화면 사라지게 하기
}//onClick
});//btnRtnMain.setOnClickListener
}//onCreate
}//class
결과





▲새 화면 띄우기 버튼 작동 화면