본문 바로가기

Android/Dialog

안드로이드/Android PopupWindow를 사용해 보자 ~!


 < 개발 환경 >  
   작성일 : 2013.01.17
   OS 설치 버전 : Windows7 32bit  
   SDK 설치 버전 : 안드로이드 SDK 4.2 (젤리빈) / API LEVEL : 17  
   ADT 설치 버전 : 21   
   Java 설치 버전 : JDK 1.6.0_20 / JRE6 
   이클립스 설치 버전 : Indigo
   테스트단말 : 삼성 갤럭시 S2 4.0.4 (아이스크램 샌드위치)   

 < 프로젝트 적용 > 
   API LEVEL : 8  
   minSdkVersion : 8 
   targetSdkVersion : 8  
   Java Compiler Level : 1.6  
   Text file encoding : UTF-8






안드로이드/Android PopupWindow를 사용해 보자 ~!





이번 시간에는 PopupWindow를 사용법에 대해 알아 보겠습니다. 팝업 윈도우란 기본적으로 Dialog의 특성을 지녔다고 보시면 되는데, Dialog처럼 혼자 Focus를 받고 Dialog 종료시 까지는 아무런 작업을 할 수 없는 Dialog가 아니라 화면에 Dialog처럼 표시가 되더라도 나머지 기능들을 동시에 사용할 수 있다고 보시면 됩니다.


자 그럼 예제를 통해 알아 보겠습니다.


package arabiannight.tistory.com.popupwindow;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast;

public class MainActivity extends Activity {

	private PopupWindow mPopupWindow;
	private Button btn_Popup;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		btn_Popup = (Button) findViewById(R.id.btn_click);
		
	}

	public void onClick(View v) {

		switch (v.getId()) {
		case R.id.btn_click:

			View popupView = getLayoutInflater().inflate(R.layout.popup_window, null);

			mPopupWindow = new PopupWindow(popupView,
					LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

			/**
			 * PopupWindow Show 메서드
			 * showAsDropDown(anchor, xoff, yoff)
			 * @View anchor : anchor View를 기준으로 PopupWindow 표시 (상,하)
			 * PopupWindow가 최대한 화면에 표시되도록 시스템이 설정해 준다.
			 * xoff, yoff : anchor View를 기준으로 PopupWindow를 표시된것을
			 * 기준으로 xoff는 x좌표, yoff는 y좌표 만큼 이동 한다.
			 * @int xoff : -숫자(화면 왼쪽으로 이동), +숫자(화면 오른쪽으로 이동)
			 * @int yoff : -숫자(화면 위쪽으로 이동), +숫자(화면 아래쪽으로 이동)
			 * achor View 를 덮는 것도 가능
			 * 화면바깥 좌우, 위아래로 이동 가능 (짤린 상태로 표시됨)
			 */
			mPopupWindow.setAnimationStyle(-1); // 애니메이션 설정(-1:설정안함, 0:설정)
			mPopupWindow.showAsDropDown(btn_Popup, 50, 50);
			
			/**
			 * update() 메서드를 통해 PopupWindow의 좌우 사이즈, x좌표, y좌표
			 * anchor View까지 재설정 해줄수 있습니다.
			 */
//			mPopupWindow.update(anchor, xoff, yoff, width, height)(width, height);

			break;

		case R.id.btn_close:

			if (mPopupWindow != null && mPopupWindow.isShowing()) {
				mPopupWindow.dismiss();
			}

			break;
			
		case R.id.btn_bottom:

			Toast.makeText(MainActivity.this, "Bottom UI 입니다.", Toast.LENGTH_SHORT).show();

			break;

		default:
			break;

		}

	}

}




파일첨부 :


스크린샷 : 



위의 스크린샷을 보시면 PopupWindow가 알림창 아래에서 짤려서 표시 된 것을 보실 수 있습니다. 만약 좌표를 저렇게 주신다면 짤린 형태로 표시되게 되구요. 안드로이드 Dialog와는 다르게 동시에 다른 View들의 이벤트들을 처리 할 수 있습니다.


사용 하실 때에는 xml 레이아웃을 만드신 후 inflate 시켜 주시면 됩니다.



감사합니다.