본문 바로가기
안드로이드 자바

[JAVA][Android] PopupWindow 표시하기

by teamnova 2024. 10. 7.
728x90

PopupWindow는 사용자 인터페이스(UI)에서 추가적인 정보를 제공하거나 사용자의 상호작용을 유도할 때 사용합니다.

PopupWindow를 사용하는 이유

  1. 간편한 정보 제공:
    • PopupWindow를 사용하면 사용자가 현재 보고 있는 화면의 흐름을 방해하지 않고, 추가적인 정보를 제공할 수 있습니다. 예를 들어, 더 많은 세부정보를 보여주거나 추가 설명을 제공할 때 유용합니다.
  2. 화면 공간 활용:
    • 주요 화면에 많은 정보를 동시에 표시할 수 없을 때, PopupWindow를 사용하여 필요한 정보를 별도로 띄워 공간을 절약할 수 있습니다.
  3. 사용자 상호작용 유도:
    • 사용자에게 특정 동작을 유도하기 위해 팝업을 띄울 수 있습니다. 예를 들어, 사용자가 특정 작업을 완료하기 전 확인 메시지를 표시하거나, 추가 옵션을 제공할 때 사용합니다.

 

사용예시 :

  • 웹 브라우저: 웹 브라우저에서 링크를 오른쪽 클릭했을 때 나타나는 컨텍스트 메뉴.
  • SNS 앱: 사진이나 동영상 업로드 시, 태그 추가나 필터 적용 옵션을 제공하는 팝업.
  • 일정 관리 앱: 일정 추가 시, 팝업으로 날짜와 시간, 알림 설정을 제공하는 경우.

 

 

MainActivity

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

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

        // 팝업을 표시할 버튼을 찾고 클릭 리스너를 설정
        Button showPopupButton = findViewById(R.id.show_popup_button);
        showPopupButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 버튼 클릭 시 팝업 창을 표시
                showPopupWindow(v);
            }
        });
    }

    private void showPopupWindow(View anchorView) {
        // 팝업 레이아웃을 인플레이트
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        View popupView = inflater.inflate(R.layout.popup_layout, null);

        // 팝업 창을 생성하고 설정
        final PopupWindow popupWindow = new PopupWindow(popupView,
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                true);

        // 팝업 창의 콘텐츠를 설정하고 화면에 표시
        popupWindow.setContentView(popupView);
        popupWindow.showAsDropDown(anchorView, 0, 0);

        // 팝업 창 내의 닫기 버튼을 찾아 클릭 리스너를 설정
        Button closePopupButton = popupView.findViewById(R.id.close_popup_button);
        closePopupButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 닫기 버튼 클릭 시 팝업 창을 닫음
                popupWindow.dismiss();
            }
        });
    }
}

 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/show_popup_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Popup" />

</RelativeLayout>

 

시연영상