안녕하세요~ 챠니입니다! :)
오랜만에 인사를 드리는데요~!
오늘은 CustomDialog 예제코드를 알아보도록 하겠습니다.
사실 Android 개발을하면서 Dialog를 만들 수 있는 방법에는 여러가지 가있는데요~
저희는 그중에서도 DialogFragment를 사용해서 CustomDialog를 만들어 보도록 하겠습니다!
기본적은 예제코드이니 다음코드를 잘 보시고, 또 주석을 확인해서 각 개발에 필요한 코드를 작성하시면 되겠습니다!
CustomDialog 예제
DialogFragment를 사용해서 만드는 방법은 아래와 같습니다.
가장 기본적으로 onCreateView에서 레이아웃 설정 및 listener를 선언하고
onResume에서는 Dialog의 화면크기 및 배경, 애니메이션 등을 적용을 합니다.
class CustomDialog(val itemClick: (Boolean) -> Unit) : DialogFragment() {
lateinit var binding: DialogCustomBinding
init {
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = DataBindingUtil.inflate(inflater, R.layout.dialog_permission_info, container, false)
// 확인 버튼 클릭
binding.tvPermissionInfoNext.setOnClickListener {
//ClickEvent 전달
itemClick(true)
dismiss()
}
return binding.root
}
override fun onResume() {
super.onResume()
//Dialog FullScreen 적용
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
//배경 투명적용
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
//뒤배경을 어둡게만드는 flag를 제거
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
//Animation 적용
dialog?.window?.setWindowAnimations(R.style.PermissionDialogAnimation)
//뒤로가기 막기
dialog?.setCancelable(false)
}
}
style.xml 파일
애니메이션 style파일은 다음과 같습니다.
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="PermissionDialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_in_bottom</item>
<item name="android:windowExitAnimation">@anim/slide_out_bottom</item>
</style>
</resources>
slide_in_bottom.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="350"
android:fromYDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="0%" />
slide_out_bottom.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="350"
android:fromYDelta="0%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="100%" />
질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!
응원의 댓글은 저에게 큰 힘이 된답니다! :)
즐거운 하루되세요!
깃허브 보러 놀러오세요 👇 (맞팔환영)
https://github.com/younminchan
'🖥 Programming > 📱 Android (Kotlin)' 카테고리의 다른 글
[해결방법] 개발자 프로필과 모든 앱이 2024년 9월 10일에 Google Play에서 삭제됩니다. (10) | 2024.07.25 |
---|---|
[Android][kotlin] 레이아웃 StausBar(상단), NavigtationBar(하단) 전체 화면 (0) | 2024.06.24 |
[Android] Android Gradle plugin requires Java 17 to run. You are currently using Java 11. 해결방법 (2) | 2024.01.08 |
[Android] 머티리얼 디자인(Material Design) (0) | 2023.12.27 |
[Andorid][kotlin] 날짜형식 변경관련(SimpleDateFormat, getTimeZone) (2) | 2023.12.05 |
[Android] SSL Error Handler 구글 스토어 대응 (2) | 2023.11.23 |
[Android][kotlin][NestJS] FCM, Firebase Background HeadUp Display not working 관련 문제 해결 (0) | 2023.10.05 |
[Android][kotlin] Fragment간 통신 방법 (0) | 2023.09.08 |