안드로이드[Android] 다이얼로그(Dialog) 안에 이미지(Image) 넣기

xml부분 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dip" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter" />

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignBottom="@id/image"
        android:layout_toRightOf="@id/image"
        android:layout_marginLeft="10dip"
        android:textColor="#000" />

</RelativeLayout>


main_Activity 부분

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
TextView tv = (TextView) dialog.findViewById(R.id.text);
tv.setText("Hello. This is a Custom Dialog !");
ImageView iv = (ImageView) dialog.findViewById(R.id.image);
iv.setImageResource(R.drawable.suji);
dialog.show();
}
}

setContentView() 메소드로 xml을 연결해주고 findViewById로 대화상자 내부의 TextView를 찾아서 내용을 입력하고, ImageView를 찾아서 사진을 넣어주면 됩니다. 이외에도 원하는 레이아웃대로 xml을 작성해서 넣으면 됩니다.
CusomDialog 띄우는 방법!





안드로이드[Andorid] 다이얼로그(Dialog) 종류

Android에서 지원하는 Alert Dialog종류
Alert Dialog 생성 코드는 간단하다. (본문 코드 출처 : Android 2.1 update 1 SDK API source)
onCreateDialog() method를 생성하고 id값을 받아 case로 분류하고 실행코드를 추가하면 된다.
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_YES_NO_MESSAGE:
case DIALOG_YES_NO_LONG_MESSAGE:
case DIALOG_LIST:
case DIALOG_PROGRESS:
case DIALOG_SINGLE_CHOICE:
case DIALOG_MULTIPLE_CHOICE:
case DIALOG_TEXT_ENTRY:
return null;
}
   
Dialog 호출 코드 역시 간단하다. showDialog(id) method를 이용해서 호출하면 된다.
showDialog(DIALOG_YES_NO_MESSAGE);
showDialog(DIALOG_YES_NO_LONG_MESSAGE);
showDialog(DIALOG_LIST);
showDialog(DIALOG_PROGRESS);
showDialog(DIALOG_SINGLE_CHOICE);
showDialog(DIALOG_MULTIPLE_CHOICE);
showDialog(DIALOG_TEXT_ENTRY);
   
Android 2.1 up1에서 지원하는 Alert Dialog type과 생성코드는 다음과 같다.
  • OK Cancel dialog with a message

   
## 실행 코드 ##


case DIALOG_YES_NO_MESSAGE:
  return new AlertDialog.Builder(AlertDialogSamples.this)
    .setIcon(R.drawable.alert_dialog_icon)
    .setTitle(R.string.alert_dialog_two_buttons_title)
    .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked OK so do some stuff */
      }
    })
    .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked Cancel so do some stuff */
      }
    })
    .create();
   
## 호출 코드 ##
showDialog(DIALOG_YES_NO_MESSAGE);
  
   
  • OK Cancel dialog with a long message

   



















## 실행 코드 ##


case DIALOG_YES_NO_LONG_MESSAGE:
  return new AlertDialog.Builder(AlertDialogSamples.this)
    .setIcon(R.drawable.alert_dialog_icon)
    .setTitle(R.string.alert_dialog_two_buttons_msg)
    .setMessage(R.string.alert_dialog_two_buttons2_msg)
    .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked OK so do some stuff */
      }
    })
    .setNeutralButton(R.string.alert_dialog_something, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
         /* User clicked Something so do some stuff */
       }
     })
     .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int whichButton) {
         /* User clicked Cancel so do some stuff */
       }
     })
     .create();
   
## 호출 코드 ##
showDialog(DIALOG_YES_NO_LONG_MESSAGE);
  
   
  • List dialog

   
## 실행 코드 ##


case DIALOG_LIST:
  return new AlertDialog.Builder(AlertDialogSamples.this)
  .setTitle(R.string.select_dialog)
  .setItems(R.array.select_dialog_items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
      /* User clicked so do some stuff */
      /// 아래 코드는 List item click 시 테스트 코드
      String[] items = getResources().getStringArray(R.array.select_dialog_items);
      new AlertDialog.Builder(AlertDialogSamples.this)
      .setMessage("You selected: " + which + " , " + items[which]).show();
    }
  })
  .create();
   
## 호출 코드 ##
showDialog(DIALOG_LIST);
  
   
  • Progress dialog

   
## 실행 코드 ##


