{"_id":"5927ddff78a6413b0042b597","__v":0,"version":{"_id":"574ff4bd3fa1870e00889ba9","project":"574ff4bd3fa1870e00889ba6","__v":21,"createdAt":"2016-06-02T08:56:29.492Z","releaseDate":"2016-06-02T08:56:29.492Z","categories":["574ff4bd3fa1870e00889baa","577278ecdceb570e003a9001","577279865617b117009e643f","577279985617b117009e6440","577279bc8c48e00e00503504","5774fe18605b770e0037be8a","577ce3ad87acf617003c4187","577f8476a77c700e006a6c52","57b486ae0d2b640e00e9d3f5","57b722133d3e620e004ec74b","57bd95f00fe3a00e003e2cc5","57c8349359cd4b0e00b888ef","57c8349b5754fa1700b12242","57cedb0bad483e0e00890239","57cedbe807d7ea0e00e438cc","57d82967156ef72b007ffcd8","58ee353ad1ee2f0f0034a13d","596623221738df00298622a5","59a51730192dba000fc9ca38","59a8129f1e7b26000fa0fb1a","5a0322bf044b6f001c236e36"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"3.0.0","version":"3.0"},"project":"574ff4bd3fa1870e00889ba6","category":{"_id":"57b486ae0d2b640e00e9d3f5","__v":0,"project":"574ff4bd3fa1870e00889ba6","version":"574ff4bd3fa1870e00889ba9","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-08-17T15:45:50.062Z","from_sync":false,"order":7,"slug":"native-ads-mediation-layer","title":"Android SDK"},"parentDoc":null,"user":"5770dd042659e20e00c90a98","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-05-26T07:49:19.648Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":false,"order":9,"body":"The medium layout ad is a mediation of standard units that can be configured from the PubNative dashboard. The medium layout ad view contains a predefined set of components such as, icon, banner, title, description, CTA and disclosure view. You can choose the specific ad type from the PubNative dashboard (i.e. banner only, description-banner-icon or title-icon-description etc.).\n\nThe predefined size for the medium layout ad view is 300 x 250.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/54ed09b-medium.png\",\n        \"medium.png\",\n        153,\n        327,\n        \"#760c7d\"\n      ],\n      \"caption\": \"Medium Layout Example\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"title\": \"Getting Started\"\n}\n[/block]\n* Before integrating medium ad layouts in to your app, you’ll need to go through the steps in our [Getting Started Guide](https://github.com/pubnative/pubnative-android-mediation-sdk-private), create an account on the PubNative Dashboard, and integrate the SDK into your project.\n* Add a medium layout ad unit to your app in the PubNative Dashboard\n* Make sure you have added the ad network SDKs you wish to use to your app\n[block:api-header]\n{\n  \"title\": \"Integration\"\n}\n[/block]\n##1. Create Layout\nYou can create a predefined medium layout ad request using PNMediumLayout\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PNMediumLayout layout = new PNMediumLayout();\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n##2. Integrate Lifecycle Callbacks\nYou can track the load process, user interaction and ad behavior with callbacks using setLoadListener(<YOUR_LISTENER>) method. You need to set listener as\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"layout.setLoadListener(new PNMediumLayout.LoadListener() {\\n\\n    :::at:::Override\\n    public void onPNLayoutLoadFinish(PNLayout layout) {\\n       // layout returned\\n\\n    }\\n\\n    @Override\\n    public void onPNLayoutLoadFail(PNLayout layout, Exception exception) {\\n       // ad request failed\\n    }\\n});\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n##3. Load Ad\nTo load a medium layout advertisement\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"layout.load(<CONTEXT>, \\\"<YOUR_APP_TOKEN_HERE>\\\", \\\"<YOUR_PLACEMENT_NAME_HERE>\\\");\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\nOnce an ad is loaded, You will get a fully created view that can be placed in any ViewGroup.\n\n##4. Use the ad\nOnce the load callback is over, this layout returns as a result an initialised view that can be used inside your own ad container. Impressions and clicks are tracked directly from the SDK, but you need to call startTracking method so the layout starts listening for clicks and checking the ad in the screen. You can extract the view using getView(Context) method.\n\nAny interaction with this methods without a previously loaded layout will do nothing.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PNMediumLayoutView layoutView = layout.getView(<CONTEXT>);\\n// Inject the view into your viewContainer\\nlayout.startTrackingView();\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\nIt is highly recommended that if you have a scrolling view and you want to stop tracking the ad view (which is recommended when the ad disappears from the screen), you can use the stopTrackingView() method\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"layout.stopTrackingView();\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n##5. Configure your ad view\n\nAdditionally, you can change the look and feel of some items of the ad using the PNMediumLayoutView object returned from the getView(Context) method, this are some methods that you can use for that:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"layout.setTitleTextColor(int color) \\nlayout.setTitleTextSize(float size)\\nlayout.setTitleTextFont(Typeface font)\\nlayout.setDescriptionTextColor(int color) \\nlayout.setDescriptionTextSize(float size)\\nlayout.setDescriptionTextFont(Typeface font)\\nlayout.setIconPosition(IconPosition position)\\nlayout.setCallToActionBackgroundColor(int color)\\nlayout.setCallToActionTextColor(int color)\\nlayout.setCallToActionTextSize(float size)\\nlayout.setCallToActionTextFont(Typeface font)\\nlayout.setAdBackgroundColor(int color)\\nlayout.setContainerBackgroundColor(int color)\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"medium-ad-layouts","type":"basic","title":"Medium Ad Layout"}
The medium layout ad is a mediation of standard units that can be configured from the PubNative dashboard. The medium layout ad view contains a predefined set of components such as, icon, banner, title, description, CTA and disclosure view. You can choose the specific ad type from the PubNative dashboard (i.e. banner only, description-banner-icon or title-icon-description etc.). The predefined size for the medium layout ad view is 300 x 250. [block:image] { "images": [ { "image": [ "https://files.readme.io/54ed09b-medium.png", "medium.png", 153, 327, "#760c7d" ], "caption": "Medium Layout Example" } ] } [/block] [block:api-header] { "title": "Getting Started" } [/block] * Before integrating medium ad layouts in to your app, you’ll need to go through the steps in our [Getting Started Guide](https://github.com/pubnative/pubnative-android-mediation-sdk-private), create an account on the PubNative Dashboard, and integrate the SDK into your project. * Add a medium layout ad unit to your app in the PubNative Dashboard * Make sure you have added the ad network SDKs you wish to use to your app [block:api-header] { "title": "Integration" } [/block] ##1. Create Layout You can create a predefined medium layout ad request using PNMediumLayout [block:code] { "codes": [ { "code": "PNMediumLayout layout = new PNMediumLayout();", "language": "java" } ] } [/block] ##2. Integrate Lifecycle Callbacks You can track the load process, user interaction and ad behavior with callbacks using setLoadListener(<YOUR_LISTENER>) method. You need to set listener as [block:code] { "codes": [ { "code": "layout.setLoadListener(new PNMediumLayout.LoadListener() {\n\n @Override\n public void onPNLayoutLoadFinish(PNLayout layout) {\n // layout returned\n\n }\n\n @Override\n public void onPNLayoutLoadFail(PNLayout layout, Exception exception) {\n // ad request failed\n }\n});", "language": "java" } ] } [/block] ##3. Load Ad To load a medium layout advertisement [block:code] { "codes": [ { "code": "layout.load(<CONTEXT>, \"<YOUR_APP_TOKEN_HERE>\", \"<YOUR_PLACEMENT_NAME_HERE>\");", "language": "java" } ] } [/block] Once an ad is loaded, You will get a fully created view that can be placed in any ViewGroup. ##4. Use the ad Once the load callback is over, this layout returns as a result an initialised view that can be used inside your own ad container. Impressions and clicks are tracked directly from the SDK, but you need to call startTracking method so the layout starts listening for clicks and checking the ad in the screen. You can extract the view using getView(Context) method. Any interaction with this methods without a previously loaded layout will do nothing. [block:code] { "codes": [ { "code": "PNMediumLayoutView layoutView = layout.getView(<CONTEXT>);\n// Inject the view into your viewContainer\nlayout.startTrackingView();", "language": "java" } ] } [/block] It is highly recommended that if you have a scrolling view and you want to stop tracking the ad view (which is recommended when the ad disappears from the screen), you can use the stopTrackingView() method [block:code] { "codes": [ { "code": "layout.stopTrackingView();", "language": "java" } ] } [/block] ##5. Configure your ad view Additionally, you can change the look and feel of some items of the ad using the PNMediumLayoutView object returned from the getView(Context) method, this are some methods that you can use for that: [block:code] { "codes": [ { "code": "layout.setTitleTextColor(int color) \nlayout.setTitleTextSize(float size)\nlayout.setTitleTextFont(Typeface font)\nlayout.setDescriptionTextColor(int color) \nlayout.setDescriptionTextSize(float size)\nlayout.setDescriptionTextFont(Typeface font)\nlayout.setIconPosition(IconPosition position)\nlayout.setCallToActionBackgroundColor(int color)\nlayout.setCallToActionTextColor(int color)\nlayout.setCallToActionTextSize(float size)\nlayout.setCallToActionTextFont(Typeface font)\nlayout.setAdBackgroundColor(int color)\nlayout.setContainerBackgroundColor(int color)", "language": "java" } ] } [/block]