안드로이드 스튜디오, Dialog Message 기본 만들기
앱 어플리케이션을 이용하다보면 앱 종료시 위의 이미지와 같은 대화상자를 더러 볼 수 있다. 이 메시지 창은 다이얼로그 메시지로 불린다. 위의 상황에서는 사용자가 실수로 앱의 종료버튼을 누르더라도 다이얼로그 메시지를 통해 다시 한 번 되물어, 사용자 편의성을 증대시킬 수 있는 기능을 제공하고 있는 것이다.
다이얼로그 메시지 적용법은 매우 간단하다. 크게 3가지 단계로 나눠진다.
첫 번째, AlertDialog.Builder를 통해 다이얼로그 메시지의 틀을 짠다.
두 번째, 틀을 짠 다이얼로그 메시지를 AlertDialog에 적용한다.
세 번째, 다이얼로그 메시지를 필요한 상황에서 show()한다.
(단계별 분류는 코드 내 주석에 형광펜으로 칠함)
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. 틀짜기 - 다이얼로그 메시지 생성
AlertDialog.Builder newBuilder = new AlertDialog.Builder(this);
// 다이얼로그 메시지 타이틀 설정
newBuilder.setTitle("어플리케이션을 종료여부");
// 다이얼로그 메시지 본문 내용 설정
newBuilder.setMessage("어플리케이션을 종료하시겠습니까?");
// 다이얼로그 메시지 icon 설정
newBuilder.setIcon(R.drawable.icon);
newBuilder.setNegativeButton("예", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// '예' 버튼 클릭
finish();
}
});
newBuilder.setPositiveButton("아니요", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// '아니요' 버튼 클릭
Toast.makeText(getApplicationContext(), "끝내지 않습니다.", Toast.LENGTH_SHORT).show();
}
});
// '취소' 버튼 클릭
newBuilder.setNeutralButton("취소", null);
// 2. AlertDialog.Builder를 이용해 정의한 newBuilder를 dialog에 적용
final AlertDialog dialog = newBuilder.create();
// 버튼 클릭시 dialog message를 show함
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.show(); // 3. dialog를 show함
}
});
}
}
위 예시의 경우 버튼 클릭 시 다이얼로그 메시지가 출력하도록 설정했다. 또한 다이얼로그 메시지는 커스터마이징이 가능하다. style.xml 파일을 수정하여 메시지 텍스트의 크기나 색깔등 다양한 설정들을 만질 수 있다.
반응형
'▶개발 > Android' 카테고리의 다른 글
[안드로이드]editText의 값을 listview로 추가하기 (0) | 2018.08.11 |
---|---|
[Android] 레이아웃 인플레이터(LayoutInflater)란? (1) | 2018.07.11 |
안드로이드의 정확한 UI 표현 레이아웃 ScalableLayout (0) | 2018.07.03 |
안드로이드 스튜디오에서 Gradle이란? (0) | 2018.06.26 |
[에러해결]Error: is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore (0) | 2018.05.25 |