@@ -19,12 +19,14 @@ import android.os.Bundle
1919import android.view.LayoutInflater
2020import android.view.View
2121import android.view.ViewGroup
22- import android.widget.*
22+ import android.widget.FrameLayout
23+ import android.widget.ImageView
24+ import android.widget.TextView
25+ import android.widget.Toast
2326import androidx.fragment.app.Fragment
2427import com.google.android.gms.ads.AdListener
2528import com.google.android.gms.ads.AdLoader
2629import com.google.android.gms.ads.LoadAdError
27- import com.google.android.gms.ads.MediaContent
2830import com.google.android.gms.ads.VideoOptions
2931import com.google.android.gms.ads.admanager.AdManagerAdRequest
3032import com.google.android.gms.ads.nativead.MediaView
@@ -95,8 +97,6 @@ class AdManagerCustomControlsFragment : Fragment() {
9597 nativeAdBinding.adCallToAction.text = nativeAd.callToAction
9698 nativeAdBinding.adAppIcon.setImageDrawable(nativeAd.icon?.drawable)
9799
98- nativeAd.mediaContent?.let { nativeAdBinding.adMedia.setMediaContent(it) }
99-
100100 // These assets aren't guaranteed to be in every NativeAd, so it's important to
101101 // check before trying to display them.
102102 if (nativeAd.price == null ) {
@@ -120,12 +120,15 @@ class AdManagerCustomControlsFragment : Fragment() {
120120 nativeAdBinding.adStars.visibility = View .VISIBLE
121121 }
122122
123+ nativeAdBinding.adMedia.mediaContent = nativeAd.mediaContent
124+ nativeAdBinding.customVideoControls.initialize(
125+ nativeAd.mediaContent,
126+ fragmentBinding.cbStartMuted.isChecked,
127+ )
128+
123129 // Assign native ad object to the native view.
124130 nativeAdView.setNativeAd(nativeAd)
125131
126- val mediaContent: MediaContent ? = nativeAd.mediaContent
127- mediaContent?.let { fragmentBinding.customControls.setMediaContent(it) }
128-
129132 fragmentBinding.btnRefresh.isEnabled = true
130133 }
131134
@@ -140,33 +143,32 @@ class AdManagerCustomControlsFragment : Fragment() {
140143 nativeCustomFormatAd : NativeCustomFormatAd ,
141144 adView : View ,
142145 ) {
143- val headline = adView.findViewById<TextView >(R .id.simplecustom_headline)
144- val caption = adView.findViewById<TextView >(R .id.simplecustom_caption)
146+ val headline = adView.findViewById<TextView >(R .id.headline)
147+ val caption = adView.findViewById<TextView >(R .id.caption)
148+ val customControls = adView.findViewById<CustomControlsView >(R .id.custom_video_controls)
149+ val mediaView = adView.findViewById<MediaView >(R .id.ad_media)
150+ val imageView = adView.findViewById<ImageView >(R .id.ad_image)
145151
146152 headline.text = nativeCustomFormatAd.getText(" Headline" )
147153 caption.text = nativeCustomFormatAd.getText(" Caption" )
148-
149154 headline.setOnClickListener { nativeCustomFormatAd.performClick(" Headline" ) }
150155
151- val mediaPlaceholder = adView.findViewById<FrameLayout >(R .id.simplecustom_media_placeholder)
152-
153156 // Get the media content for the ad.
154157 val mediaContent = nativeCustomFormatAd.mediaContent
155158
156159 // Apps can check the MediaContent's hasVideoContent property to
157160 // determine if the NativeCustomFormatAd has a video asset.
158161 if (mediaContent != null && mediaContent.hasVideoContent()) {
159- val mediaView = MediaView (mediaPlaceholder.getContext())
162+ mediaView.visibility = View . VISIBLE
160163 mediaView.mediaContent = mediaContent
164+ customControls.initialize(mediaContent, fragmentBinding.cbStartMuted.isChecked)
161165 } else {
162- val mainImage = ImageView (activity)
163- mainImage.adjustViewBounds = true
164- mainImage.setImageDrawable(nativeCustomFormatAd.getImage(" MainImage" )?.drawable)
165-
166- mainImage.setOnClickListener { nativeCustomFormatAd.performClick(" MainImage" ) }
167- mediaPlaceholder.addView(mainImage)
166+ customControls.visibility = View .GONE
167+ mediaView.visibility = View .GONE
168+ imageView.visibility = View .VISIBLE
169+ imageView.setImageDrawable(nativeCustomFormatAd.getImage(" MainImage" )?.drawable)
170+ imageView.setOnClickListener { nativeCustomFormatAd.performClick(" MainImage" ) }
168171 }
169- mediaContent?.let { fragmentBinding.customControls.setMediaContent(it) }
170172
171173 fragmentBinding.btnRefresh.isEnabled = true
172174 }
@@ -257,7 +259,5 @@ class AdManagerCustomControlsFragment : Fragment() {
257259 .build()
258260
259261 adLoader.loadAd(AdManagerAdRequest .Builder ().build())
260-
261- fragmentBinding.customControls.reset()
262262 }
263263}
0 commit comments