case DIALOG_PROGRESS:
  mProgressDialog = new ProgressDialog(AlertDialogSamples.this);
  mProgressDialog.setIcon(R.drawable.alert_dialog_icon);
  mProgressDialog.setTitle(R.string.select_dialog);
             mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  mProgressDialog.setMax(MAX_PROGRESS);
  mProgressDialog.setButton(getText(R.string.alert_dialog_hide), 
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
                     /* User clicked Yes so do some stuff */
      }
    });
  mProgressDialog.setButton2(getText(R.string.alert_dialog_cancel), 
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked No so do some stuff */
      }
    });
  return mProgressDialog;
   
## 호출 코드 ##


showDialog(DIALOG_PROGRESS);
mProgress = 0;
mProgressDialog.setProgress(0);
mProgressHandler.sendEmptyMessage(0);



mProgressHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    super.handleMessage(msg);
    if (mProgress >= MAX_PROGRESS) {
      mProgressDialog.dismiss();
    } else {
      mProgress++;
      mProgressDialog.incrementProgressBy(1);
      mProgressHandler.sendEmptyMessageDelayed(0, 100);
    }
  }
};
  
   
  • Single choice list

   





















  ## 실행 코드 ##


case DIALOG_SINGLE_CHOICE:
  return new AlertDialog.Builder(AlertDialogSamples.this)
    .setIcon(R.drawable.alert_dialog_icon)
    .setTitle(R.string.alert_dialog_single_choice)
    .setSingleChoiceItems(R.array.select_dialog_items2, 0, 
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
          /* User clicked on a radio button do some stuff */
        }
      })
      .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
          /* User clicked Yes so do some stuff */
        }
      })
      .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
           /* User clicked No so do some stuff */
        }
     })
     .create();
   
## 호출 코드 ##
showDialog(DIALOG_SINGLE_CHOICE);
  
   
  • Repeat alarm

   





















            ## 실행 코드 ##


case DIALOG_MULTIPLE_CHOICE:
  return new AlertDialog.Builder(AlertDialogSamples.this)
    .setIcon(R.drawable.ic_popup_reminder)
    .setTitle(R.string.alert_dialog_multi_choice)
    .setMultiChoiceItems(R.array.select_dialog_items3,
      new boolean[]{false, true, false, true, false, false, false},
      new DialogInterface.OnMultiChoiceClickListener() {
        public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
          /* User clicked on a check box do some stuff */
        }
      })
      .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
          /* User clicked Yes so do some stuff */
        }
      })
      .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
           /* User clicked No so do some stuff */
        }
      })
      .create();
   
## 호출 코드 ##
showDialog(DIALOG_MULTIPLE_CHOICE);
  
   
  • Text Entry dialog







   
## 실행 코드 ##


case DIALOG_TEXT_ENTRY:
  // This example shows how to add a custom layout to an AlertDialog
  LayoutInflater factory = LayoutInflater.from(this);
  final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
  return new AlertDialog.Builder(AlertDialogSamples.this)
    .setIcon(R.drawable.alert_dialog_icon)
    .setTitle(R.string.alert_dialog_text_entry)
    .setView(textEntryView)
    .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked OK so do some stuff */
      }
    })
    .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        /* User clicked cancel so do some stuff */
      }
    })
    .create();
   
## 호출 코드 ##
showDialog(DIALOG_TEXT_ENTRY);
  
이중에서 쓰고 싶은 다이얼로그 종류룰 쓰면 된다.

다음에는 다이얼로그안에 이미지 넣는 방법을 설명하도록 하겠다. 


안드로이드[Android] 다이얼로그(Dialog) 첫번째( 기본 다이얼로그)



     
   1.다이얼로그 예제 코드

    private AlertDialog createDialog() {
        AlertDialog.Builder ab = new AlertDialog.Builder(this);
        ab.setTitle("Title");
        ab.setMessage("내용");
        ab.setCancelable(false);
        ab.setIcon(getResources().getDrawable(R.drawable.ic_launcher));
          
        ab.setPositiveButton("확인", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                setDismiss(mDialog);
            }
        });
          
        ab.setNegativeButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                setDismiss(mDialog);
            }
        });
          
    }
이코드를 보면 추가하고싶은 클래스에 저 코드를 붙여서 쓰면 된다.!!
다음에는 다이얼로그 종류와 그안에 이미지 넣느법, 버튼 모양 다이얼로그 색상 바꾸는 방법등을 알아 보도록 하겠다. 
     
Powered by Blogger.