package Ġcom . ang cy o . picker . media . u iv iew Ċ Ċ import Ġandroid . support . v 4 . view . ViewPager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Video View Ċ import Ġcom . ang cy o . picker . media . bean . Media Item Ċ import Ġcom . ang cy o . picker . media . bean . Media Loader Config Ċ import Ġcom . ang cy o . u iv iew . R Ċ import Ġcom . ang cy o . u iv iew . container . Content Layout Ċ import Ġcom . ang cy o . u iv iew . container . UI Param Ċ import Ġcom . ang cy o . u iv iew . kotlin .* Ċ import Ġcom . ang cy o . u iv iew . model . Title Bar Item Ċ import Ġcom . ang cy o . u iv iew . model . Title Bar Pattern Ċ import Ġcom . ang cy o . u iv iew . recycler . R Base ViewHolder Ċ import Ġcom . ang cy o . u iv iew . recycler . adapter . R Base Adapter Ċ import Ġcom . ang cy o . u iv iew . resources . Anim Util Ċ import Ġcom . ang cy o . u iv iew . skin . Skin Helper Ċ import Ġcom . ang cy o . u iv iew . utils . R Player Ċ import Ġcom . ang cy o . u iv iew . utils . R Utils Ċ import Ġcom . ang cy o . u iv iew . view group . R Frame Layout Ċ import Ġcom . ang cy o . u iv iew . widget . view pager . RP ager Adapter Ċ import Ġcom . bump tech . glide . G lide Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġang cy o Ġon Ġ 2 0 1 8 / 0 6 / 1 8 Ġ 0 7 : 1 3 Ċ Ġ* Ġ åªĴ ä½ĵ å¤§ åĽ¾ é¢Ħ è§Ī éĢīæĭ© çķĮéĿ¢ Ċ Ġ*/ Ċ class ĠR Media Pager UI View ( media Loader Config : ĠMedia Loader Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Media List : ĠMutable List < Media Item > Ġ/* æĢ» åħ± çļĦ åªĴ ä½ĵ */, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselector Media List : ĠMutable List < Media Item > Ġ/* éĢī ä¸ŃçļĦ åªĴ ä½ĵ */, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġposition : ĠInt Ġ= Ġ 0 Ġ/* æĢ» åªĴ ä½ĵ ä¸ŃçļĦ ç´¢å¼ķ */) Ġ: ĠBase Media UI View () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis @ R Media Pager UI View . selector Media List Ġ= Ġselector Media List ĊĠĠĠĠĠĠĠ Ġthis @ R Media Pager UI View . media Loader Config Ġ= Ġmedia Loader Config ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Title Bar (): ĠTitle Bar Pattern Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getTitle Bar () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle String ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Floating ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Left Item ( Title Bar Item . build (). set Clickable ( false ). setId ( R . id . base _ text _ view )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinf late Content Layout ( base Content Layout : ĠContent Layout , Ġinflater : ĠLayoutInflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( R . layout . view _ media _ pager _ layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selector Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Selector Button Click () ĊĠĠĠĠĠĠĠ Ġif Ġ( R Utils . is List Empty ( selector Media List )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish I View () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Parent ILayout . finish I View ( R Media Loader UI View :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish I View Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Media Selector Observer ?. on Media Selector ( selector Media List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Small Preview Adapter : ĠMedia Small Preview Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Pager Adapter : ĠMedia Pager Adapter ĊĠĠĠ Ġoverride Ġfun Ġinit On Show Content Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init On Show Content Layout () ĊĠĠĠĠĠĠĠ Ġmedia Small Preview Adapter Ġ= ĠMedia Small Preview Adapter () ĊĠĠĠĠĠĠĠ Ġmedia Pager Adapter Ġ= ĠMedia Pager Adapter () ĊĊĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). set BackgroundColor ( Skin Helper . get Tran Color ( title Bar BG Color , Ġ 1 8 0 )) ĊĊĠĠĠĠĠĠĠ Ġm ViewHolder . pager ( R . id . base _ view _ pager ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff screen Page Limit Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġmedia Pager Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( position , Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Page ChangeListener ( object Ġ: ĠView Pager . Simple On Page ChangeListener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ R Media Pager UI View . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm ViewHolder . rv ( R . id . base _ recycler _ view ). adapter Ġ= Ġmedia Small Preview Adapter ĊĠĠĠĠĠĠĠ Ġm ViewHolder . visible ( R . id . base _ recycler _ view , Ġ! R Utils . is List Empty ( selector Media List )) ĊĊĠĠĠĠĠĠĠ Ġon Page Selected ( position ) ĊĊĠĠĠĠĠĠĠ Ġ// å°ı åĽ¾ é¢Ħ è§Ī èĩªåĬ¨ æ»ļ åĬ¨ åĪ° éĢī ä¸ŃçļĦ éĤ£ ä¸ª item ĊĠĠĠĠĠĠĠ Ġselector Media List . indexOf ( all Media List [ position ]). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . rv ( R . id . base _ recycler _ view ). smooth Scroll To Position ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! media Loader Config . is Multi Model ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¤§ åĽ¾ çķĮéĿ¢ æĶ¾ åĩº Ġ åıĳéĢģ Ġ æĮīéĴ® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . get Right ViewById < View >( R . id . base _ send _ button ). visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éļĲèĹı Ġ éĢīæĭ© Ġ æĮīéĴ® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . invisible ( R . id . base _ check _ button ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Send Observer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! media Loader Config . is Multi Model ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselector Media List . add ( all Media List [ position ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . check Send Observer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** åĽ¾çīĩ ç¼ĸè¾ĳ å®ĮæĪĲ */ ĊĠĠĠ Ġvar Ġon Image Edit Observer : Ġ(( Media Item ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . position Ġ= Ġposition ĊĠĠĠĠĠĠĠ Ġui Title Bar Container . get Left ViewById < TextView >( R . id . base _ text _ view ). text Ġ= Ġ"${ position Ġ+ Ġ 1 }/${ all Media List . size }" ĊĊĠĠĠĠĠĠĠ Ġm ViewHolder . cb ( R . id . base _ check _ button ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġselector Media List . contains ( all Media List [ position ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick It Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontains Ġ= Ġselector Media List . contains ( all Media List [ position ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contains ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĸæ¶Ī éĢīæĭ© ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Selector Media Item ( all Media List [ position ], Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! can Selector Item ( all Media List [ position ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸įèĥ½ éĢī ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢī ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Selector Media Item ( all Media List [ position ], Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmedia Small Preview Adapter . update All Item () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( media Loader Config . enable Image Edit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . invisible ( R . id . base _ edit _ media , Ġmedia Pager Adapter . getItem Type ( position ) Ġ== ĠMedia Loader Config . LOAD ER _ TYPE _ IMAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick ( R . id . base _ edit _ media ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart I View ( UC rop Edit UI View ( media Loader Config , Ġall Media List [ position ]). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Image Edit Observer Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¼ĸè¾ĳ ä¹ĭåĲİ äº§çĶŁ çļĦ æĸ° åĽ¾çīĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Media List . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Pager Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . rp ager ( R . id . base _ view _ pager ). currentItem Ġ= Ġall Media List . size Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ R Media Pager UI View . on Image Edit Observer ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . invisible ( R . id . base _ edit _ media ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Selector Media Item ( media Item : ĠMedia Item , Ġselector : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Selector Media Item ( media Item , Ġselector ) ĊĊĠĠĠĠĠĠĠ Ġmedia Small Preview Adapter . reset Data ( selector Media List ) ĊĠĠĠĠĠĠĠ Ġm ViewHolder . visible ( R . id . base _ recycler _ view , Ġ! R Utils . is List Empty ( selector Media List )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( selector ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å°ı åĽ¾ é¢Ħ è§Ī èĩªåĬ¨ æ»ļ åĬ¨ åĪ° éĢī ä¸ŃçļĦ éĤ£ ä¸ª item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselector Media List . indexOf ( media Item ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . rv ( R . id . base _ recycler _ view ). smooth Scroll To Position ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Unload ( ui Param : ĠUI Param ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Unload ( ui Param ) ĊĠĠĠĠĠĠĠ Ġmedia Pager Adapter . release Video () ĊĠĠĠĠĠĠĠ Ġmedia Pager Adapter . release Audio () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** éĢī ä¸Ń Ġå°ı åĽ¾ é¢Ħ è§Ī */ ĊĠĠĠ Ġinner Ġclass ĠMedia Small Preview Adapter Ġ: ĠR Base Adapter < Media Item >( m Activity , Ġselector Media List ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Layout Id ( view Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . layout . base _ item _ media _ small _ preview _ layout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon BindView ( holder : ĠR Base ViewHolder , Ġposition : ĠInt , Ġbean : ĠMedia Item ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbean ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . g iv ( R . id . base _ image _ view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Media UI View . load ImageView ( this , Ġbean ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . item View Ġis ĠR Frame Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . inner BorderColor Ġ= ĠSk in Helper . get Skin (). theme Sub Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bean Ġ== Ġall Media List [ this @ R Media Pager UI View . position ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . show Inner Border Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewHolder . rv ( R . id . base _ recycler _ view ). smooth Scroll To Position ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . show Inner Border Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . click Item Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr ViewPager Ġ= Ġm ViewHolder . rp ager ( R . id . base _ view _ pager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Pager Adapter : ĠRP ager Adapter Ġ= Ġr ViewPager . adapter Ġas ĠRP ager Adapter ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠindexOf Ġ= Ġall Media List . indexOf ( bean ). min Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre Index Ġ= Ġif Ġ( indexOf Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( indexOf Ġ== Ġall Media List . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĸ çĽ¸åĲĮ type çļĦ ç´¢å¼ķ item ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Type Ġ= Ġr Pager Adapter . getItem Type ( indexOf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Type Next Ġ= Ġr Pager Adapter . getItem Type ( indexOf Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Type Ġ== Ġitem Type Next ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠindexOf Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ViewPager . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åľ¨ æ²¡æľī åĬ¨çĶ» æ»ļ åĬ¨ çļĦ æĥħåĨµä¸ĭ , Ġ çĽ´æİ¥ æ»ļ åĬ¨ åĪ° æĮĩå®ļ ä½įç½® ä¼ļ åĩºçİ° Ġ é»ĳ å±ı çļĦ BUG , Ġ æīĢä»¥ åħĪ æ»ļ åĬ¨ åĪ° éĤ » å±ħ çļĦ ä½įç½® , åĨį æ»ļ åĬ¨ åĪ° çľŁ å®ŀ çļĦ ä½įç½® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Pager Adapter . getCache View ( indexOf ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( pre Index , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Delayed ( 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( indexOf , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetCurrent Item ( indexOf , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** å¤§ åĽ¾ é¢Ħ è§Ī */ ĊĠĠĠ Ġinner Ġclass ĠMedia Pager Adapter Ġ: ĠRP ager Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġplay Video View : ĠVideo View ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġanim View : ĠView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġplay Position Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġr Player Ġ= ĠR Player () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Type ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Item Ġ= Ġall Media List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Item . mime Type . is Audio MimeType () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ AUDIO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Item . mime Type . is Video MimeType () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ VIDEO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ IMAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Layout Id ( position : ĠInt , Ġitem Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ AUDIO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . pager _ audio _ layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ VIDEO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . pager _ video _ layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . pager _ image _ layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinit Item View ( root View : ĠView , Ġposition : ĠInt , Ġitem Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . init Item View ( root View , Ġposition , Ġitem Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Item Ġ= Ġall Media List [ position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ AUDIO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < ImageView >( R . id . base _ play _ view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick It Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// R Utils . open File ( m Activity , ĠFile ( media Item . path )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Player . is Playing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim View Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . clear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Player . pause Play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Animation ( Anim Util . rotate Animation ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim View Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Player . start Play ( media Item . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < TextView >( R . id . base _ time _ view ). text Ġ= Ġmedia Item . duration . to HH mm ss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < TextView >( R . id . base _ name _ view ). text Ġ= Ġmedia Item . displayName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Loader Config . LOAD ER _ TYPE _ VIDEO Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < TextView >( R . id . base _ time _ view ). text Ġ= Ġmedia Item . duration . to HH mm ss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < TextView >( R . id . base _ name _ view ). text Ġ= Ġmedia Item . displayName ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplay View Ġ= Ġroot View . findViewById < ImageView >( R . id . base _ play _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo View Ġ= Ġroot View . findViewById < Video View >( R . id . base _ video _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclick View Ġ= Ġroot View . findViewById < View >( R . id . base _ click _ view ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġplay End () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Video View Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Position Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . show ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). show From Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġplay Start () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Video View Ġ= Ġvideo View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Position Ġ= Ġposition ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo View . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay View . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . hide ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). hide From Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Video Path ( media Item . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Prepared Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ Ġpause () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Completion Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick View . click It Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video View . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo View . pause () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . findViewById < ImageView >( R . id . base _ image _ view ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( m Activity ). load ( media Item . path ). into ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick It Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ui Title Bar Container . is Title Bar Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . hide ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). hide From Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . show ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). show From Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Destroy ( root View : ĠView , Ġitem Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Item Destroy ( root View , Ġitem Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Type Ġ== ĠMedia Loader Config . LOAD ER _ TYPE _ VIDEO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Video () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( item Type Ġ== ĠMedia Loader Config . LOAD ER _ TYPE _ AUDIO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Audio () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġall Media List . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrelease Video () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Video View ?. stop Playback () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Video View Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Position Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrelease Audio () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim View ?. clear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Player . pause Play () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Selected ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( play Position Ġ!= Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Video () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Audio () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Title Bar Container . show ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ( R . id . base _ bottom _ control _ layout ). show From Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }