Commit ba77eeca authored by wanglei's avatar wanglei

高级原生广告修改布局

parent ac331bbc
...@@ -69,7 +69,7 @@ class KokoLaunchActivity : AppCompatActivity() { ...@@ -69,7 +69,7 @@ class KokoLaunchActivity : AppCompatActivity() {
finish() finish()
} }
// setDebugAdsConsent {} setDebugAdsConsent {}
} }
/** /**
...@@ -104,14 +104,4 @@ class KokoLaunchActivity : AppCompatActivity() { ...@@ -104,14 +104,4 @@ class KokoLaunchActivity : AppCompatActivity() {
(application as MyApplication).loadAd(this) (application as MyApplication).loadAd(this)
} }
fun printTaskActivity() {
val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager
val runningTasks = activityManager.getRunningTasks(10)
for (taskInfo in runningTasks) {
val componentName = taskInfo.topActivity
val activityName = componentName!!.className
Log.e("Activity", "Task Activity Name: $activityName")
}
}
} }
\ No newline at end of file
...@@ -25,7 +25,6 @@ import com.google.android.gms.ads.nativead.NativeAd ...@@ -25,7 +25,6 @@ import com.google.android.gms.ads.nativead.NativeAd
import com.google.android.gms.ads.nativead.NativeAdOptions import com.google.android.gms.ads.nativead.NativeAdOptions
import com.google.android.material.navigation.NavigationBarView import com.google.android.material.navigation.NavigationBarView
import com.zxhy.fastfilemanagerpro.databinding.ActivityMainBinding import com.zxhy.fastfilemanagerpro.databinding.ActivityMainBinding
import com.zxhy.fastfilemanagerpro.databinding.AdNativeAdvanceBinding
import com.zxhy.fastfilemanagerpro.kokotools.ActivityLauncher import com.zxhy.fastfilemanagerpro.kokotools.ActivityLauncher
import com.zxhy.fastfilemanagerpro.kokotools.permission.PermissionCheck.storePermissionCheck import com.zxhy.fastfilemanagerpro.kokotools.permission.PermissionCheck.storePermissionCheck
import com.zxhy.fastfilemanagerpro.kokotools.permission.StorePermissionEx.requestStoreFollow import com.zxhy.fastfilemanagerpro.kokotools.permission.StorePermissionEx.requestStoreFollow
......
...@@ -12,7 +12,8 @@ import com.google.android.gms.ads.VideoOptions ...@@ -12,7 +12,8 @@ import com.google.android.gms.ads.VideoOptions
import com.google.android.gms.ads.nativead.NativeAd import com.google.android.gms.ads.nativead.NativeAd
import com.google.android.gms.ads.nativead.NativeAdOptions import com.google.android.gms.ads.nativead.NativeAdOptions
import com.google.android.gms.ads.nativead.NativeAdView import com.google.android.gms.ads.nativead.NativeAdView
import com.zxhy.fastfilemanagerpro.databinding.AdNativeAdvanceBinding import com.zxhy.fastfilemanagerpro.databinding.AdNativeAdvanceFastBinding
import com.zxhy.fastfilemanagerpro.databinding.AdNativeAdvanceSampleBinding
object AdNativeAdvanceEx { object AdNativeAdvanceEx {
...@@ -34,7 +35,8 @@ object AdNativeAdvanceEx { ...@@ -34,7 +35,8 @@ object AdNativeAdvanceEx {
flAd.removeAllViews() flAd.removeAllViews()
flAd.addView(bindAdNativeAdView(nativeAd, activity.layoutInflater)) // flAd.addView(bindAdNativeAdViewSample(nativeAd, activity.layoutInflater))
flAd.addView(bindFastNativeAd(nativeAd, activity.layoutInflater))
} }
//静音视频 //静音视频
...@@ -48,79 +50,154 @@ object AdNativeAdvanceEx { ...@@ -48,79 +50,154 @@ object AdNativeAdvanceEx {
} }
} }
fun bindAdNativeAdView(
/**
* 官方布局
*/
private fun bindAdNativeAdViewSample(
nativeAd: NativeAd, nativeAd: NativeAd,
layoutInflater: LayoutInflater layoutInflater: LayoutInflater
): NativeAdView { ): NativeAdView {
val adNativeAdvanceBinding = AdNativeAdvanceBinding.inflate(layoutInflater) val adNativeAdvanceBinding = AdNativeAdvanceSampleBinding.inflate(layoutInflater)
adNativeAdvanceBinding.apply {
val nativeAdView = root val nativeAdView = adNativeAdvanceBinding.root
nativeAdView.mediaView = adMedia nativeAdView.mediaView = adNativeAdvanceBinding.adMedia
nativeAdView.headlineView = adHeadline nativeAdView.headlineView = adNativeAdvanceBinding.adHeadline
nativeAdView.bodyView = adBody nativeAdView.bodyView = adNativeAdvanceBinding.adBody
nativeAdView.callToActionView = adCallToAction nativeAdView.callToActionView = adNativeAdvanceBinding.adCallToAction
nativeAdView.iconView = adAppIcon nativeAdView.iconView = adNativeAdvanceBinding.adAppIcon
nativeAdView.priceView = adPrice nativeAdView.priceView = adNativeAdvanceBinding.adPrice
nativeAdView.starRatingView = adStars nativeAdView.starRatingView = adNativeAdvanceBinding.adStars
nativeAdView.storeView = adStore nativeAdView.storeView = adNativeAdvanceBinding.adStore
nativeAdView.advertiserView = adAdvertiser nativeAdView.advertiserView = adNativeAdvanceBinding.adAdvertiser
adHeadline.text = nativeAd.headline adNativeAdvanceBinding.adHeadline.text = nativeAd.headline
nativeAd.mediaContent?.let { adMedia.mediaContent = it } nativeAd.mediaContent?.let { adNativeAdvanceBinding.adMedia.mediaContent = it }
if (nativeAd.body == null) { if (nativeAd.body == null) {
adBody.visibility = View.INVISIBLE adNativeAdvanceBinding.adBody.visibility = View.INVISIBLE
} else { } else {
adBody.visibility = View.VISIBLE adNativeAdvanceBinding.adBody.visibility = View.VISIBLE
adBody.text = nativeAd.body adNativeAdvanceBinding.adBody.text = nativeAd.body
} }
if (nativeAd.callToAction == null) { if (nativeAd.callToAction == null) {
adCallToAction.visibility = View.INVISIBLE adNativeAdvanceBinding.adCallToAction.visibility = View.INVISIBLE
} else { } else {
adCallToAction.visibility = View.VISIBLE adNativeAdvanceBinding.adCallToAction.visibility = View.VISIBLE
adCallToAction.text = nativeAd.callToAction adNativeAdvanceBinding.adCallToAction.text = nativeAd.callToAction
} }
if (nativeAd.icon == null) { if (nativeAd.icon == null) {
adAppIcon.visibility = View.GONE adNativeAdvanceBinding.adAppIcon.visibility = View.GONE
} else { } else {
adAppIcon.setImageDrawable(nativeAd.icon?.drawable) adNativeAdvanceBinding.adAppIcon.setImageDrawable(nativeAd.icon?.drawable)
adAppIcon.visibility = View.VISIBLE adNativeAdvanceBinding.adAppIcon.visibility = View.VISIBLE
} }
if (nativeAd.price == null) { if (nativeAd.price == null) {
adPrice.visibility = View.INVISIBLE adNativeAdvanceBinding.adPrice.visibility = View.INVISIBLE
} else { } else {
adPrice.visibility = View.VISIBLE adNativeAdvanceBinding.adPrice.visibility = View.VISIBLE
adPrice.text = nativeAd.price adNativeAdvanceBinding.adPrice.text = nativeAd.price
} }
if (nativeAd.store == null) { if (nativeAd.store == null) {
adStore.visibility = View.INVISIBLE adNativeAdvanceBinding.adStore.visibility = View.INVISIBLE
} else { } else {
adStore.visibility = View.VISIBLE adNativeAdvanceBinding.adStore.visibility = View.VISIBLE
adStore.text = nativeAd.store adNativeAdvanceBinding.adStore.text = nativeAd.store
} }
if (nativeAd.starRating == null) { if (nativeAd.starRating == null) {
adStars.visibility = View.INVISIBLE adNativeAdvanceBinding.adStars.visibility = View.INVISIBLE
} else { } else {
adStars.rating = nativeAd.starRating!!.toFloat() adNativeAdvanceBinding.adStars.rating = nativeAd.starRating!!.toFloat()
adStars.visibility = View.VISIBLE adNativeAdvanceBinding.adStars.visibility = View.VISIBLE
} }
if (nativeAd.advertiser == null) { if (nativeAd.advertiser == null) {
adAdvertiser.visibility = View.INVISIBLE adNativeAdvanceBinding.adAdvertiser.visibility = View.INVISIBLE
} else { } else {
adAdvertiser.text = nativeAd.advertiser adNativeAdvanceBinding.adAdvertiser.text = nativeAd.advertiser
adAdvertiser.visibility = View.VISIBLE adNativeAdvanceBinding.adAdvertiser.visibility = View.VISIBLE
} }
nativeAdView.setNativeAd(nativeAd) nativeAdView.setNativeAd(nativeAd)
val mediaContent = nativeAd.mediaContent
val vc = mediaContent?.videoController
if (vc != null && mediaContent.hasVideoContent()) {
vc.videoLifecycleCallbacks =
object : VideoController.VideoLifecycleCallbacks() {
override fun onVideoEnd() {
super.onVideoEnd()
}
}
}
return adNativeAdvanceBinding.root
}
fun bindFastNativeAd(
nativeAd: NativeAd,
layoutInflater: LayoutInflater
): NativeAdView {
val adNativeAdvanceBinding = AdNativeAdvanceFastBinding.inflate(layoutInflater)
val nativeAdView = adNativeAdvanceBinding.root
nativeAdView.mediaView = adNativeAdvanceBinding.adMedia
nativeAdView.headlineView = adNativeAdvanceBinding.adHeadline
nativeAdView.bodyView = adNativeAdvanceBinding.adBody
nativeAdView.callToActionView = adNativeAdvanceBinding.adCallToAction
nativeAdView.iconView = adNativeAdvanceBinding.adAppIcon
nativeAdView.starRatingView = adNativeAdvanceBinding.adStars
nativeAdView.advertiserView = adNativeAdvanceBinding.adAdvertiser
adNativeAdvanceBinding.adHeadline.text = nativeAd.headline
nativeAd.mediaContent?.let { adNativeAdvanceBinding.adMedia.mediaContent = it }
if (nativeAd.body == null) {
adNativeAdvanceBinding.adBody.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adBody.visibility = View.VISIBLE
adNativeAdvanceBinding.adBody.text = nativeAd.body
}
if (nativeAd.callToAction == null) {
adNativeAdvanceBinding.adCallToAction.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adCallToAction.visibility = View.VISIBLE
adNativeAdvanceBinding.adCallToAction.text = nativeAd.callToAction
}
if (nativeAd.icon == null) {
adNativeAdvanceBinding.adAppIcon.visibility = View.GONE
} else {
adNativeAdvanceBinding.adAppIcon.setImageDrawable(nativeAd.icon?.drawable)
adNativeAdvanceBinding.adAppIcon.visibility = View.VISIBLE
}
if (nativeAd.starRating == null) {
adNativeAdvanceBinding.adStars.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adStars.rating = nativeAd.starRating!!.toFloat()
adNativeAdvanceBinding.adStars.visibility = View.VISIBLE
} }
if (nativeAd.advertiser == null) {
adNativeAdvanceBinding.adAdvertiser.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adAdvertiser.text = nativeAd.advertiser
adNativeAdvanceBinding.adAdvertiser.visibility = View.VISIBLE
}
nativeAdView.setNativeAd(nativeAd)
val mediaContent = nativeAd.mediaContent val mediaContent = nativeAd.mediaContent
val vc = mediaContent?.videoController val vc = mediaContent?.videoController
......
...@@ -79,10 +79,10 @@ class KoHomekoFragment : Fragment() { ...@@ -79,10 +79,10 @@ class KoHomekoFragment : Fragment() {
binding.flStorage.setOnClickListener { binding.flStorage.setOnClickListener {
startActivity(Intent(context, KoInternalkoActivity::class.java)) startActivity(Intent(context, KoInternalkoActivity::class.java))
} }
// refreshAd(requireActivity(), binding.flAd, ADMOB_AD_UNIT_ID) { refreshAd(requireActivity(), binding.flAd, ADMOB_AD_UNIT_ID) {
// currentNativeAd?.destroy() currentNativeAd?.destroy()
// currentNativeAd = it currentNativeAd = it
// } }
} }
override fun onStop() { override fun onStop() {
......
...@@ -99,14 +99,14 @@ class KoManagerkoFragment : Fragment() { ...@@ -99,14 +99,14 @@ class KoManagerkoFragment : Fragment() {
} }
} }
// AdNativeAdvanceEx.refreshAd( AdNativeAdvanceEx.refreshAd(
// requireActivity(), requireActivity(),
// binding.flAd, binding.flAd,
// MainActivity.ADMOB_AD_UNIT_ID MainActivity.ADMOB_AD_UNIT_ID
// ) { ) {
// currentNativeAd?.destroy() currentNativeAd?.destroy()
// currentNativeAd = it currentNativeAd = it
// } }
} }
override fun onResume() { override fun onResume() {
......
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.gms.ads.nativead.NativeAdView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#FFFFFF"
android:minHeight="50dp"
android:orientation="vertical">
<com.google.android.gms.ads.nativead.MediaView
android:id="@+id/ad_media"
android:layout_width="match_parent"
android:layout_height="96dp"
android:layout_gravity="center_horizontal"
android:layout_margin="2dp"
android:maxHeight="150dp"
android:minHeight="100dp" />
<TextView
android:id="@+id/ad_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:layout_marginEnd="20dp"
android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_margin="2dp"
android:background="@color/black"
android:text="Ad"
android:textColor="#FFFFFF"
android:textSize="12sp"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/ad_app_icon"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center_vertical"
android:adjustViewBounds="true"
android:paddingEnd="5dp"
android:paddingBottom="5dp"
android:scaleType="centerCrop"
tools:ignore="ContentDescription,RtlSymmetry" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="5dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/ad_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#0000FF"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/ad_advertiser"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="bottom"
android:textSize="14sp"
android:textStyle="bold" />
<RatingBar
android:id="@+id/ad_stars"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.5" />
</LinearLayout>
</LinearLayout>
<Button
android:id="@+id/ad_call_to_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="5dp"
android:gravity="center"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</com.google.android.gms.ads.nativead.NativeAdView>
\ No newline at end of file
...@@ -66,7 +66,6 @@ ...@@ -66,7 +66,6 @@
</LinearLayout> </LinearLayout>
<!-- body内容 -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
...@@ -386,6 +386,7 @@ ...@@ -386,6 +386,7 @@
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
android:maxHeight="200dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
......
...@@ -272,9 +272,10 @@ ...@@ -272,9 +272,10 @@
<FrameLayout <FrameLayout
android:id="@+id/fl_ad" android:id="@+id/fl_ad"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="140dp" android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp" android:layout_marginHorizontal="20dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:maxHeight="200dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_documents" app:layout_constraintTop_toBottomOf="@id/ll_documents"
......
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