안드로이드(Android) Theme.dialog 로 Activity 화면을 팝업(dialog) 만드는 방법 |
환경 : Eclipse Mars, Android 4.2.2 |
안드로이드에는 팝업창을 만들고 싶은 개발자들에게 다양한 방법을 제공하고 있습니다. 그 중 하나가 Custom Dialog 입니다. 안드로이드에서 제공하는 AlertDialog 외에 사용자가 화면 레이아웃을 직접 만들어서 팝업창을 띄울 수 있습니다. 두 가지 방법이 있는데, 그 중 한가지인 Activity 화면을 팝업 화면으로 사용하는 방법에 대해 소개하겠습니다.
▼ 다이얼로그 클래스를 따로 만들어서 띄우지 않고 기존에 사용하던 Activity 를 팝업창으로 사용하고 싶다면 Theme.dialog 를 이용하는 것이 좋겠죠. 먼저 팝업창으로 사용할 Activity 를 하나 만듭니다. 장점은 화면 레이아웃을 자신이 원하는 형태로 쉽게 꾸밀수 있다는 것이죠. 그리고 기존 소스들을 쉽게 재사용 할 수 있겠죠. 단지 다이얼로그로 만들기 위해 윈도우 타이틀을 없애는 작업을 해야 합니다. 그래야 팝업처럼 보일 것이니까요. requestWindowFeature() 의 Window.FEATURE_NO_TITLE 값을 넘기면 제목부분을 없앨수 있습니다.
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; public class DialogActivity extends Activity implements OnClickListener { private Button mConfirm, mCancel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_dialog); setContent(); } private void setContent() { mConfirm = (Button) findViewById(R.id.btnConfirm); mCancel = (Button) findViewById(R.id.btnCancel); mConfirm.setOnClickListener(this); mCancel.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btnConfirm: this.finish(); break; case R.id.btnCancel: this.finish(); break; default: break; } } }
▼ 아래는 팝업창으로 쓰일 Activity 의 화면 레이아웃 XML 입니다. 팝업창 처럼 버튼을 아래 위치 시키고 ProgressBar 위젯을 추가해서 ProgressDialog 와 같은 모양을 만들었습니다.
<?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dip" android:layout_height="200dip" > <TextView android:id="@+id/txtView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="Activity 팝업창" android:textSize="25sp" /> <Button android:id="@+id/btnConfirm" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_alignBottom="@+id/btnCancel" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/btnCancel" android:text="취소" /> <Button android:id="@+id/btnCancel" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="확인" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/txtView" android:layout_centerHorizontal="true" android:layout_marginTop="14dp" /> </RelativeLayout>
▼ 다음은 AndroidManifest.xml 의 Activity 요소에 @android:style/Theme.Dialog 를 셋팅합니다. 이렇게 Dialog 테마를 적용하시면 팝업처럼 보이게 되는 것입니다.
<activity android:name=".DialogActivity" android:label="@string/title_activity_dialog" android:theme="@android:style/Theme.Dialog"> </activity>
▼ 아래는 메인 Activity 소스 입니다. 버튼 클릭시 startActivity() 함수로 다른 Activity 를 이동하는 것처럼 사용하시면 됩니다. 단지 Theme.Dialog 로 AndroidManifest.xml 에 있는 해당 Activity 의 style 설정값을 바꾸시면 됩니다.
public class ActivityDialogActivity extends Activity implements OnClickListener { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_dialog); button = (Button) findViewById(R.id.btn_alert); // 클릭 이벤트 button.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_alert: startActivity(new Intent(this, DialogActivity.class)); break; default: break; } } }
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) ImageView 사이즈(size) 조절하는 방법 (1) | 2019.11.11 |
---|---|
안드로이드(Android) 가로 세로 모드 자동회전 고정하는 방법 (0) | 2019.10.30 |
안드로이드(Android) 사용자정의 진행 다이얼로그(Custom Progress Dialog) 만드는 방법 (5) | 2019.10.28 |
안드로이드(Android) 다이얼로그(Dialog) Animation 효과 넣는 방법 (1) | 2019.10.28 |
안드로이드(Android) 다이얼로그(Dialog) 키보드 Back key 눌렀을 때 종료하는 방법 (0) | 2019.10.26 |
안드로이드(Android) 기본 알림창인 AlertDialog 에 ListView 표현하는 방법 (3) | 2019.10.26 |
안드로이드(Android) 기본 알림창 AlertDialog 에서 선택 목록창과 옵션창 띄우기 (0) | 2019.10.25 |
안드로이드(Android) 사용자정의 다이얼로그(Custom Dialog) 만드는 방법 (0) | 2019.10.25 |