package Ġyet . ui . ext Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Fragment Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġyet . util . app . App Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġyet Ġon Ġ 2 0 1 5 - 1 1 - 2 0 . Ċ Ġ*/ ĊĊ Ċ fun ĠContext . call Phone ( phone : ĠString ) Ġ{ Ċ ĉ val Ġph Ġ= Ġphone . trim () Ċ ĉ if Ġ( ph . length Ġ>= Ġ 3 ) Ġ{ Ċĉ ĉ val Ġuri Ġ= ĠUri . from Parts (" tel ", Ġphone , Ġnull ) Ċĉ ĉ val Ġi Ġ= ĠIntent ( Intent . ACTION _ CALL , Ġuri ) Ċĉ ĉ i . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK // ĠFLAG _ RECE IVER _ FO REG ROUND Ċĉ ĉ try Ġ{ Ċĉĉ ĉ this . startActivity ( i ) Ċĉ ĉ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċĉ ĉ } Ċ ĉ } Ċ } Ċ Ċ fun ĠContext . dial Phone ( phone : ĠString ) Ġ{ Ċ ĉ val Ġph Ġ= Ġphone . trim () Ċ ĉ if Ġ( ph . length Ġ>= Ġ 3 ) Ġ{ Ċĉ ĉ val Ġuri Ġ= ĠUri . from Parts (" tel ", Ġphone , Ġnull ) Ċĉ ĉ val Ġi Ġ= ĠIntent ( Intent . ACTION _ DI AL , Ġuri ) Ċĉ ĉ i . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK // ĠFLAG _ RECE IVER _ FO REG ROUND Ċĉ ĉ try Ġ{ Ċĉĉ ĉ this . startActivity ( i ) Ċĉ ĉ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ Ċĉ ĉ } Ċ ĉ } Ċ } ĊĊ Ċ fun ĠActivity . hide Input Method () Ġ{ Ċ ĉ val Ġimm Ġ= Ġthis . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager Ċ ĉ val Ġv Ġ= Ġthis . current Focus Ġ?: Ġreturn Ċ ĉ if Ġ( imm . isActive ) Ġ{ Ċĉ ĉ imm . hide Soft Input From Window ( v . window Token , ĠInput Method Manager . HIDE _ NOT _ ALWAYS ) Ċ ĉ } Ċ } ĊĊ Ċ fun ĠContext . view Image ( uri : ĠUri ) Ġ{ Ċ ĉ this . view Action ( uri , Ġ" image /* ") Ċ } Ċ Ċ fun ĠContext . view Action ( uri : ĠUri , ĠdataType : ĠString ) Ġ{ Ċ ĉ val Ġintent Ġ= ĠIntent () Ċ ĉ intent . action Ġ= Ġandroid . content . Intent . ACTION _ VIEW Ċ ĉ intent . setData And Type ( uri , ĠdataType ) Ċ ĉ intent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) Ċ ĉ this . open Activity ( intent ) Ċ } Ċ Ċ val ĠContext . default SharedPreferences : ĠSharedPreferences Ċ ĉ get () Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) Ċ Ċ val ĠFragment . default SharedPreferences : ĠSharedPreferences Ċ ĉ get () Ġ= ĠPreference Manager . getDefault SharedPreferences ( activity ) Ċ Ċ val ĠFragment . act : ĠActivity Ċ ĉ get () Ġ= Ġactivity Ċ Ċ val ĠFragment . ctx : ĠContext Ċ ĉ get () Ġ= Ġactivity Ċ Ċ val ĠContext . ctx : ĠContext Ċ ĉ get () Ġ= Ġthis Ċ Ċ val ĠActivity . act : ĠActivity Ċ ĉ get () Ġ= Ġthis Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠView . find ( id : ĠInt ): ĠT Ġ= ĠfindViewById ( id ) Ġas ĠT Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠActivity . find ( id : ĠInt ): ĠT Ġ= ĠfindViewById ( id ) Ġas ĠT Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠFragment . find ( id : ĠInt ): ĠT Ġ= Ġview ?. findViewById ( id ) Ġas ĠT Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠView . find Optional ( id : ĠInt ): ĠT ? Ġ= ĠfindViewById ( id ) Ġas ? ĠT Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠActivity . find Optional ( id : ĠInt ): ĠT ? Ġ= ĠfindViewById ( id ) Ġas ? ĠT Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠView > ĠFragment . find Optional ( id : ĠInt ): ĠT ? Ġ= Ġview ?. findViewById ( id ) Ġas ? ĠT Ċ Ċ fun Ġ< T Ġ: ĠFragment > ĠT . with Arguments ( var arg Ġparams : ĠPair < String , ĠAny >): ĠT Ġ{ Ċ ĉ arguments Ġ= Ġbundle Of (* params ) Ċ ĉ return Ġthis Ċ } Ċ Ċ fun Ġbundle Of ( var arg Ġparams : ĠPair < String , ĠAny >): ĠBundle Ġ{ Ċ ĉ val Ġb Ġ= ĠBundle () Ċ ĉ for Ġ( p Ġin Ġparams ) Ġ{ Ċĉ ĉ val Ġ( k , Ġv ) Ġ= Ġp Ċĉ ĉ when Ġ( v ) Ġ{ Ċĉĉ ĉ is ĠBoolean Ġ-> Ġb . put Boolean ( k , Ġv ) Ċĉĉ ĉ is ĠByte Ġ-> Ġb . put Byte ( k , Ġv ) Ċĉĉ ĉ is ĠChar Ġ-> Ġb . put Char ( k , Ġv ) Ċĉĉ ĉ is ĠShort Ġ-> Ġb . put Short ( k , Ġv ) Ċĉĉ ĉ is ĠInt Ġ-> Ġb . put Int ( k , Ġv ) Ċĉĉ ĉ is ĠLong Ġ-> Ġb . put Long ( k , Ġv ) Ċĉĉ ĉ is ĠFloat Ġ-> Ġb . put Float ( k , Ġv ) Ċĉĉ ĉ is ĠDouble Ġ-> Ġb . put Double ( k , Ġv ) Ċĉĉ ĉ is ĠString Ġ-> Ġb . putString ( k , Ġv ) Ċĉĉ ĉ is ĠCharSequence Ġ-> Ġb . put CharSequence ( k , Ġv ) Ċĉĉ ĉ is ĠParcel able Ġ-> Ġb . put Parcelable ( k , Ġv ) Ċĉĉ ĉ is ĠSerializable Ġ-> Ġb . put Serializable ( k , Ġv ) Ċĉĉ ĉ is ĠBoolean Array Ġ-> Ġb . put Boolean Array ( k , Ġv ) Ċĉĉ ĉ is ĠByteArray Ġ-> Ġb . put ByteArray ( k , Ġv ) Ċĉĉ ĉ is ĠChar Array Ġ-> Ġb . put CharArray ( k , Ġv ) Ċĉĉ ĉ is ĠDouble Array Ġ-> Ġb . put Double Array ( k , Ġv ) Ċĉĉ ĉ is ĠFloat Array Ġ-> Ġb . put Float Array ( k , Ġv ) Ċĉĉ ĉ is ĠInt Array Ġ-> Ġb . put IntArray ( k , Ġv ) Ċĉĉ ĉ is ĠLong Array Ġ-> Ġb . put Long Array ( k , Ġv ) Ċĉĉ ĉ is ĠArray < *> Ġ-> Ġ{ Ċĉĉĉ ĉ @ Suppress (" UN CHECK ED _ CAST ") Ċĉĉĉ ĉ when Ġ{ Ċĉĉĉĉ ĉ v . isArray Of < Parcelable >() Ġ-> Ġb . put Parcelable Array ( k , Ġv Ġas ĠArray < out ĠParcel able >) Ċĉĉĉĉ ĉ v . isArray Of < CharSequence >() Ġ-> Ġb . put CharSequence Array ( k , Ġv Ġas ĠArray < out ĠCharSequence >) Ċĉĉĉĉ ĉ v . isArray Of < String >() Ġ-> Ġb . putString Array ( k , Ġv Ġas ĠArray < out ĠString >) Ċĉĉĉĉ ĉ else Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġbundle Ġcomponent Ġ(${ v . java Class }) ") Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉĉ ĉ is ĠShort Array Ġ-> Ġb . put Short Array ( k , Ġv ) Ċĉĉ ĉ is ĠBundle Ġ-> Ġb . put Bundle ( k , Ġv ) Ċĉĉ ĉ else Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġbundle Ġcomponent Ġ(${ v . java Class }) ") Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ return Ġb Ċ } ĊĊ Ċ val ĠContext . display Metrics : Ġandroid . util . Display Metrics Ċ ĉ get () Ġ= Ġresources . display Metrics Ċ Ċ val ĠContext . configuration : Ġandroid . content . res . Configuration Ċ ĉ get () Ġ= Ġresources . configuration Ċ Ċ val Ġandroid . content . res . Configuration . portrait : ĠBoolean Ċ ĉ get () Ġ= Ġorientation Ġ== Ġandroid . content . res . Configuration . OR IENTATION _ POR TRA IT Ċ Ċ val Ġandroid . content . res . Configuration . land scape : ĠBoolean Ċ ĉ get () Ġ= Ġorientation Ġ== Ġandroid . content . res . Configuration . OR IENTATION _ LAND SC APE Ċ Ċ // val Ġandroid . content . res . Configuration . long : ĠBoolean Ċ // ĠĠĠ Ġget () Ġ= Ġ( screen Layout Ġand Ġandroid . content . res . Configuration . SCREEN LAYOUT _ LONG _ YES ) Ġ!= Ġ 0 ĊĊ Ċ // -------------- dp ------------ Ċ Ċ fun ĠContext . dp ( dp : ĠInt ): ĠInt Ġ{ Ċ ĉ val Ġv Ġ= Ġdp Ġ* Ġdisplay Metrics . density Ġ+ Ġ 0 . 5 f Ċ ĉ return Ġv . toInt () Ċ } Ċ Ċ fun ĠContext . sp ( sp : ĠInt ): ĠFloat Ġ{ Ċ ĉ return Ġsp Ġ* Ġdisplay Metrics . scaled Density Ġ+ Ġ 0 . 5 f Ċ } Ċ Ċ fun Ġdp ( dp : ĠInt ): ĠInt Ġ{ Ċ ĉ return Ġ( dp Ġ* ĠApp . density Ġ+ Ġ 0 . 5 f ). toInt () Ċ } Ċ Ċ fun Ġdp 2 ( dp : ĠInt ?): ĠInt ? Ġ{ Ċ ĉ if Ġ( dp Ġ!= Ġnull ) Ġ{ Ċĉ ĉ return Ġdp ( dp ) Ċ ĉ } Ċ ĉ return Ġnull Ċ } Ċ Ċ fun Ġsp ( sp : ĠInt ): ĠFloat Ġ{ Ċ ĉ return Ġsp Ġ* ĠApp . scaled Density Ġ+ Ġ 0 . 5 f Ċ } Ċ Ċ fun Ġpx 2 dp ( px : ĠInt ): ĠInt Ġ{ Ċ ĉ return Ġ( px Ġ/ ĠApp . density Ġ+ Ġ 0 . 5 f ). toInt () Ċ } ĊĊ