package Ġcom . ni uc ube . players dk . player . video Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . ni uc ube . players dk . player . Player Status Ċ import Ġcom . ni uc ube . players dk . player . utils . Log Util Ċ import Ġcom . ni uc ube . players dk . player . utils . set Scale Ċ Ċ class ĠCover Img View Ġ: Ġandroidx . appcompat . widget . AppCompat ImageView Ġ{ ĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĊĊĊĠĠĠ Ġprivate Ġvar Ġvideo Height : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġvideo Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġtag Nam Ġ= "" ĊĠĠĠ Ġprivate Ġvar Ġcenter Crop Error Ġ= Ġ 0 f ĊĊĊĠĠĠ Ġvar Ġis First Frag me Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġm View Rotation Ġ= Ġ 0 f ĊĠĠĠ Ġfun Ġadapt Video Size ( v Width : ĠInt , Ġv Height : ĠInt ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġwidth Measure Spec Ġ= Ġv Width ĊĠĠĠĠĠĠĠ Ġvar Ġheight Measure Spec Ġ= Ġv Height ĊĠĠĠĠĠĠĠ Ġif Ġ( this . video Width Ġ!= Ġwidth Measure Spec Ġ|| Ġthis . video Height Ġ!= Ġheight Measure Spec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . video Width Ġ= Ġwidth Measure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . video Height Ġ= Ġheight Measure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Rotation ( r : ĠFloat ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( rotation Ġ!= Ġr Ġ&& Ġis First Frag me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . setRotation ( r ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm View Rotation Ġ= r ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġvar Ġparent Wind Type : Ġ(() Ġ-> ĠInt )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Center Crop Error ( center Crop Error : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . center Crop Error Ġ= Ġcenter Crop Error ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Measure Spec Ġ= Ġwidth Measure Spec ĊĠĠĠĠĠĠĠ Ġvar Ġheight Measure Spec Ġ= Ġheight Measure Spec ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m View Rotation Ġ== Ġ 9 0 f Ġ|| Ġm View Rotation Ġ== Ġ 2 7 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Measure Spec Ġ= Ġwidth Measure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Measure Spec Ġ= Ġheight Measure Spec ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Measure Spec Ġ= Ġtemp Measure Spec ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġwidth V Ġ= Ġvideo Width ĊĠĠĠĠĠĠĠ Ġvar Ġheight V Ġ= Ġvideo Height ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Spec Mode Ġ= ĠView . Measure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġwidth Spec Size Ġ= ĠView . Measure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Spec Mode Ġ= ĠView . Measure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Spec Size Ġ= ĠView . Measure Spec . getSize ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġ// æİ§ä»¶ å®½ é«ĺ Ċ Ċ // ĠĠĠĠĠĠĠ ĠLog . d (" Happy Texture View ", Ġ) ĊĠĠĠĠĠĠĠ ĠLog Util . d ( tag Nam +" ĠĠ Ġtexture Ġon Measure " Ġ+ Ġheight Spec Size +" ĠĠĠ Ġw "+ width Spec Size ) ĊĠĠĠĠĠĠĠ Ġif Ġ( video Width Ġ> Ġ 0 Ġ&& Ġvideo Height Ġ> Ġ 0 ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ight Ratio Ġ= Ġheight Spec Size Ġ/ Ġheight V . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwith Ratio Ġ= Ġwidth Spec Size Ġ/ Ġwidth V . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġæ¨ ª çĵ ¶ æĴŃæĶ¾ åĻ¨ ãĢĢ æĴŃæĶ¾ æ¨ ª å±ı è§Ĩé¢ĳ ãĢĢ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ((( width V Ġ> Ġheight V Ġ&& Ġwidth Spec Size Ġ> Ġheight Spec Size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( width V Ġ< Ġheight V Ġ&& Ġwidth Spec Size Ġ< Ġheight Spec Size )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġparent Wind Type ?. invoke () Ġ!= ĠPlayer Status . MODE _ FULL _ SCREEN ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġif Ġ( h ight Ratio Ġ< Ġwith Ratio ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Ratio ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ight Ratio ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp W Ġ= Ġ( height V Ġ* Ġmax Ġ- Ġheight Spec Size ) Ġ/ Ġheight Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp H Ġ= Ġ( width V Ġ* Ġmax Ġ- Ġwidth Spec Size ) Ġ/ Ġwidth Spec Size ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Util . d ( tag Nam +" cent en r Crop ĠâĢĶ âĢĶ > ĠĠĠĠĠ Ġtemp H ĠĠ Ġ"+ Math . abs ( temp H ). set Scale ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Ġ Ġtem "+ ĠMath . abs ( temp W ). set Scale ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Ġ Ġcenter Crop Error Ġ"+ center Crop Error +" Ġ Ġvideo Width Ġ"+ video Width +" ĠĠ Ġvideo Height "+ video Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Ġheight Spec Size "+ height Spec Size +" ĠĠ Ġwidth Spec Size Ġ Ġ"+ width Spec Size ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Math . abs ( temp H ) Ġ< Ġcenter Crop Error Ġ&& ĠMath . abs ( temp W ) Ġ< Ġcenter Crop Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġ( height V Ġ* Ġmax ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġ( width V Ġ* Ġmax ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Measure ( Measure Spec . make Measure Spec ( width V , Measure Spec . EX ACT LY ), ĠMeasure Spec . make Measure Spec ( height V , Measure Spec . EX ACT LY )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Spec Mode Ġ== ĠView . Measure Spec . EX ACT LY Ġ&& Ġheight Spec Mode Ġ== ĠView . Measure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġsize Ġis Ġfixed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġwidth Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġheight Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġcompatibility , Ġwe Ġadjust Ġsize Ġbased Ġon Ġaspect Ġratio ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Width Ġ* Ġheight V Ġ< Ġwidth V Ġ* Ġvideo Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġheight V Ġ* Ġvideo Width Ġ/ Ġvideo Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( video Width Ġ* Ġheight V Ġ> Ġwidth V Ġ* Ġvideo Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġwidth V Ġ* Ġvideo Height Ġ/ Ġvideo Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( width Spec Mode Ġ== ĠView . Measure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġthe Ġwidth Ġis Ġfixed , Ġadjust Ġthe Ġheight Ġto Ġmatch Ġaspect Ġratio Ġif Ġpossible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġwidth Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġwidth V Ġ* Ġvideo Height Ġ/ Ġvideo Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Spec Mode Ġ== ĠView . Measure Spec . AT _ MO ST Ġ&& Ġheight V Ġ> Ġheight Spec Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcouldn 't Ġmatch Ġaspect Ġratio Ġwithin Ġthe Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġheight Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġheight V Ġ* Ġvideo Width Ġ/ Ġvideo Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( height Spec Mode Ġ== ĠView . Measure Spec . EX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġthe Ġheight Ġis Ġfixed , Ġadjust Ġthe Ġwidth Ġto Ġmatch Ġaspect Ġratio Ġif Ġpossible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġheight Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġheight V Ġ* Ġvideo Width Ġ/ Ġvideo Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Spec Mode Ġ== ĠView . Measure Spec . AT _ MO ST Ġ&& Ġwidth V Ġ> Ġwidth Spec Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcouldn 't Ġmatch Ġaspect Ġratio Ġwithin Ġthe Ġconstraints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġwidth Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġwidth V Ġ* Ġvideo Height Ġ/ Ġvideo Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneither Ġthe Ġwidth Ġnor Ġthe Ġheight Ġare Ġfixed , Ġtry Ġto Ġuse Ġactual Ġvideo Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġvideo Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġvideo Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Spec Mode Ġ== ĠView . Measure Spec . AT _ MO ST Ġ&& Ġheight V Ġ> Ġheight Spec Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtoo Ġt all , Ġdecrease Ġboth Ġwidth Ġand Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġheight Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġheight V Ġ* Ġvideo Width Ġ/ Ġvideo Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Spec Mode Ġ== ĠView . Measure Spec . AT _ MO ST Ġ&& Ġwidth V Ġ> Ġwidth Spec Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtoo Ġwide , Ġdecrease Ġboth Ġwidth Ġand Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth V Ġ= Ġwidth Spec Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight V Ġ= Ġwidth V Ġ* Ġvideo Height Ġ/ Ġvideo Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Measure ( Measure Spec . make Measure Spec ( width V , Measure Spec . EX ACT LY ), ĠMeasure Spec . make Measure Spec ( height V , Measure Spec . EX ACT LY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĊĊĊĠĠĠ Ġ} Ċ Ċ }