팝업창을 만드는 방법으로 여러가지 방법이 있는데, 이 포스팅에서 쓸 방법은 팝업 액티비티의 뒷 배경을 반투명하게 하여, 팝업창이 띄워지는 것처럼 보이도록 하는 방법이다.
1. 먼저, 팝업창을 만들 때 일반 Activity를 만들 듯이 똑같이 팝업 Activity를 만든다. 그 후 Activity를 구성한다라는 생각으로 팝업 xml 파일에 레이아웃을 구성시키면 된다.
이 때 팝업 xml 파일 구성시에는 꼭 전체 크기를 match_parent로 하면 안된다. 그렇게 할 경우 일반 화면 전환 식으로 넘어가기 때문에 팝업을 만들 수가 없다.
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#00FFFFFF">
</androidx.constraintlayout.widget.ConstraintLayout>
( ※ 'background=#00FFFFFF'는 안 써도 상관 없음 )
이제 팝업을 띄울 때 뒷 배경은 대부분 어두운 반투명 배경이므로 그 부분을 만들어야 한다.
2. values에 styles.xml 파일에서 배경 색상을 지정한다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#84cdc2</color>
<color name="colorPrimaryDark">#5ea096</color>
<color name="colorAccent">#fb777a</color>
<!--팝업배경-->
<color name="dialogColor">#A6333333</color>
</resources>
3. 그 다음으로 이 배경색상을 입힐 수 있는 테마를 만들어야 한다.
마찬가지로 values에 있는 styles.xml 파일에 다음과 같은 코드를 추가한다.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--팝업창 테마-->
<style name="DialogTheme" parent="@style/Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@color/dialogColor</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@null</item>
</style>
</resources>
4. 그럼 팝업창을 만들기 위한 테마까지 완성이 된 상태다. 마지막으로, AndroidManifest.xml 파일에서 테마만 지정해주면 팝업이 완성된다.
<activity android:name=".main.popupActivity"
android:theme="@style/DialogTheme"/>
(이 방법은 액티비티에서 액티비티 이동이므로 팝업창으로 넘어가게 끔 하는 것은 일반적인 액티비티 간 이동 방법 그대로 Intent를 사용하면 된다.)
'Android Studio > Android' 카테고리의 다른 글
Android Compose UI 기초 (0) | 2023.08.22 |
---|---|
안드로이드 MVC 패턴 (가장 기본적인 패턴) (0) | 2022.03.24 |
Android Studio setClipToOutLine() in RecyclerView (0) | 2020.04.10 |
Android Studio Room Database (0) | 2020.04.02 |
Android MVVM Architecture (0) | 2020.03.27 |
댓글