package com.example.myapp2;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.SystemClock;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
Button button1;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("10월 31일자 수업 복습");
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
@Override public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("제목입니다.");
dlg.setMessage("내용입니다.");
dlg.setIcon(R.mipmap.ic_launcher);
// 소속이 Dialog이기 때문에 서로 다른 속성을 가지고 있음. dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "확인을 눌렀네요.", Toast.LENGTH_SHORT).show();
}
});
dlg.show();
}
});
}
}
// 패키지 선언
package com.example.myapp2;
// 필요한 패키지들을 임포트
import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
// MainActivity 클래스 선언. AppCompatActivity를 상속받아 Android 앱의 액티비티로 동작합니다.
public class MainActivity extends AppCompatActivity {
// 버튼 객체를 위한 멤버 변수 선언
Button button1;
// 액티비티가 생성될 때 호출되는 메서드
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// activity_main.xml 레이아웃을 액티비티에 적용
setContentView(R.layout.activity_main);
// 액티비티의 타이틀 설정
setTitle("10월 31일자 수업 복습");
// XML 레이아웃에서 id가 button1인 버튼 객체를 찾아서 button1 변수에 저장
button1 = (Button) findViewById(R.id.button1);
// button1에 클릭 리스너 설정. 버튼이 클릭되었을 때 실행될 코드를 정의
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// 버전 이름을 담은 문자열 배열 선언
final String[] versionArray = new String[] {"누가", "오레오", "파이"};
final boolean[] checkArray = new boolean[] {true, false, false};
// AlertDialog를 생성하기 위한 Builder 객체 생성
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("좋아하는 버전은?");
dlg.setIcon(R.mipmap.ic_launcher);
// AlertDialog에 단일 선택 항목 추가. 초기 선택된 항목은 '누가'
dlg.setMultiChoiceItems(versionArray, checkArray,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// 항목을 클릭하면 버튼의 텍스트를 선택된 항목으로 변경
button1.setText(versionArray[which]);
}
});
// AlertDialog에 '닫기' 버튼 추가
dlg.setPositiveButton("닫기", null);
// AlertDialog를 화면에 표시
dlg.show();
}
});
}
}
다른 예제
// 패키지 선언package com.example.myapp2;
// 필요한 패키지들을 임포트import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
// MainActivity 클래스 선언. AppCompatActivity를 상속받아 Android 앱의 액티비티로 동작합니다.public class MainActivity extends AppCompatActivity {
TextView tvName, tvEmail;
// 버튼 객체를 위한 멤버 변수 선언 Button button1;
EditText dlgEdtName, dlgEdtEmail;
TextView toastText;
View dialogView, toastView;
// 액티비티가 생성될 때 호출되는 메서드 @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// activity_main.xml 레이아웃을 액티비티에 적용 setContentView(R.layout.activity_main);
// 액티비티의 타이틀 설정 setTitle("10월 31일자 수업 복습");
tvEmail = (TextView) findViewById(R.id.tvEmail);
tvName = (TextView) findViewById(R.id.tvName);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
dialogView = (View) View.inflate(MainActivity.this, R.layout.dialog1, null);
dlgEdtName = (EditText) dialogView.findViewById(R.id.dlgEdt1);
dlgEdtEmail = (EditText) dialogView.findViewById(R.id.dlgEdt2);
dlgEdtName.setText(tvName.getText().toString());
dlgEdtEmail.setText(tvEmail.getText().toString());
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("사용자 정보 입력");
dlg.setIcon(R.drawable.ic_launcher_foreground);
dlg.setView(dialogView);
dlg.setPositiveButton("확인",
new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
dlgEdtName = (EditText) dialogView.findViewById(R.id.dlgEdt1);
dlgEdtEmail = (EditText) dialogView.findViewById(R.id.dlgEdt2);
tvName.setText(dlgEdtName.getText().toString());
tvEmail.setText(dlgEdtEmail.getText().toString());
}
}
);
dlg.setNegativeButton("취소", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
Toast toast = new Toast(MainActivity.this);
toastView = (View) View.inflate(MainActivity.this, R.layout.toast1, null);
toastText = (TextView) toastView.findViewById(R.id.toastText1);
toastText.setText("취소했습니다.");
toast.setView(toastView);
toast.show();
}
});
dlg.show();
}
});
}
}
dialog1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="사용자 이름"/>
<EditText
android:id="@+id/dlgEdt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="이메일"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText android:id="@+id/dlgEdt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
toast1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:background="#ff0000"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- 첫 번째 이미지뷰 크기 및 스케일 타입 조정 -->
<ImageView android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/btn_star_big_on"/>
<TextView android:id="@+id/toastText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="TextView"/>
<!-- 두 번째 이미지뷰 크기 및 스케일 타입 조정 -->
<ImageView android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/btn_star_big_on"/>
</LinearLayout>
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/baseLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" android:orientation="vertical">
<EditText
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="사용자 이름"
android:gravity="center"/> <!-- 이 부분이 수정됨 -->
<EditText
android:id="@+id/tvEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="사용자 이메일"
android:gravity="center"/> <!-- 이 부분이 수정됨 -->
<Button
android:id="@+id/button1"
android:text="여기를 클릭"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
---
실습
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/baseLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button
android:id="@+id/button1"
android:text="여기를 클릭"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/animalImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
</LinearLayout>
</LinearLayout>
// 패키지 선언
package com.example.myapp2;
// 필요한 패키지들을 임포트
import android.content.DialogInterface;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
// MainActivity 클래스 선언. AppCompatActivity를 상속받아 Android 앱의 액티비티로 동작합니다.
public class MainActivity extends AppCompatActivity {
ImageView animalImage;
// 액티비티가 생성될 때 호출되는 메서드
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// activity_main.xml 레이아웃을 액티비티에 적용
setContentView(R.layout.activity_main);
// 액티비티의 타이틀 설정
setTitle("10월 31일자 수업 복습");
animalImage = findViewById(R.id.animalImage);
final Button button1 = (Button) findViewById(R.id.button1);
// 버튼 클릭 이벤트 처리1
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String[] versionArray = new String[] {"강아지", "고양이", "말", "토끼"};
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("좋아하는 동물은?");
dlg.setItems(versionArray,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
switch (which) {
case 0:
animalImage.setImageResource(R.drawable.dog);
break;
case 1:
animalImage.setImageResource(R.drawable.cat);
break;
case 2:
animalImage.setImageResource(R.drawable.horse);
break;
case 3:
animalImage.setImageResource(R.drawable.rabbit);
break;
}
}
});
dlg.setPositiveButton("닫기", null);
dlg.show();
}
});
}
}
Created by 송바래
✉ gihun3645@naver.com
🚩경기도, 성남시