[안드로이드 프로그래밍] 방탈출 게임 6. 팝업창을 이용해서 이미지나 글 띄우기

     

커스텀 다이얼로그를 이용해 이미지나 글을 팝업으로 띄울 수 있다.


일단 커스텀 다이얼로그를 사용하기 위해 커스텀 다이얼로그.java와 보여질 화면의 레이아웃이 필요하다. 


일단 레이아웃부터 만들면.. (레이아웃 생성 과정은 생략. 책이나 이전 글 참고)


커스텀 레이아웃은 코딩으로 하는게 편하다. 만약 이미지만 보여줄 꺼면 아래와 같이 리니어 레이아웃에 이미지 뷰만 넣으면 된다.



ID값은 나중에 자바파일에서 이미지뷰를 읽을때 사용된다.

레이아웃을 만들었다면 이 레이아웃을 보여줄 자바파일이 필요하다.

새로운 클래스를 만들어서 다음과 같이 코딩한다.






일반적으로 다른 자바파일들은 extends Activity를 한다. 이것은 그 자바파일이 액티비티이기 때문인데, 이번에 만든 자바파일은 다이얼로그이기 때문에 extends Dialog를 하게 된다. 액티비티의 경우 기본적으로 onCreate가 있어야 했지만, 여기서는 선언한 클래스 이름과 똑같은 메소드를 만든다. 이것을 생성자라고 하는데 자바 배울때 배웠다.


implements OnClickListener의 경우 이전에 쓰던 클릭 이벤트 처리 방식이다. 지금은 레이아웃에 onClick속성이 생겨서 더 쉽게 구현할 수 있지만, 이 방법은 다이얼로그에서는 사용이 불가능하다. OnClickListener를 쓰고 임포트를 할 때 두 개를 선택할 수 있는데android.view.View.OnClickListener를 선택해야한다. import를 해도 오류가 날 때가 있는데 그 때는 public void onClick(View v)를 만들지 않아서이다. OnClickListener를 사용하면 항상 onClick이 따라와야 한다.


생성자 customdialog(Context context)가 이 다이얼로그가 생성되는 부분이다. context는 액티비티 값이 넘어오게 되는데 나중에 이 다이얼로그를 호출할 때 알게 될 것이다.

requestWindowFeature는 팝업창 테마를 결정하는데, 여기서는 타이틀이 없는 팝업창으로 선택했다. setContentView는 다른 액티비티와 마찬가지로 보여지는 레이아웃을 설정한다. 아까 만든 커스텀 다이얼로그 레이아웃을 선택한다. 

마지막으로 img.setOnClickListener(this)는 이미지뷰가 클릭 가능하게 한다. 이것은 레이아웃에서 clickable(ture)랑 같은 효과를 함과 동시에 클릭했을때 public void onClick(View v)라는 함수를 실행시키게 한다. 즉 img는 클릭 가능하고, 클릭하면 onClick함수를 실행하라는 소리다.


public void onClick(View v)는 여태까지 만들었던 클릭 함수들과 똑같다. 여기서는 다이얼로그 창을 닫는 기능을 넣어야 하기 때문에 dismiss()를 넣었따. dismiss()는 현재 열려있는 다이얼로그창을 닫는 함수이다.


이렇게하면 커스텀 다이얼로그 생성이 끝난다. 참고로 우리가 만든건 다이얼로그이기 때문에 매니페스트에 액티비티 추가를 하지 않아도 된다. 다이얼로그를 사용하는 방법은 사용하고 싶은 곳에 다음 코드를 추가하면 된다.




여기서는 change라는 함수가 실행될때 다이얼로그를 보여주게 했다. 일단 다이얼로그를 생성하고 show()를 통해 보여주면 된다. 여기서 선언자 customdialog는 자신이 만든 커스텀 다이얼로그 클래스 이름을 쓰면 된다. 생성할 때 new customdialog(this)를 사용해 아까 설명한 생성자를 사용했다. Context는 보여지는 액티비티를 선택하는 것으로 여기서는 지금 현재 액티비티에 팝업창을 띄우고 싶기 때문에 this를 입력한다.




실행하면 위와같이 새로운 작은 창이 뜨고, 이미지를 보여준다. 

다른 그림을 보여주고 싶다면 새로운 커스텀 다이얼로그를 만들면 되지만, 하나의 커스텀 다이얼로그를 사용하여 동적으로 그림을 바꿔줄 수도 있다.

반응형

댓글

Designed by JB FACTORY