Mopub Native Ads In List View Android studio
facebook bidding with mopub
hello guys in this blog i will show you how to implement mopub native ads in List view and add facebook native ads render for show facebook native ads show.
1. build.gradle
multiDexEnabled true
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.mopub.mediation:facebookaudiencenetwork:6.5.1.0'
implementation 'com.facebook.android:audience-network-sdk:6.5.1'
implementation('com.mopub:mopub-sdk:+@aar') {
transitive = true
}android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}}
2. Main Activity for sdkInitialization
AudienceNetworkAds.initialize(this);
final SdkConfiguration.Builder Sdkonfiguration = new SdkConfiguration.Builder("");
MoPub.initializeSdk(this,Sdkonfiguration.build(),initSdkListner());
}
private SdkInitializationListener initSdkListner() {
return new SdkInitializationListener(){
@Override
public void onInitializationFinished() {
}
};
}
3.androidmanifest.xml
android:networkSecurityConfig="@xml/network_security_config"
<activity
android:name="com.mopub.common.MoPubBrowser"
android:configChanges="keyboardHidden|orientation|screenSize" />
4. network_security_config
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
5.mopubnativ.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:background="@color/white"
android:layout_margin="9dp"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mopub_native_ad_layout">
<ImageView
android:id="@+id/mopub_native_ad_privacy"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginTop="-5dp"
android:layout_marginEnd="-5dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:contentDescription="Privacy Information Icon image"
android:padding="10dp"
android:layout_marginRight="-5dp"
android:layout_alignParentRight="true"
app:tint="@android:color/black" />
<ImageView
android:id="@+id/mopub_native_ad_icon"
android:background="@null"
android:scaleType="centerInside"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:layout_alignParentStart="true"
android:layout_marginLeft="10dp"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/mopub_ad_sponsored_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:layout_marginStart="10dp"
android:layout_below="@id/mopub_native_ad_icon"
android:textColor="@android:color/darker_gray"
android:textSize="12sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/mopub_native_ad_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/mopub_native_ad_icon"
android:layout_marginStart="10dp"
android:layout_toStartOf="@id/mopub_native_ad_privacy"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="16sp"
android:text="Lorem ipsum dolor sit amet, consectetur"
android:layout_marginEnd="10dp"
android:layout_alignTop="@id/mopub_native_ad_icon"/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/mopub_native_ad_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/mopub_native_ad_title"
android:layout_marginStart="12dp"
android:layout_marginTop="3dp"
android:layout_marginEnd="3dp"
android:layout_marginBottom="2dp"
android:layout_toStartOf="@+id/mopub_native_ad_privacy"
android:layout_toEndOf="@id/mopub_native_ad_icon"
android:lines="2"
android:text=""
android:textColor="@android:color/black"
android:textSize="14sp"
android:layout_marginLeft="12dp"
android:layout_marginRight="3dp"/>
<ImageView
android:id="@+id/mopub_native_ad_main_imageview"
android:layout_below="@id/mopub_native_ad_text"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="@dimen/native_main_image_height" />
<Button
android:id="@+id/mopub_native_ad_cta"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_height="@dimen/button_height"
android:layout_marginLeft="10dp"
android:layout_below="@id/mopub_native_ad_main_imageview"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:textAllCaps="false"
android:focusable="true"
android:text="Free to play"
android:textSize="@dimen/button_text_size"
android:minWidth="0dp"
android:minHeight="0dp"
android:backgroundTint="#4286F4"
android:textColor="@android:color/white"
android:textStyle="bold" />
</RelativeLayout>
6. facebooknative.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ad_unit"
android:layout_margin="9dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingTop="10dp">
<com.facebook.ads.MediaView
android:id="@+id/native_ad_icon"
android:layout_width="35dp"
android:layout_height="35dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<TextView
android:id="@+id/native_ad_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="@android:color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/native_ad_sponsored_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="@android:color/darker_gray"
android:textSize="12sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/ad_choices_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:orientation="horizontal" />
</LinearLayout>
<com.facebook.ads.MediaView
android:id="@+id/native_ad_media"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3"
android:orientation="vertical">
<TextView
android:id="@+id/native_ad_social_context"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:textColor="@android:color/darker_gray"
android:textSize="12sp" />
<TextView
android:id="@+id/native_ad_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="center_vertical"
android:lines="2"
android:textColor="@android:color/black"
android:textSize="12sp" />
</LinearLayout>
<Button
android:id="@+id/native_ad_call_to_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:backgroundTint="#4286F4"
android:paddingLeft="3dp"
android:layout_marginBottom="1dp"
android:paddingRight="3dp"
android:textColor="@android:color/white"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>7.dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="sample_text_size">16sp</dimen>
<dimen name="small_text_size">13sp</dimen>
<dimen name="button_text_size">13sp</dimen>
<dimen name="native_main_image_height">200dp</dimen>
<dimen name="banner_width">320dp</dimen>
<dimen name="banner_height">50dp</dimen>
<dimen name="medium_rectangle_width">300dp</dimen>
<dimen name="medium_rectangle_height">250dp</dimen>
<!-- Navigation dimensions -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="nav_header_vertical_spacing">8dp</dimen>
<dimen name="nav_header_height">172dp</dimen>
<dimen name="button_height">36dp</dimen>
<dimen name="mopub_logo_width">168dp</dimen>
<dimen name="mopub_logo_height">50dp</dimen>
<dimen name="margin_large">16dp</dimen>
<dimen name="padding_large">16dp</dimen>
</resources>8. List Viewe Layout<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:divider="@android:drawable/button_onoff_indicator_on"
android:dividerHeight="2dp" />9. row1
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp"
>
<RelativeLayout
android:background="@color/purple_200"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:padding="10dp"
android:layout_marginStart="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Main Title"
android:textColor="#000000"
android:textSize="20sp"
android:maxLines="1"
android:textStyle="bold"
android:id="@+id/textView1"
android:layout_marginEnd="35dp"
/>
<ImageView
android:id="@+id/arrow"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
/>
</RelativeLayout>
</LinearLayout>10. Listview Activity
MainActivity.MyAdapter adapter = new MainActivity.MyAdapter(this, number);
ListView.setAdapter(adapter);
MoPubAdAdapter moPubAdAdapter = new MoPubAdAdapter(this,adapter);
MoPubStaticNativeAdRenderer moPubStaticNativeAdRenderer = new MoPubStaticNativeAdRenderer(
new ViewBinder.Builder(R.layout.native_ad_layout_mopub)
.titleId(R.id.mopub_native_ad_title)
.textId(R.id.mopub_native_ad_text)
.mainImageId(R.id.mopub_native_ad_main_imageview)
.iconImageId(R.id.mopub_native_ad_icon)
.callToActionId(R.id.mopub_native_ad_cta)
.privacyInformationIconImageId(R.id.mopub_native_ad_privacy)
.sponsoredTextId(R.id.mopub_ad_sponsored_label)
.build());
moPubAdAdapter.registerAdRenderer(moPubStaticNativeAdRenderer);
moPubAdAdapter.loadAds("11a17b188668469fb0412708c3d16813");///replace your mopub real ads unit
///and dont forget to add facebook native ads id on mopub advance bidding
///real ads show after publuish app
///facebook ads render
FacebookAdRenderer facebookAdRenderer = new FacebookAdRenderer(
new FacebookAdRenderer.FacebookViewBinder.Builder(R.layout.facebooknative)
.titleId(R.id.native_ad_title)
.textId(R.id.native_ad_body)
.mediaViewId(R.id.native_ad_media)
.adIconViewId(R.id.native_ad_icon)
.adChoicesRelativeLayoutId(R.id.ad_choices_container)
.advertiserNameId(R.id.native_ad_sponsored_label)
.callToActionId(R.id.native_ad_call_to_action)
.build());
moPubAdAdapter.registerAdRenderer(facebookAdRenderer);
ListView.setAdapter(moPubAdAdapter);
//////MoPubNativeAdPositioning.MoPubClientPositioning adPositioning = MoPubNativeAdPositioning.clientPositioning();
/// adPositioning.addFixedPosition(1);
///adPositioning.addFixedPosition(7);
/// adPositioning.addFixedPosition(11);
///you can set position from mopub and unit Ad positions setting
ListView.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick (AdapterView<?> parent , View view , int position , long id) {
view.setBackgroundColor(getResources().getColor(R.color.design_default_color_surface));
///// your on click listner
}
}) ;
}
private SdkInitializationListener initSdkListner() {
return new SdkInitializationListener() {
@Override
public void onInitializationFinished() {
Toast.makeText(MainActivity.this, "SdkInitialization", Toast.LENGTH_SHORT).show();
}
};
}
class MyAdapter extends ArrayAdapter<String> {
Context context;
String rTitle[];
MyAdapter (Context c, String title[]) {
super(c, R.layout.row1, R.id.textView1, title);
this.context = c;
this.rTitle = title;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = layoutInflater.inflate(R.layout.row1, parent, false);
TextView myTitle = row.findViewById(R.id.textView1);
myTitle.setText(rTitle[position]);
return row;
}
}
}
0 Comments