안드로이드 다이어로그 만들기

|




다이어로그는 프로그래밍에서 기본적으로 많이 사용하는 항목입니다.
javascript의 alert();이나 VC++의 MessageBox()와 같은 형태로 많이 사용되죠..

안드로이드에서는 다음과 같은 다이어로그를 사용할 수 있습니다.
- AlertDialog: 아이콘, 메시지, 버튼 3개를 가지며 가장 많이 사용됨
- DatePickerDialog: 달력에서 날짜를 제공하며 날짜 설정을 가능하게 함
- ProgressDialog: 실행 상태를 통지하는 진행 바를 포함
- TimePickerDialog: 시간을 제공하여 시간 설정을 가능하게 함
- ZoomDialog: 줌 레벨을 선택함. 주로 지도에서 사용

이 중에서 주로 사용하는 AlertDialog에 대해서 간략하게 살펴보려고 합니다.
나머지는 관련 서적이나 매뉴얼을 참고하시기 바랍니다.

AlertDialog를 사용하는 기본적인 함수의 원형은 다음과 같습니다. JavaScript의 show();와 비슷한 형태네요.. ^^

public AlertDialog show()

아이콘, 메시지, 제목을 설정하는 부분은 다음과 같이 합니다.

// 아이콘 설정
public AlertDialog.Builder setIcon (int iconId or Drawable icon)
// 메시지 설정
public AlertDialog.Builder setMessage (int messageId or CharSequence message)
// 제목 설정
public AlertDialog.Builder setTitle (int titleId or CharSequence title)

그리고 버튼 처리를 위해서는 다음 세가지를 사용할 수 있습니다.

public AlertDialog.Builder setNegativeButton (CharSequence text or int textId, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setNeutralButton (CharSequence text or int textId, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setPositiveButton (CharSequence text or int textId, DialogInterface.OnClickListener listener)


버튼을 식별하기 위해 위처럼 구분할 뿐, 구현할 때는 각각의 버튼에 대해 onClick 이벤트를 처리해 주기 때문에 큰 의미는 없다고 보이네요..

자.. 그러면 간단하게 다이어로그를 출력하는 예제를 살펴보도록 하지요..
먼저 아래 두 예제를 위해서 main.xml에 다음과 같이 Button을 추가하도록 합니다.



이어서 기본적인 형태의 Dialog를 출력해 보도록 하겠습니다. 주석을 달아놓았으니 이해하기 어렵지 않을 겁니다.



실행된 내역은 다음과 같습니다.
중간에 Back Button이 동작하지 않도록 세팅도 해봤습니다.

 

리스트, 체크박스, 라디오버튼 등을 Dialog에 추가할 수도 있습니다. 각각의 함수 원형은 다음과 같습니다.

public AlertDialog.Builder setItems (CharSequence[] items, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setMultiChoiceItems (int itemsId or CharSequence[] items, boolean[] checkedItems, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (int itemsId or CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)

리스트를 추가한 예제를 한번 살펴보시기 바랍니다. XML 설정은 위와 동일합니다.
 


실행 내역은 다음과 같습니다. 설정한 값에 따라 버튼의 배경색을 지정하도록 구현되어 있네요.

 






Trackback 0 And Comment 0