Skip to content

Commit

Permalink
feat: add adView in history and settings page
Browse files Browse the repository at this point in the history
  • Loading branch information
arch10 committed Dec 30, 2023
1 parent 0317337 commit a487602
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.ViewGroup
import androidx.activity.viewModels
import com.gigaworks.tech.calculator.R
import com.gigaworks.tech.calculator.cache.model.toDomain
Expand All @@ -14,14 +15,23 @@ import com.gigaworks.tech.calculator.ui.base.BaseActivity
import com.gigaworks.tech.calculator.ui.history.adapter.HistoryAdapter
import com.gigaworks.tech.calculator.ui.history.viewmodel.HistoryViewModel
import com.gigaworks.tech.calculator.ui.main.helper.removeNumberSeparator
import com.gigaworks.tech.calculator.util.ADS_DISABLED
import com.gigaworks.tech.calculator.util.ADS_ENABLED
import com.gigaworks.tech.calculator.util.GoogleMobileAdsConsentManager
import com.gigaworks.tech.calculator.util.SHARE_EXPRESSION
import com.gigaworks.tech.calculator.util.logD
import com.gigaworks.tech.calculator.util.visible
import com.google.android.gms.ads.AdRequest
import com.google.firebase.Firebase
import com.google.firebase.remoteconfig.get
import com.google.firebase.remoteconfig.remoteConfig
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class HistoryActivity : BaseActivity<ActivityHistoryBinding>() {

private val viewModel by viewModels<HistoryViewModel>()
private lateinit var googleMobileAdsConsentManager: GoogleMobileAdsConsentManager

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -31,6 +41,31 @@ class HistoryActivity : BaseActivity<ActivityHistoryBinding>() {
setupView()
setupObservables()

// enable Google ads
enableAds()
}

private fun enableAds() {
googleMobileAdsConsentManager =
GoogleMobileAdsConsentManager.getInstance(applicationContext)
val remoteConfig = Firebase.remoteConfig
val shouldEnableAds = remoteConfig["enable_ads"].asBoolean()
if (!shouldEnableAds) {
logD("disabling ads due to remote config")
logEvent(ADS_DISABLED)
return
}
if (googleMobileAdsConsentManager.canRequestAds) {
binding.rv.layoutParams = binding.rv.layoutParams.apply {
(this as ViewGroup.MarginLayoutParams).bottomMargin =
resources.getDimensionPixelSize(R.dimen.banner_ad_height)
}
binding.adViewContainer.visible(true)
val adRequest = AdRequest.Builder().build()
binding.adView.loadAd(adRequest)
logEvent(ADS_ENABLED)
}

}

private fun setupObservables() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@ import com.gigaworks.tech.calculator.ui.main.MainActivity
import com.gigaworks.tech.calculator.ui.settings.helper.getString
import com.gigaworks.tech.calculator.ui.settings.viewmodel.SettingsViewModel
import com.gigaworks.tech.calculator.util.*
import com.google.android.gms.ads.AdRequest
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.play.core.review.ReviewManagerFactory
import com.google.firebase.Firebase
import com.google.firebase.remoteconfig.get
import com.google.firebase.remoteconfig.remoteConfig
import dagger.hilt.android.AndroidEntryPoint
import java.util.*

Expand All @@ -38,6 +42,7 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>() {

private val viewModel by viewModels<SettingsViewModel>()
private var dialog: AlertDialog? = null
private lateinit var googleMobileAdsConsentManager: GoogleMobileAdsConsentManager

override fun onCreate(savedInstanceState: Bundle?) {
val appPreference = AppPreference(this)
Expand All @@ -50,6 +55,32 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>() {

setUpView()
setUpObservables()

// enable Google ads
enableAds()
}

private fun enableAds() {
googleMobileAdsConsentManager =
GoogleMobileAdsConsentManager.getInstance(applicationContext)
val remoteConfig = Firebase.remoteConfig
val shouldEnableAds = remoteConfig["enable_ads"].asBoolean()
if (!shouldEnableAds) {
logD("disabling ads due to remote config")
logEvent(ADS_DISABLED)
return
}
if (googleMobileAdsConsentManager.canRequestAds) {
binding.profileView.layoutParams = binding.profileView.layoutParams.apply {
(this as ViewGroup.MarginLayoutParams).bottomMargin =
resources.getDimensionPixelSize(R.dimen.banner_ad_height)
}
binding.adViewContainer.visible(true)
val adRequest = AdRequest.Builder().build()
binding.adView.loadAd(adRequest)
logEvent(ADS_ENABLED)
}

}

private fun setUpObservables() {
Expand Down Expand Up @@ -290,18 +321,23 @@ class SettingsActivity : BaseActivity<ActivitySettingsBinding>() {
AccentTheme.BLUE -> {
colorDialog.defaultCheck.visible(true)
}

AccentTheme.GREEN -> {
colorDialog.greenCheck.visible(true)
}

AccentTheme.PURPLE -> {
colorDialog.purpleCheck.visible(true)
}

AccentTheme.PINK -> {
colorDialog.pinkCheck.visible(true)
}

AccentTheme.RED -> {
colorDialog.redCheck.visible(true)
}

AccentTheme.GREY -> {
colorDialog.greyCheck.visible(true)
}
Expand Down
16 changes: 16 additions & 0 deletions app/src/main/res/layout/activity_history.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,20 @@

</FrameLayout>

<FrameLayout
android:id="@+id/adViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/colorBackground"
android:visibility="gone">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:adSize="BANNER"
app:adUnitId="ca-app-pub-2673776259760115/8506722549" />
</FrameLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
22 changes: 20 additions & 2 deletions app/src/main/res/layout/activity_settings.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.settings.SettingsActivity">

<com.google.android.material.appbar.AppBarLayout
Expand All @@ -22,6 +22,8 @@
app:title="@string/title_activity_settings" />
</com.google.android.material.appbar.AppBarLayout>



<androidx.core.widget.NestedScrollView
android:id="@+id/profileView"
android:layout_width="match_parent"
Expand Down Expand Up @@ -675,4 +677,20 @@

</androidx.core.widget.NestedScrollView>

<FrameLayout
android:id="@+id/adViewContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/colorBackground"
android:visibility="gone">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:adSize="BANNER"
app:adUnitId="ca-app-pub-2673776259760115/5156890070" />
</FrameLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
1 change: 1 addition & 0 deletions app/src/main/res/values/dimens.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@
<dimen name="space_xxxl">40dp</dimen>
<dimen name="space_xxxxl">48dp</dimen>
<dimen name="pad_page_margin">-24dp</dimen>
<dimen name="banner_ad_height">50dp</dimen>
</resources>

0 comments on commit a487602

Please sign in to comment.