dev/aos

[AOS] 뒤로가기시 안내 팝업창(Dialog) 띄우기

캄춰 2023. 11. 28. 11:20
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
반응형