728x90
반응형
먼저, 뒤로가기시 표출될 Dialog클래스를 하나 만든다.
Dialog클래스를 만들기 이전 Layout도 있어야지
[layout]
<layout>
<LinearLayout
...
android:orientation="vertical">
<com.google.android.gms.ads.AdView />
<LinearLayout
...
android:orientation="horizontal">
<Button />
<Button />
</LinearLayout>
</LinearLayout>
</layout>
[Dialog Class]
class NativeAdPopup(private val context:Context) : Dialog(context) {
private lateinit var binding:PopupNativeAdBinding
private var backpressListener:BackpressListener? = null
init {
val layoutInflater = LayoutInflater.from(context)
binding = DataBindingUtil.inflate(layoutInflater, R.layout.popup_native_ad, null, false)
// request ad
val adRequest = AdRequest.Builder().build()
binding.adLayout.loadAd(adRequest)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
NLog.v("onCreate...")
setContentView(binding.root)
window?.setBackgroundDrawable(null)
binding.adInterfaceNo.setOnClickListener { dismiss() }
binding.adInterfaceYes.setOnClickListener { backpressListener?.let { it.onFinish() } }
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
override fun show() {
super.show()
}
fun setOnBackpressListener(listener:BackpressListener) {
this.backpressListener = listener
}
}
[MainActivity]
val popupNativeAd = NativeAdPopup(this@MainActivity)
popupNativeAd.setOnBackpressListener(object:BackpressListener {
override fun onFinish() {
finish()
}
})
this.onBackPressedDispatcher.addCallback(object:OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
popupNativeAd.show()
}
})
}
Dialog 클래스 인스턴스를 호출하고 싶은 경우
'show()'함수를 사용하여 호출한다.
728x90
반응형
'dev > aos' 카테고리의 다른 글
[AOS] SigningKey 글자 명시(gradle.properties) (0) | 2023.11.30 |
---|---|
[AOS] 라이브러리 Github, JitPack연결 (0) | 2023.11.28 |
[AOS] FCM(Firebase Cloud Messaging) 실행 (0) | 2023.11.24 |
[AOS] FCM(Firebase Cloud Messaging) 구축 (0) | 2023.11.23 |
[AOS] 초록줄, 노란줄 제거 방법 (0) | 2023.11.22 |