Commit b5f42aee authored by wanglei's avatar wanglei

...底部广告

parent 99da756e
...@@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment ...@@ -9,7 +9,7 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.ads.admob.AdmobBannerUtils
import com.base.filerecoveryrecyclebin.databinding.ActivityMainBinding import com.base.filerecoveryrecyclebin.databinding.ActivityMainBinding
import com.base.filerecoveryrecyclebin.fragment.HomeFragment import com.base.filerecoveryrecyclebin.fragment.HomeFragment
import com.base.filerecoveryrecyclebin.fragment.RecycleBinFragment import com.base.filerecoveryrecyclebin.fragment.RecycleBinFragment
...@@ -17,7 +17,6 @@ import com.base.filerecoveryrecyclebin.help.BaseActivity ...@@ -17,7 +17,6 @@ import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
import com.base.filerecoveryrecyclebin.service.StayNotificationService import com.base.filerecoveryrecyclebin.service.StayNotificationService
import com.base.filerecoveryrecyclebin.utils.BarUtils import com.base.filerecoveryrecyclebin.utils.BarUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.DialogViews.showExitDialog import com.base.filerecoveryrecyclebin.view.DialogViews.showExitDialog
import com.base.filerecoveryrecyclebin.view.PermissionDialog.showPermissionBottomSheet import com.base.filerecoveryrecyclebin.view.PermissionDialog.showPermissionBottomSheet
import com.base.filerecoveryrecyclebin.view.RateStarPop.showRateStarPopDialog import com.base.filerecoveryrecyclebin.view.RateStarPop.showRateStarPopDialog
...@@ -47,6 +46,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -47,6 +46,16 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
BarUtils.setStatusBarColor(this, Color.parseColor("#F2F3F7")) BarUtils.setStatusBarColor(this, Color.parseColor("#F2F3F7"))
binding.root.updatePadding(top = BarUtils.getStatusBarHeight()) binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
if (!checkStorePermission()) {
if (dialog == null) {
dialog = showPermissionBottomSheet(launcher) {
AdmobBannerUtils.showCollapsibleBannerAd(this, binding.flBanner)
}
}
} else {
AdmobBannerUtils.showCollapsibleBannerAd(this, binding.flBanner)
}
binding.viewpager2.run { binding.viewpager2.run {
adapter = object : FragmentStateAdapter(this@MainActivity) { adapter = object : FragmentStateAdapter(this@MainActivity) {
override fun getItemCount(): Int { override fun getItemCount(): Int {
...@@ -116,11 +125,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { ...@@ -116,11 +125,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (!checkStorePermission()) {
if (dialog == null) { if (checkStorePermission()) {
dialog = showPermissionBottomSheet(launcher)
}
} else {
initStayServiceObserver() initStayServiceObserver()
} }
......
package com.base.filerecoveryrecyclebin.ads.admob
import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.ViewGroup
import android.view.ViewTreeObserver
import com.base.filerecoveryrecyclebin.help.ConfigHelper
import com.google.ads.mediation.admob.AdMobAdapter
import com.google.android.gms.ads.AdListener
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView
import java.util.UUID
object AdmobBannerUtils {
private var adView: AdView? = null
private var listener: ViewTreeObserver.OnGlobalLayoutListener? = null
fun showCollapsibleBannerAd(context: Context, parent: ViewGroup) {
if (adView != null) {
adView?.destroy()
}
adView = AdView(context)
parent.removeAllViews()
parent.addView(adView)
listener = ViewTreeObserver.OnGlobalLayoutListener {
val screenPixelDensity = context.resources.displayMetrics.density
val adWidth = (parent.width / screenPixelDensity).toInt()
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(context, adWidth)
adView?.adUnitId = ConfigHelper.bannerMaxId
adView?.setAdSize(adSize)
loadCollapsibleBanner()
parent.viewTreeObserver.removeOnGlobalLayoutListener(listener)
}
parent.viewTreeObserver.addOnGlobalLayoutListener(listener)
}
private fun loadCollapsibleBanner() {
val extras = Bundle()
extras.putString("collapsible", "bottom")
extras.putString("collapsible_request_id", UUID.randomUUID().toString())
val adRequest =
AdRequest.Builder().addNetworkExtrasBundle(AdMobAdapter::class.java, extras).build()
adView?.adListener =
object : AdListener() {
override fun onAdLoaded() {}
}
adView?.loadAd(adRequest)
}
}
\ No newline at end of file
...@@ -17,10 +17,12 @@ object ConfigHelper { ...@@ -17,10 +17,12 @@ object ConfigHelper {
const val interAdmobId = "ca-app-pub-3940256099942544/1033173712" const val interAdmobId = "ca-app-pub-3940256099942544/1033173712"
const val nativeAdmobId = "ca-app-pub-3940256099942544/2247696110" const val nativeAdmobId = "ca-app-pub-3940256099942544/2247696110"
const val openAdmobId = "/6499/example/app-open" const val openAdmobId = "/6499/example/app-open"
const val bannerAdmobId = "ca-app-pub-3940256099942544/9214589741"
const val interAdMaxId = "YOUR_AD_UNIT_ID" const val interAdMaxId = "YOUR_AD_UNIT_ID"
const val nativeAdMaxId = "YOUR_AD_UNIT_ID" const val nativeAdMaxId = "YOUR_AD_UNIT_ID"
const val openAdMaxId = "YOUR_AD_UNIT_ID" const val openAdMaxId = "YOUR_AD_UNIT_ID"
const val bannerMaxId = "ca-app-pub-3940256099942544/9214589741"
//一定展示大图广告 //一定展示大图广告
var mustShowNativeAd: Boolean = false var mustShowNativeAd: Boolean = false
......
...@@ -7,12 +7,13 @@ import com.base.filerecoveryrecyclebin.activity.MainActivity ...@@ -7,12 +7,13 @@ import com.base.filerecoveryrecyclebin.activity.MainActivity
import com.base.filerecoveryrecyclebin.databinding.DialogPermissionBottomsheetBinding import com.base.filerecoveryrecyclebin.databinding.DialogPermissionBottomsheetBinding
import com.base.filerecoveryrecyclebin.help.ActivityLauncher import com.base.filerecoveryrecyclebin.help.ActivityLauncher
import com.base.filerecoveryrecyclebin.help.PermissionHelp.requestStorePermission import com.base.filerecoveryrecyclebin.help.PermissionHelp.requestStorePermission
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
object PermissionDialog { object PermissionDialog {
private val TAG = "PermissionDialog"
fun Context.showPermissionBottomSheet(launcher: ActivityLauncher): BottomSheetDialog { fun Context.showPermissionBottomSheet(launcher: ActivityLauncher, dismissAction: () -> Unit): BottomSheetDialog {
val dialog = BottomSheetDialog(this) val dialog = BottomSheetDialog(this)
val binding = DialogPermissionBottomsheetBinding.inflate(LayoutInflater.from(this)) val binding = DialogPermissionBottomsheetBinding.inflate(LayoutInflater.from(this))
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
...@@ -30,6 +31,10 @@ object PermissionDialog { ...@@ -30,6 +31,10 @@ object PermissionDialog {
} }
}) })
} }
dialog.setOnDismissListener {
LogEx.logDebug(TAG, "dismissAction 2")
dismissAction.invoke()
}
return dialog return dialog
} }
......
...@@ -15,12 +15,13 @@ ...@@ -15,12 +15,13 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<LinearLayout <LinearLayout
app:layout_constraintTop_toBottomOf="@id/viewpager2"
android:id="@+id/ll" android:id="@+id/ll"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/white" android:background="@color/white"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/fl_banner"
tools:ignore="DisableBaselineAlignment"> tools:ignore="DisableBaselineAlignment">
<LinearLayout <LinearLayout
...@@ -85,4 +86,11 @@ ...@@ -85,4 +86,11 @@
</LinearLayout> </LinearLayout>
<FrameLayout
android:id="@+id/fl_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment