package Ġcom . k root l . be et lens . ui . about Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text .* Ċ import Ġandroid . text . Annotation Ċ import Ġandroid . text . method . Link Movement Method Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroid . view . animation . Over shoot Interpolator Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġcom . k root l . be et lens . R Ċ import Ġcom . k root l . be et lens . ui . common . dp To Px Ċ import Ġkotlinx . android . synt hetic . main . fragment _ dialog _ about .* ĊĊ Ċ class ĠAbout Dialog Fragment Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ dialog _ about , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Theme (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . style . About Dialog ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbutton Close . setOnClickListener Ġ{ Ġdismiss () Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Article . setOnClickListener Ġ{ Ġplease Launch URL (" https :// medium . com /@ sh li ama / be et lens - 4 2 eac 1 5 5 0 3 d 0 ") Ġ} ĊĠĠĠĠĠĠĠ Ġbutton Sources . setOnClickListener Ġ{ Ġplease Launch URL (" https :// github . com / K root l / Be et lens ") Ġ} ĊĠĠĠĠĠĠĠ Ġimage K root l . setOnClickListener Ġ{ Ġplease Launch URL (" https :// k root l . com ") Ġ} ĊĠĠĠĠĠĠĠ Ġtext K root l Mot to . setOnClickListener Ġ{ Ġplease Launch URL (" https :// k root l . com ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Clickable Description () ĊĊĠĠĠĠĠĠĠ Ġstart K root l Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIt Ġseems Ġlike Ġthere Ġare Ġinfinite Ġoptions Ġto Ġmake Ġclick able Ġtext Ġin ĠAndroid . ĊĠĠĠĠ Ġ* ĠSo ĠI Ġdecided Ġto Ġtry Ġyet Ġanother Ġone , Ġusing Ġ[ android . text . Annotation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Clickable Description () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfull Text Ġ= ĠgetText ( R . string . dialog _ about _ description ) Ġas ĠSp anned String ĊĠĠĠĠĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( full Text ) ĊĊĠĠĠĠĠĠĠ Ġval Ġannotations Ġ= Ġfull Text . get Spans ( 0 , Ġfull Text . length , ĠAnnotation :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġclick able Span Ġ= Ġobject Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( widget : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplease Launch URL (" https :// github . com / sh li ama ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Draw State ( ds : ĠText Paint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . is Underline Text Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġds . color Ġ= ĠContext Compat . getColor ( require Context (), ĠR . color . primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġannotations ?. find Ġ{ Ġit . value Ġ== Ġ" name _ link " Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ann able String . set Span ( click able Span , Ġfull Text . get Span Start ( it ), Ġfull Text . get Span End ( it ), ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtext Description . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġsp ann able String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhighlight Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovement Method Ġ= ĠLink Movement Method () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart K root l Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Animation Delay Ġ= Ġ 3 0 0 L ĊĠĠĠĠĠĠĠ Ġval Ġlogo Animation Duration Ġ= Ġ 5 0 0 L ĊĠĠĠĠĠĠĠ Ġval Ġmot to Animation Duration Ġ= Ġ 3 0 0 L ĊĊĠĠĠĠĠĠĠ Ġimage K root l . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġ 2 5 f . dp To Px () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġ 0 . 8 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġ 0 . 8 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. translation Y ( 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale X ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale Y ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( start Animation Delay ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( logo Animation Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. interpol ator Ġ= ĠOver shoot Interpolator () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtext K root l Mot to . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġ 0 . 8 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġ 0 . 8 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale X ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. scale Y ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. alpha ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Start Delay ( start Animation Delay Ġ+ Ġlogo Animation Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( mot to Animation Duration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplease Launch URL ( url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweb Page Ġ= ĠUri . parse ( url ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġweb Page ) ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . resolve Activity ( require Context (). package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Could Ġnot Ġopen Ġweb Ġpage ĠâĢĶ Ġ($ web Page )") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Could Ġnot Ġfind Ġa Ġweb Ġbrowser ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠAbout Dialog Fragment :: class . java . simple Name ĊĠĠĠ Ġ} Ċ }