관리 메뉴

드럼치는 프로그래머

[안드로이드] 제6강좌 - 다이얼로그 본문

★─Programing/☆─Android

[안드로이드] 제6강좌 - 다이얼로그

드럼치는한동이 2011. 5. 26. 20:04

@@@ 다이얼 로그 @@@

- Dialog : Activity와 사용자간의 상호작용을 주기 위해서 사용 됨.

               작은 윈도우를 사용하여 표시된다.

               응용프로그램에 관련되 알림과 경고같은 용도로 사용된다. 

        --- AlertDialog : Yes(PositiveButtone) or No(NegativeButton) 와 같은 버튼

                                   버튼을 3개까지 사용할 수 있다.(긍정,부정,중립)

     체크박스를 갖거나, 라디오 버튼을 갖는 선택 가능한 항목 리스트를 가질 수 있다.

     창에 메세지와 타이틀이 포함되어야 함.

     Dialog가 이벤트를 가지고 있다.

 

* 버튼 1개 : Application 실행할때, 치명적 오류가 발생하였을 때 사용. ex) 선택권한 없고 종료한다고 알려주기만 하는 것.

* 버튼 2개 : 사용자에서 선택이 가능하도록 구현할 때. ex)Application Update

 

※ Xml에서 <>로 표현되었던 <Button>,<Textview>,<EditText>는모두 클래스로써  java에서 new Button()으로 해석.

    Button()를 Button class를 생성하는 함수 호출하는 의미.

    AlertDialog는 xml에서 생성불가. java에서 AlertDialog.Builder를 이용하여 생성.(new로 생성하지 않음)

   AlertDialog.Buildernew AlertDialog.Builder(this)로 new를 이용하여 생성됨.

    (this)는 내 AlertDialog 위에 만들겠다는 말.

 

          1. AlertDialog.Builder  <= new로 생성 

2. Bulider를 셋팅해야함(set~)  - Message

                                              - Listener : Click이 필요

                                                          1) 리스너(클래스)  DialogInterface OnClickListener 

                                                          2)콜백함수         onClick( )

 

                                              - Label : "문자열"로 입력

3. builder.creat() : Bulider를 다 꾸며둔 뒤 마지막에 생성

 

 ※ setTitle(),setMessage() : 타이틀 이름과 알림창의 메세지를 표시하는데 사용

 

 

        --- ProgressDialog : Alter에서 파생된다.

                    new 연산자를 이용하여 생성된다.

dialog.setIndeterminate(false) : 게이지가 올라가거나 화살표가 돌아가는 것이 작업이 완료될때까지 멈추지 않게.

dialog.setCancleable(true) : 사용자가 백버튼으로 취소가능 // false는 불가능(경고창의 경우)

style_horizontal =1; (수평 바 형태)

style_vertical =0;  (수직)

        --- DatePickerDialog : 날짜를  +/-가능하게

        --- TimePickerDialog : 시간을     "

 

※ 이번트

 1) 이벤트 리스너

 2) 이벤트 핸들러

============================================================================================================================================

 

1 .@@@ main.xml 문서 만들기 @@@

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="다이얼로그 만들기"
    />
   <Button android:id="@+id/a" //java에서 끌어와 사용할 아이디를 'a'로 만듬
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="showIndeterminate"
    />
    <Button android:id="@+id/b"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="showIndeterminateNoTitle"
    />
    <Button android:id="@+id/c"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="showTest"
    />
    <Button android:id="@+id/d"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="showAltert"
    />
</LinearLayout>

============================================================================================================================================

2 .@@@ java 문서 만들기 @@@

※ Button 변수명 = (Button)findViewById(R.id.a) 변수명에 대입을 시키기 위해서 형변환을 시켜서 대입

 

package android.dialog;

 

import android.app.Activity;
import android.os.Bundle;
import android.app.AlertDialog;    //dialog를 생성하기 위하여 아래를 선언
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;


public class Anddial extends Activity {
    /** Called when the activity is first created. */
 private static final int DIALOG1_KEY =0;  //java에서는 변수를 상수로 변환하여서 사용한다.
 private static final int DIALOG2_KEY =1;
 private static final int DIALOG3_KEY =2;
 private static final int DIALOG4_KEY =3;
 
 public static final int STYLE_HORIZONTAL = 1; //수평 바 형태의 다이얼 로그
 public static final int STYLE_SPINNER =0;     // 회전 모양
 
 private static final CharSequence[] items ={"Res", "Green", "Blue"}; // 배열로 선언된 items 에각 단어를 입력??
 
 AlertDialog alert;   //
 
    @Override
    protected Dialog onCreateDialog(int id) {
     switch(id){   //해당 키를 누르면 이벤트가 발생한다.
     case DIALOG1_KEY:{
      ProgressDialog dialog = new ProgressDialog(this);
      dialog.setTitle("Indeterminate"); //다이얼로그의 타이틀
      dialog.setMessage("Please wait while loading.."); //다이얼로그 화면에 나타날 메세지
      dialog.setIndeterminate(false); //
      return dialog;
     }
     case DIALOG2_KEY:{
      ProgressDialog dialog = new ProgressDialog(this);
      dialog.setMessage("Please wait while loading..");
      dialog.setIndeterminate(true);
      dialog.setCancelable(true);
      return dialog;
     }
     case DIALOG3_KEY:{
      ProgressDialog dialog = new ProgressDialog(this);
      dialog.setProgressStyle(STYLE_HORIZONTAL); //수평바를 사용함

      dialog.setMessage("Please wait while loading..");
      dialog.setIndeterminate(true);
      dialog.setCancelable(true);
      return dialog;
     }
     case DIALOG4_KEY:{
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setTitle("Pick a color");
      builder.setItems(items,new DialogInterface.OnClickListener() { //items의 3가지를 표현
      public void onClick(DialogInterface dialog, int item){
        dialog.cancel(); //클릭시 취소됨
      }
   });
       return builder.create();
      }
     }return null;
    }
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Button button = (Button)findViewById(R.id.a); //Button 이라는 변수형으로  button에 입력하기 위해서 형변환을 시킨다.
        button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
          showDialog(DIALOG1_KEY);
         }  
  });
        button = (Button)findViewById(R.id.b);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
             showDialog(DIALOG2_KEY);
            }
        });
        button = (Button)findViewById(R.id.c);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
             showDialog(DIALOG3_KEY);
            }
        });
        button = (Button)findViewById(R.id.d);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
             showDialog(DIALOG4_KEY);
            }
        });
    }
}

============================================================================================================================================

 

 
Comments