Commit ba77eeca authored by wanglei's avatar wanglei

高级原生广告修改布局

parent ac331bbc
......@@ -69,7 +69,7 @@ class KokoLaunchActivity : AppCompatActivity() {
finish()
}
// setDebugAdsConsent {}
setDebugAdsConsent {}
}
/**
......@@ -104,14 +104,4 @@ class KokoLaunchActivity : AppCompatActivity() {
(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
import com.google.android.gms.ads.nativead.NativeAdOptions
import com.google.android.material.navigation.NavigationBarView
import com.zxhy.fastfilemanagerpro.databinding.ActivityMainBinding
import com.zxhy.fastfilemanagerpro.databinding.AdNativeAdvanceBinding
import com.zxhy.fastfilemanagerpro.kokotools.ActivityLauncher
import com.zxhy.fastfilemanagerpro.kokotools.permission.PermissionCheck.storePermissionCheck
import com.zxhy.fastfilemanagerpro.kokotools.permission.StorePermissionEx.requestStoreFollow
......
......@@ -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.NativeAdOptions
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 {
......@@ -34,7 +35,8 @@ object AdNativeAdvanceEx {
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 {
}
}
fun bindAdNativeAdView(
/**
* 官方布局
*/
private fun bindAdNativeAdViewSample(
nativeAd: NativeAd,
layoutInflater: LayoutInflater
): NativeAdView {
val adNativeAdvanceBinding = AdNativeAdvanceBinding.inflate(layoutInflater)
adNativeAdvanceBinding.apply {
val nativeAdView = root
nativeAdView.mediaView = adMedia
nativeAdView.headlineView = adHeadline
nativeAdView.bodyView = adBody
nativeAdView.callToActionView = adCallToAction
nativeAdView.iconView = adAppIcon
nativeAdView.priceView = adPrice
nativeAdView.starRatingView = adStars
nativeAdView.storeView = adStore
nativeAdView.advertiserView = adAdvertiser
adHeadline.text = nativeAd.headline
nativeAd.mediaContent?.let { adMedia.mediaContent = it }
if (nativeAd.body == null) {
adBody.visibility = View.INVISIBLE
} else {
adBody.visibility = View.VISIBLE
adBody.text = nativeAd.body
}
val adNativeAdvanceBinding = AdNativeAdvanceSampleBinding.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.priceView = adNativeAdvanceBinding.adPrice
nativeAdView.starRatingView = adNativeAdvanceBinding.adStars
nativeAdView.storeView = adNativeAdvanceBinding.adStore
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) {
adCallToAction.visibility = View.INVISIBLE
} else {
adCallToAction.visibility = View.VISIBLE
adCallToAction.text = nativeAd.callToAction
}
if (nativeAd.callToAction == null) {
adNativeAdvanceBinding.adCallToAction.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adCallToAction.visibility = View.VISIBLE
adNativeAdvanceBinding.adCallToAction.text = nativeAd.callToAction
}
if (nativeAd.icon == null) {
adAppIcon.visibility = View.GONE
} else {
adAppIcon.setImageDrawable(nativeAd.icon?.drawable)
adAppIcon.visibility = View.VISIBLE
}
if (nativeAd.icon == null) {
adNativeAdvanceBinding.adAppIcon.visibility = View.GONE
} else {
adNativeAdvanceBinding.adAppIcon.setImageDrawable(nativeAd.icon?.drawable)
adNativeAdvanceBinding.adAppIcon.visibility = View.VISIBLE
}
if (nativeAd.price == null) {
adPrice.visibility = View.INVISIBLE
} else {
adPrice.visibility = View.VISIBLE
adPrice.text = nativeAd.price
}
if (nativeAd.price == null) {
adNativeAdvanceBinding.adPrice.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adPrice.visibility = View.VISIBLE
adNativeAdvanceBinding.adPrice.text = nativeAd.price
}
if (nativeAd.store == null) {
adStore.visibility = View.INVISIBLE
} else {
adStore.visibility = View.VISIBLE
adStore.text = nativeAd.store
}
if (nativeAd.store == null) {
adNativeAdvanceBinding.adStore.visibility = View.INVISIBLE
} else {
adNativeAdvanceBinding.adStore.visibility = View.VISIBLE
adNativeAdvanceBinding.adStore.text = nativeAd.store
}
if (nativeAd.starRating == null) {
adStars.visibility = View.INVISIBLE
} else {
adStars.rating = nativeAd.starRating!!.toFloat()
adStars.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) {
adAdvertiser.visibility = View.INVISIBLE
} else {
adAdvertiser.text = nativeAd.advertiser
adAdvertiser.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 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
}
nativeAdView.setNativeAd(nativeAd)
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 vc = mediaContent?.videoController
......
......@@ -79,10 +79,10 @@ class KoHomekoFragment : Fragment() {
binding.flStorage.setOnClickListener {
startActivity(Intent(context, KoInternalkoActivity::class.java))
}
// refreshAd(requireActivity(), binding.flAd, ADMOB_AD_UNIT_ID) {
// currentNativeAd?.destroy()
// currentNativeAd = it
// }
refreshAd(requireActivity(), binding.flAd, ADMOB_AD_UNIT_ID) {
currentNativeAd?.destroy()
currentNativeAd = it
}
}
override fun onStop() {
......
......@@ -99,14 +99,14 @@ class KoManagerkoFragment : Fragment() {
}
}
// AdNativeAdvanceEx.refreshAd(
// requireActivity(),
// binding.flAd,
// MainActivity.ADMOB_AD_UNIT_ID
// ) {
// currentNativeAd?.destroy()
// currentNativeAd = it
// }
AdNativeAdvanceEx.refreshAd(
requireActivity(),
binding.flAd,
MainActivity.ADMOB_AD_UNIT_ID
) {
currentNativeAd?.destroy()
currentNativeAd = it
}
}
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 @@
</LinearLayout>
<!-- body内容 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -386,6 +386,7 @@
android:layout_marginHorizontal="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="8dp"
android:maxHeight="200dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
......
......@@ -272,9 +272,10 @@
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="0dp"
android:layout_height="140dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
android:layout_marginTop="20dp"
android:maxHeight="200dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
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