package Ġme . lime ice . color picker Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . support . annotation . Color Int Ċ import Ġandroid . support . annotation . Style Res Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout ĊĊ Ċ class ĠColor Picker Dialog Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġ@ Style Res Ġtheme Res Id : ĠInt Ġ= Ġ 0 ) ĊĠĠĠ Ġ: ĠDialog ( context , Ġtheme Res Id ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/* Ġ åİĨåı² é¢ľèī² å±ķç¤º æľĢå¤§ ä¸ªæķ° Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCOUNT Ġ= Ġ 7 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġ ä¸» å¸ĥå±Ģ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġprivate Ġval Ġm ContentView : ĠView Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . dlg _ picker , Ġnull ) ĊĊĠĠĠ Ġ/* Ġ åİĨåı² è®°å½ķ é¢ľèī² å±ķç¤º Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Color Views Ġ= Ġmutable ListOf < Circle Color View >() ĊĊĠĠĠ Ġ/* Ġ é¢ľèī² å¯¹ æ¯Ķ éĿ¢ æĿ¿ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Compare Color Panel Ġ= Ġm ContentView . findViewById < Compare Color Panel >( R . id . m Compare Color Panel ) ĊĊĠĠĠ Ġ/* ĠH ue èī² å½ © éĢīæĭ© æĿ¿ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Hue Board Ġ= Ġm ContentView . findViewById < Hue Board >( R . id . m Hue Board ) ĊĊĠĠĠ Ġ/* Ġ æłĩåĩĨ H SV èī² åį¡ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Color Card Ġ= Ġm ContentView . findViewById < Color Card >( R . id . m Color Card ) ĊĊĠĠĠ Ġ/* Ġ åİĨåı² é¢ľèī² å¸ĥå±Ģ åĻ¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm History Layout Ġ= Ġm ContentView . findViewById < LinearLayout >( R . id . m History Layout ) ĊĊĠĠĠ Ġ/* Ġé»ĺè®¤ é¢ľèī² Ġ*/ ĊĠĠĠ Ġ@ Color Int Ġprivate Ġvar Ġdefault Color : ĠInt Ġ= ĠColor . BLUE ĊĊĠĠĠ Ġ/* Ġå°ı çĲĥ å¤§å°ı Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġsize Ġ= Ġcontext . resources . get Dimension Pixel Size ( R . dim en . dp _ 3 2 ) ĊĊĠĠĠ Ġ/* Ġ åĽŀè°ĥ Ġ*/ ĊĠĠĠ Ġvar Ġcallback : Ġ( color : ĠInt ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġif Ġsize Ġ> Ġ 7 , delete ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġcolor History Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ ¸ ç®¡ ï¼Ī åıĸ èī² åĻ¨ ï¼ī çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠ Ġ* Ġ@ param Ġclick Ġ çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcolor Str aw OnClick ( click : Ġ( v : ĠView ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Color Str aw . setOnClickListener ( click ) ĊĠĠĠĠĠĠĠ Ġm Color Str aw . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ ¸ ç®¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġm Color Str aw : ĠImageView ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( m ContentView ) ĊĠĠĠĠĠĠĠ Ġm ContentView . findViewById < ImageView >( R . id . m Reset ). setOnClickListener Ġ{ Ġchange Color ( default Color ) Ġ} ĊĠĠĠĠĠĠĠ Ġm ContentView . findViewById < View >( R . id . m Done ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm History Layout . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Repeat Form History ( m Hue Board . pick Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcut Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( m Hue Board . pick Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Color Card . color ChangeListener Ġ= Ġ{ Ġcolor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Board . in Put Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Hue Board . update Drawable (). update () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Color Str aw Ġ= Ġm ContentView . findViewById ( R . id . m Color Str aw ) ĊĠĠĠĠĠĠĠ Ġm Hue Board . color ChangeListener Ġ= Ġ{ Ġcolor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Compare Color Panel . dst Color Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow ?. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵå¼Ģ é¢ľèī² éĢīæĭ© å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ* Ġ@ param Ġdefault Color Ġé»ĺè®¤ é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen Dialog (@ Color Int Ġdefault Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġthis . default Color Ġ= Ġdefault Color ĊĠĠĠĠĠĠĠ Ġcut Last () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( m Color Views . size Ġ< Ġcolor History . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCircle Color View ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views . add ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . checked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views . forEach Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . checked Ġ&& Ġv Ġ!= Ġc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . checked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color ( c . circle Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow ?. setLayout (( context . resources . display Metrics . width Pixels Ġ* Ġ 0 . 8 5 f ). toInt (), ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġm History Layout . removeAll Views () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcolor History . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views [ i ]. setColor ( color History [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠLinearLayout . LayoutParams ( size , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġ( size Ġ* Ġ 0 . 3 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmarginLeft Right Ġ= Ġ( size Ġ* Ġ 0 . 1 5 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . set Margins ( margin Left Right , Ġmargin , ĠmarginLeft Right , Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm History Layout . addView ( m Color Views [ i ], Ġparam ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm ContentView . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( color History . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Compare Color Panel . src Color Ġ= Ġcolor History [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color ( color History [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Compare Color Panel . src Color Ġ= Ġdefault Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color ( default Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵå¼Ģ é¢ľèī² éĢīæĭ© å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ* Ġ@ param Ġdefault Color Ġé»ĺè®¤ é¢ľèī² ĊĠĠĠĠ Ġ* Ġ@ param Ġchange Color Ġ Ġå½ĵåīį æĺ¾ç¤º é¢ľèī² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen Dialog (@ Color Int Ġdefault Color : ĠInt , Ġ@ Color Int Ġchange Color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġthis . default Color Ġ= Ġdefault Color ĊĠĠĠĠĠĠĠ Ġcut Last () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( m Color Views . size Ġ< Ġcolor History . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCircle Color View ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views . add ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . checked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views . forEach Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . checked Ġ&& Ġv Ġ!= Ġc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . checked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color ( c . circle Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwindow ?. setLayout (( context . resources . display Metrics . width Pixels Ġ* Ġ 0 . 8 5 f ). toInt (), ĠViewGroup . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠĠĠĠĠ Ġm History Layout . removeAll Views () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcolor History . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Color Views [ i ]. setColor ( color History [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠLinearLayout . LayoutParams ( size , Ġsize ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . gravity Ġ= ĠGr avity . CENTER _ VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin Ġ= Ġ( size Ġ* Ġ 0 . 3 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmarginLeft Right Ġ= Ġ( size Ġ* Ġ 0 . 1 5 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam . set Margins ( margin Left Right , Ġmargin , ĠmarginLeft Right , Ġmargin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm History Layout . addView ( m Color Views [ i ], Ġparam ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm ContentView . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Compare Color Panel . src Color Ġ= Ġchange Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Color ( change Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġ æĶ¹åıĺ é¢ľèī² Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġchange Color ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Color Card . set Pick Color MoveTo Position ( color ) ĊĠĠĠĠĠĠĠ Ġm Hue Board . set Pick Color MoveTo Position ( color ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġ ç§»éĻ¤ æľĢåĲİ ä¸Ģä¸ª é¢ľèī² Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcut Last () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= ĠCOUNT Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġcolor History . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor History . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł æĸ° [ color ] é¢ľèī² ï¼Į å¹¶ åİ» éĻ¤ ä¸İ ä¹ĭ éĩįå¤į ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġclear Repeat Form History ( color : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġcolor History . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( color Ġ== Ġcolor History [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor History . remove At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor History . add ( 0 , Ġcolor ) ĊĠĠĠ Ġ} Ċ }