안녕하세요. thinkingfactory입니다.
안드로이드스튜디오에서 간단히 다이어로그를 개발하는 방법을 알려드리기 위해 포스트를 작성합니다.
윈도우에서와 마찬가지로 안드로이드에서도 사용자에게 정보를 제공하기 위해 다이어로그(Dialog)를 제공합니다. 안드로이드에서 기본적으로 제공하는 다이어로그 형태는 다음과 같습니다.
최신 안드로이드 디바이스에서는 다른 디자인을 볼 수 있는데, 이 디자인은 안드로이드 버전, ROM 등 소프트웨어를 공급해주는 개발사에 따라서 다릅니다.
본론으로 들어가서, 안드로이드 스튜디오를 켜서 다이어로그를 개발하도록 하겠습니다.
1. 다이어로그 레이아웃을 생성합니다.
레이아웃 리소스 파일을 생성하고 난 뒤, 간단히 퍼블리싱 작업을 통해 다이어로그 레이아웃을 원하는대로 작업해주세요. 자기가 원하는 레이아웃을 만드시면 됩니다. 액티비티처럼 작업하셔도 됩니다.
이 때 전체를 감싸는 레이아웃의 width 부분이나 margin을 설정해서 팝업처럼 크기를 줄일 수 있습니다.
이렇게 단순하게 레이아웃 작업을 한 것을 가지고 자바 코드 작업을 하도록 하겠습니다.
2. 다이어로그 자바 코드를 생성합니다.
저는 Dialog 라는 폴더를 생성해서 자바 코드를 생성했습니다. 이 때 Dialog를 상속받아서 작성합니다.
제 코드는 다음과 같습니다.
public class DialogFinish extends Dialog {
Context context ;
public DialogFinish(Context context) {
super(context, android.R.style.Theme_Translucent_NoTitleBar);
this.context = context;
}
public void init(){
WindowManager.LayoutParams lpWindow = new WindowManager.LayoutParams();
lpWindow.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
lpWindow.dimAmount = 0.8f;
getWindow().setAttributes(lpWindow);
requestWindowFeature(Window.FEATURE_NO_TITLE); // 액티비티의 타이틀바를 숨긴다.
setContentView(R.layout.dialog_match_player); // 커스텀 다이얼로그의 레이아웃을 설정한다.
setCanceledOnTouchOutside(true);
}
}
이렇게 레이아웃, 자바 코드를 작성하면 별다른 작업 없이 다이어로그를 띄울 수 있습니다.
3. 메인 엑티비티나 UI 쓰레드 위에서 Dialog를 호출합니다.
DialogFinish dialogFinish = new DialogFinish(activity); // activity는 Context입니다. this로 작성하셔도 됩니다.
dialogFinish.init();
dialogFinish.show();
메인 엑티비티와 같은 UI작업이 가능한 쓰레드에서 Dialog를 init 호출한 뒤에, show로 불러올 수 있습니다.
확인 버튼을 누르면 onClick 작업을 발생시킨다던가, 이벤트를 개발하는 것은 다이어로그 코드의 init함수에서 작업할 수 있습니다.
만약에 메인 엑티비티와 상호작용해야될 경우, 메인엑티비티에서 onClickListener를 생성한 다음, 파라미터로 init에 넘기고 init에서 클릭 리스너를 버튼에 적용하는 방법이 있습니다.
저는 주로 다이어로그에서 해결하는 편인데, 엑티비티와 상호작용해야되는 경우 위 방법을 사용합니다.
다음은 제가 작성했던 롤 파트너 매칭 서비스 <롤파> 가이드 -일반 매칭편- 에서 삽입했던 이미지인데, 매칭 진행중을 띄운 다이어로그입니다.
이상으로 간단한 다이어로그 작업을 하는 방법을 포스팅해봤습니다.
방법을 더 간단하게 적자면, 1. 레이아웃 짜기 2. 자바 개발 3. UI쓰레드에서 호출
이렇게 될 것 같습니다.
글 읽어주셔서 감사합니다.
'Android > 강의' 카테고리의 다른 글
안드로이드 스튜디오에서 고퀄리티 에니메이션 간단하게 삽입하기 -Lottie- (0) | 2020.01.08 |
---|---|
안드로이드 이미지 Drawable 사용 원칙 -Densities- (0) | 2020.01.04 |
안드로이드 스튜디오에서 Github 사용법 - 커밋, 푸시 with VCS (0) | 2020.01.03 |
Retrofit의 통신에서 Model DAO/VO (0) | 2019.12.08 |
PopupMenu를 이용한 팝업 메뉴 구현 (0) | 2017.07.07 |
댓글