package Ġcom . if m vo . together ad . demo . native _ Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġcom . by ted ance . sdk . open ad sdk . Ad Slot Ċ import Ġcom . if m vo . together ad . core . helper . Ad Helper Native Pro Ċ import Ġcom . if m vo . together ad . core . listener . Native Listener Ċ import Ġcom . if m vo . together ad . cs j . provider . Cs j Provider Ċ import Ġcom . if m vo . together ad . demo . R Ċ import Ġcom . if m vo . together ad . demo . app . Ad Provider Type Ċ import Ġcom . if m vo . together ad . demo . app . To gether Ad Alias Ċ import Ġcom . if m vo . together ad . demo . other . Content Data Entity Ċ import Ġkotlinx . android . synt hetic . main . activity _ native _ recyclerview . re cyclerView Ċ Ċ /** Ċ Ġ* Ġ åİŁ çĶŁ èĩª æ¸²æŁĵ åľ¨ ĠRecyclerView Ġä¸ŃçļĦ çĶ¨ æ³ķ Ċ Ġ* Ċ Ġ* ĠCreated Ġby ĠMat thew ĠChen Ġon Ġ 2 0 2 0 - 0 4 - 2 0 . Ċ Ġ*/ Ċ class ĠNative RecyclerView Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġ// ä½¿çĶ¨ ĠMap < String , ĠInt > Ġéħįç½® å¹¿åĳĬ åķĨ Ġ æĿĥ éĩį ï¼Į éĢļ ä¿ Ĺ çļĦ è®² å°±æĺ¯ Ġ éļıæľº è¯·æ±Ĥ çļĦ æ¦Ĥ çİĩ åįł æ¯Ķ ĊĠ Ġprivate Ġval Ġratio Map Native Recycler Ġ= Ġmap Of ( ĊĠĠĠ ĠAd Provider Type . G DT . type Ġto Ġ 1 , ĊĠĠĠ ĠAd Provider Type . CS J . type Ġto Ġ 1 , ĊĠĠĠ ĠAd Provider Type . BA ID U . type Ġto Ġ 1 ĊĠ Ġ) ĊĊĠ Ġprivate Ġval Ġad Helper Native Rv Ġby Ġlazy Ġ{ ĊĠĠĠ ĠAd Helper Native Pro ( this , ĠTo gether Ad Alias . AD _ NATIVE _ REC Y CL ER VIEW , Ġ/* ratio Map Native Recycler , */ Ġ 3 ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġaction ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠ Ġcontext . startActivity ( Intent ( context , ĠNative RecyclerView Activity :: class . java )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ native _ recyclerview ) ĊĊĠĠĠ Ġrequest Rv Ad Ġ{ ĊĠĠĠĠĠ Ġ// ä½¿çĶ¨ ĠRecyclerView Ġ å±ķç¤º åĲĪå¹¶ åĲİ çļĦæķ°æį® ĊĠĠĠĠĠ Ġval Ġall List Ġ= Ġmerge Content Ad ( getContent Data (), Ġit ) ĊĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠNative Adapter ( all List ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġè¯·æ±Ĥ å¹¿åĳĬ List ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġrequest Rv Ad ( on Result : Ġ( ad List : ĠList < Any >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------ ĊĠĠĠ Ġ// Ġ Ġï¼Ī Ġ å¿ħé¡» è®¾ç½® Ġ ï¼ī å¦Ĥæŀľ éľĢè¦ģ ä½¿çĶ¨ ç© ¿ å±± çĶ ² çļĦ åİŁ çĶŁ å¹¿åĳĬ ï¼Į å¿ħé¡» åľ¨ è¯·æ±Ĥ ä¹ĭåīį è®¾ç½® ç±»åŀĭ ãĢĤ ï¼Ī Ġæ ² ¡ çĶ¨ åĪ° ç© ¿ å±± çĶ ² çļĦ è¯· å¿½ çķ¥ Ġ ï¼ī ĊĠĠĠ Ġ// Ġ Ġè®¾ç½® æĸ¹å¼ı ï¼ļ Cs j Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ XXX ï¼Ī ç±»åŀĭ åĴĮ ä½łçļĦ å¹¿åĳĬ ä½į ID ä¸Ģèĩ´ ï¼īãĢĤ ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ FEED ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ INTER ACTION _ AD ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ BAN NER ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ C ACHED _ SPL ASH ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ DRAW _ FEED ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ FULL _ SCREEN _ VIDEO ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ RE WARD _ VIDEO ĊĠĠĠ Ġ// Ġ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ SPL ASH ĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------ ĊĠĠĠ ĠC sj Provider . Native . native Ad Type Ġ= ĠAd Slot . TYPE _ FEED ĊĊĠĠĠ Ġ// è®¾ç½® Ġ ç© ¿ å±± çĶ ² Ġ åĽ¾çīĩ åı¯ æİ¥åıĹ çļĦ å° º å¯ ¸ Ġ( Ġ å»ºè®® è®¾ç½® ï¼Į é»ĺè®¤ æĺ¯ Ġ 1 0 8 0 ï¼Į 6 0 7 . 5 Ġ) ĊĠĠĠ Ġ// Cs j Provider . Native . setImage Accepted Size ( Screen Util . getDisplay Metrics Width ( this ), ĠScreen Util . getDisplay Metrics Width ( this ) Ġ* Ġ 9 Ġ/ Ġ 1 6 ) ĊĊĠĠĠ Ġ// æĮĩå®ļ æĻ® éĵ¾ å¹¿åĳĬ çĤ¹åĩ» åĲİ çĶ¨äºİ å±ķç¤º èĲ½ åľ° é¡µ çļĦ æµıè§ĪåĻ¨ ç±»åŀĭ ï¼Į åı¯ éĢīé¡¹ åĮħæĭ¬ ï¼ļ Inner Browser ï¼Ī APP Ġ åĨħ ç½® æµıè§ĪåĻ¨ ï¼īï¼Į Sys ï¼Ī ç³»ç»Ł æµıè§ĪåĻ¨ ï¼īï¼Į Default ï¼Ī é»ĺè®¤ ï¼Į SDK Ġ æĮīçħ§ é»ĺè®¤ éĢ»è¾ĳ éĢīæĭ© ) ĊĠĠĠ Ġ// Ġ( Ġ éĿŀ å¿ħé¡» è®¾ç½® ï¼Į é»ĺè®¤ æĺ¯ ï¼ļ Browser Type . Default Ġ) ĊĠĠĠ Ġ// G dt Provider . Native . browser Type Ġ= ĠBrowser Type . Default ĊĊĠĠĠ Ġ// æĮĩå®ļ çĤ¹åĩ» ĠAPP Ġ å¹¿åĳĬ åĲİ æĺ¯åĲ¦ å±ķç¤º äºĮ æ¬¡ ç¡®è®¤ ï¼Į åı¯ éĢīé¡¹ åĮħæĭ¬ ĠDefault ï¼Ī wifi Ġä¸į å±ķç¤º ï¼Į éĿŀ Ġwifi Ġ å±ķç¤º ï¼īï¼Į No Confirm ï¼Ī æīĢæľī æĥħåĨµ ä¸į å±ķç¤º ï¼ī ĊĠĠĠ Ġ// Ġ( Ġ éĿŀ å¿ħé¡» è®¾ç½® ï¼Į é»ĺè®¤ æĺ¯ ï¼ļ Down APP Confirm Policy . Default Ġ) ĊĠĠĠ Ġ// G dt Provider . Native . down APP Confirm Policy Ġ= ĠDown APP Confirm Policy . Default ĊĊĠĠĠ Ġ// è®¾ç½® è¿ĶåĽŀ è§Ĩé¢ĳ å¹¿åĳĬ çļĦ æľĢå¤§ è§Ĩé¢ĳ æĹ¶ éķ¿ ï¼Ī éĹŃ åĮº éĹ´ ï¼Į åı¯ åįķ çĭ¬ è®¾ç½® ï¼īï¼Į åįķä½į : ç§Ĵ ï¼Į åĲĪ æ³ķ è¾ĵåħ¥ ä¸º ï¼ļ 5 <= max Video Duration <= 6 0 . ĠæŃ¤ è®¾ç½® ä¼ļ å½±åĵį å¹¿åĳĬ å¡« åħħ ï¼Į è¯· è° ¨ æħ İ è®¾ç½® ĊĠĠĠ Ġ// Ġ( Ġ éĿŀ å¿ħé¡» è®¾ç½® ï¼Į é»ĺè®¤ æĺ¯ ï¼ļ 6 0 Ġ) ĊĠĠĠ Ġ// G dt Provider . Native . max Video Duration Ġ= Ġ 6 0 ĊĊĠĠĠ Ġ// è®¾ç½® è¿ĶåĽŀ è§Ĩé¢ĳ å¹¿åĳĬ çļĦ æľĢå°ı è§Ĩé¢ĳ æĹ¶ éķ¿ ï¼Ī éĹŃ åĮº éĹ´ ï¼Į åı¯ åįķ çĭ¬ è®¾ç½® ï¼īï¼Į åįķä½į : ç§Ĵ ĠæŃ¤ è®¾ç½® ä¼ļ å½±åĵį å¹¿åĳĬ å¡« åħħ ï¼Į è¯· è° ¨ æħ İ è®¾ç½® ĊĠĠĠ Ġ// Ġ( Ġ éĿŀ å¿ħé¡» è®¾ç½® ï¼Į é»ĺè®¤ æĺ¯ ï¼ļ 5 Ġ) ĊĠĠĠ Ġ// G dt Provider . Native . min Video Duration Ġ= Ġ 5 ĊĊĠĠĠ Ġ// è®¾ç½® æľ¬ æ¬¡ æĭī åıĸ çļĦ è§Ĩé¢ĳ å¹¿åĳĬ ï¼Į ä»İ çĶ¨æĪ· è§Ĵ åº¦ çľĭåĪ° çļĦ è§Ĩé¢ĳ æĴŃæĶ¾ çŃĸçķ¥ ï¼Ľ ĊĠĠĠ Ġ// Ġåı¯ éĢīé¡¹ åĮħæĭ¬ èĩª Video Option . Video Play Policy . AUTO ( åľ¨ çĶ¨æĪ· çľĭ æĿ¥ ï¼Į è§Ĩé¢ĳ å¹¿åĳĬ æĺ¯ èĩªåĬ¨ æĴŃæĶ¾ çļĦ ) åĴĮ Video Option . Video Play Policy . MAN UAL ( åľ¨ çĶ¨æĪ· çľĭ æĿ¥ ï¼Į è§Ĩé¢ĳ å¹¿åĳĬ æĺ¯ æīĭåĬ¨ æĴŃæĶ¾ çļĦ ) ï¼Ľ ĊĠĠĠ Ġ// Ġå¦Ĥæŀľ å¹¿åĳĬ ä½į æĶ¯æĮģ è§Ĩé¢ĳ ï¼Į å¼º çĥ Ī å»ºè®® è°ĥçĶ¨ æŃ¤ æİ¥åı£ è®¾ç½® è§Ĩé¢ĳ å¹¿åĳĬ çļĦ æĴŃæĶ¾ çŃĸçķ¥ ï¼Į æľī åĬ© äºİ æıĲ é«ĺ e CP M åĢ¼ ï¼Ľ å¦Ĥæŀľ å¹¿åĳĬ ä½į ä¸į æĶ¯æĮģ è§Ĩé¢ĳ ï¼Į å¿½ çķ¥ æľ¬ æİ¥åı£ ĊĠĠĠ Ġ// Ġ( Ġé»ĺè®¤ æĺ¯ ï¼ļ Video Option . Video Play Policy . AUTO Ġ) ĊĠĠĠ Ġ// G dt Provider . Native . video Play Policy Ġ= ĠVideo Option . Video Play Policy . AUTO ĊĊĠĠĠ Ġad Helper Native Rv . getList ( listener Ġ= Ġobject Ġ: ĠNative Listener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Start Request ( provider Type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æ¯ıä¸ª æıĲä¾Ľ åķĨ è¯·æ±Ĥ ä¹ĭåīį éĥ½ä¼ļ åĽŀè°ĥ ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Loaded ( ĊĠĠĠĠĠĠĠ Ġprovider Type : ĠString , ĊĠĠĠĠĠĠĠ Ġad List : ĠList < Any > ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Result ( ad List ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed ( ĊĠĠĠĠĠĠĠ Ġprovider Type : ĠString , ĊĠĠĠĠĠĠĠ Ġfailed Msg : ĠString ? ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åįķ ä¸ª æıĲä¾Ľ åķĨ è¯·æ±Ĥ å¤±è´¥ ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed All ( failed Msg : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æīĢæľīçļĦ æıĲä¾Ľ åķĨ éĥ½ å¤±è´¥ ĊĠĠĠĠĠĠĠ Ġon Result ( mutable ListOf ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠæĬ Ĭ åĨħå®¹ List åĴĮ å¹¿åĳĬ List åĲĪå¹¶ ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ ç¤ºä¾ĭ ï¼ļ ç¬¬äºĮ æĿ¡ æıĴåħ¥ å¹¿åĳĬ ï¼Į ä¹ĭåĲİ æ¯ı éļĶ 5 æĿ¡ åĨħå®¹ æıĴåħ¥ ä¸ĢæĿ¡ å¹¿åĳĬ ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ åħ·ä½ĵ éĢ»è¾ĳ æĮīçħ§ èĩªå·±çļĦ éľĢæ±Ĥ èĩª è¡Į å¤ĦçĲĨ ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġmerge Content Ad ( ĊĠĠĠ Ġcontent List : ĠList < Content Data Entity >, ĊĠĠĠ Ġad List : ĠList < Any > ĊĠ Ġ): ĠList < Any > Ġ{ ĊĊĠĠĠ Ġvar Ġnext Ad Position Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġlast Use Ad Position Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġmulti ItemList Ġ= Ġmutable ListOf < Any >() ĊĠĠĠ Ġrepeat ( content List . size ) Ġ{ ĊĠĠĠĠĠ Ġmulti ItemList . add ( content List [ it ]) ĊĠĠĠĠĠ Ġif Ġ( ad List . isNotEmpty () Ġ&& Ġnext Ad Position Ġ== Ġit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Use Ad Position Ġ> Ġad List . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlast Use Ad Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmulti ItemList . add ( ad List [ last Use Ad Position ]) ĊĠĠĠĠĠĠĠ Ġlast Use Ad Position Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġnext Ad Position Ġ+= Ġ 5 ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmulti ItemList ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġæ¨¡ æĭŁ çľŁ å®ŀ çļĦåĨħå®¹ æķ°æį® List ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun ĠgetContent Data (): ĠList < Content Data Entity > Ġ{ ĊĠĠĠ Ġval Ġcontent List Ġ= Ġmutable ListOf < Content Data Entity >() ĊĠĠĠ Ġfor Ġ( index Ġin Ġ 1 .. 1 5 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġtitle Ġ= Ġ" æŃ£ æĸĩ åĨħå®¹ åºı åı· ï¼ļ $ index " ĊĠĠĠĠĠ Ġcontent List . add ( ĊĠĠĠĠĠĠĠ ĠContent Data Entity ( ĊĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠĠĠ Ġimg Url Ġ= Ġ" https :// t 8 . baidu . com / it / u = 2 2 4 7 8 5 2 3 2 2 , 9 8 6 5 3 2 7 9 6 & fm = 7 9 & app = 8 6 & size = h 3 0 0 & n = 0 & g = 4 n & f = jpeg ? sec = 1 5 9 0 1 2 8 4 7 2 & t = 6 5 7 ec 8 4 0 a 5 c 6 c 6 5 8 4 3 0 1 3 5 ea 8 b 1 d 3 5 f 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcontent List ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġad Helper Native Rv . resume All Ad () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġad Helper Native Rv . pause All Ad () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġad Helper Native Rv . destroy All Ad () ĊĠ Ġ} Ċ }