본문 바로가기

IT/한이음 IT멘토링(Android Programming)

03. AlertDialog와 이미지 출력

자 이번 시간은 무슨시간? 재미있는 안드로이드 시간~

오늘은 앱상에 간단한 알림 다이얼로그를 띄워서 YES를 클릭하면 저장한 그림을 띄우는 걸 해보겠다~

저번 포스팅에 연장선으로 메인 Activity에서 버튼을 클릭하면 추가된 Activity가 실행되어서 새로운 Layout이 보이고

해당 Layout에서 하나있는 버튼을 클릭하면 알림 다이얼로그가 생성되고 다이얼로그에서 YES를 클릭하면 그림이 뜰 것이다.


첫째, 두번째 Activity에서 버튼 클릭 리스너를 만든다. [이건 첫번째 포스팅에서 했으니까 PASS~]

둘째, OnClick메소드에서 AlertDialog에 관련된 소스를 작성한다.

 먼저 AlertDialog에는 그림과 같은 구성을 가진다.

(그림 출처 : croute's 블로그)

그리고 AlertDialog를 생성하는데 이때 Builder라는 클래스를 사용하게된다.

다음과 같이 Builder를 생성하고


1
new AlertDialog.Builder(this)
이어서 메인 메시지 부분과 PositiveButton에 대한 코드를 입력해준다.
이외에 neutral이나 negative버튼을 추가하려면 멤버연산 ' . '을 사용해서 해당 메소드를 불러오면 된다. 
이번 예제에선 버튼이 한개밖에 필요없으니 PositiveButton만 사용하였다.

1
2
3
4
5
6
7
8
9
10
11
.setMessage("메인 메시지가 출력되는 곳")
 
.setPositiveButton("클릭!"new DialogInterface.OnClickListener()
{
    @Override
    public void onClick(DialogInterface dialog, int which)
    {
        //다이얼로그에서 버튼을 클릭했을때 실행되는 문장
        
        dialog.dismiss();
    }
})
이제 onClick{ }함수 내부에 이미지를 로드해주는 코드만 넣어주면 끝이난다.
먼저 이미지 로딩을 위해 이미지View를 드래그해서 등록해준다.


drawable resource를 등록하라고 하는데 최초 아무것도 보이지 않아야하기 때문에 투명한 것을 골라 선택했다.

그리고 아래와 같은 의미없는 그림을 준비해서 이클립스 작업창의 res > drawable-hdpi 폴더에 드래그앤 드랍해줘서 추가한다.

이제 리소스는 모두 준비되었고 소스코딩을 통해 버튼을 누르면 저 빨간색이 나타나도록 해보자~!

1
2
3
Drawable drawable = getResources().getDrawable(R.drawable.sample);
ImageView imageView = (ImageView)findViewById(R.id.imageView1);
imageView.setImageDrawable(drawable);

위 소스는 onClick{ } 함수 안에 들어간다. 코드 내에서 sample은 빨간색 그림파일의 이름이고 imageView1은 우리가 등록한 ImageView의 id이다.

최종적으로 setImageDrawable()에 의해 그림이 출력 될 것이다.


그러면 마지막으로 전체 소스를 보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
new AlertDialog.Builder(this)
.setMessage("메인 메시지가 출력되는 곳")
 
.setPositiveButton("클릭!"new DialogInterface.OnClickListener()
{
    @Override
    public void onClick(DialogInterface dialog, int which)
    {
        Drawable drawable = getResources().getDrawable(R.drawable.sample);
        ImageView imageView = (ImageView)findViewById(R.id.imageView1);
        imageView.setImageDrawable(drawable);
        
        dialog.dismiss();
    }
})

전체적으로 보면 매우 간단하다. 그럼 포스팅 끝~~

'IT > 한이음 IT멘토링(Android Programming)' 카테고리의 다른 글

res> style.xml에 테마관련 오류 해결법  (0) 2014.09.14
06. AsyncTask  (0) 2014.09.06
05. Notification  (0) 2014.09.01
02. Activity 생성 및 시작하기  (0) 2014.08.13
01. 버튼 클릭 리스너  (0) 2014.08.13