[Android] Popup Window Android 2012. 3. 6. 15:43
팝업 윈도우는 임의의 뷰를 담는 컨테이너로 현재 액티비티 위에 잠깐 열리는 윈도우다.

이것은 액티비티 전환 없이!! 잠시 열리는 화면을 보여 줄 때 적절한 것 같다. 이는 다이얼로그와 거의 흡사한 형태이다.

먼저 따로 팝업용으로 레이아웃을 하나 만든다. 그 다음 아래와 같은 코드를 넣어보면 어떤 형태인지 확인이 가능 할 것이다.

public class ImageViewActivity extends Activity{
 PopupWindow m_pop;
 View m_popup_view;
 LinearLayout m_linear;
 Button m_btn;
 
 public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);
  m_linear = (LinearLayout)findViewById(R.id.main);
  m_popup_view = View.inflate(this, R.layout.subactivity, null);
  m_pop = new PopupWindow(m_popup_view,200,100,true);
  m_btn = (Button)findViewById(R.id.btn1);
  m_btn.setOnClickListener(new Button.OnClickListener(){
   public void onClick(View v){
    //m_pop.showAtLocation(m_linear, Gravity.NO_GRAVITY, 50, 100);//지정위치
    //m_pop.showAtLocation(m_linear, Gravity.CENTER, 0, 0);//중앙
    //m_pop.showAtLocation(m_linear, Gravity.HORIZONTAL_GRAVITY_MASK|Gravity.BOTTOM, 0, 0);//수평중앙,수직바닥
    m_pop.setAnimationStyle(-1);
    m_pop.showAsDropDown(m_btn);
   }
  });  
  Button btn = (Button)m_popup_view.findViewById(R.id.btn2);
  btn.setOnClickListener(new Button.OnClickListener(){
   public void onClick(View v){
    m_pop.dismiss();
   } 
  });
 } 
}

위에서 보면 showAtLocation을 이용하여 원하는 위치로 배정 할 수가 있다. 그라비티의 경우를 감안하여야 한다.

또한 위에서 보면 dismiss() 함수를 볼 수 있는데 이는 팝업을 닫는 것이며, isShowing()으로 팝업이 열렸는지 닫혔는지 구분이 가능하다.

그리고 m_pop.setAnimationStyle(-1);    m_pop.showAsDropDown(m_btn); 부분을 확인 할 수가 있는데 -1은 디폴트 애니메이션 효과를 나타낸다. 0일 경우에는 효과를 사용하지 않는 것이며 showAsDropDown을 이용하여 버튼에 이벤트를 연결 한 것이다.