package Ġcom . robert lev ony an . chip . compose Ċ Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . view . Motion Event Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . border Ċ import Ġandroidx . compose . foundation . click able Ċ import Ġandroidx . compose . foundation . gest ures . detect Tap Gest ures Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Circle Shape Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Experimental Compose Ui Api Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . graphics . as Image Bitmap Ċ import Ġandroidx . compose . ui . graphics . p ainter . Bitmap Painter Ċ import Ġandroidx . compose . ui . input . pointer . pointer Input Ċ import Ġandroidx . compose . ui . input . pointer . pointer Interop Filter Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . res . color Resource Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . text . font . Font Family Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . text . style . Text Overflow Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ Ċ private Ġval ĠCHIP _ HEIGHT Ġ= Ġ 3 2 . dp Ċ private Ġval ĠICON _ SIZE Ġ= Ġ 2 8 . dp Ċ private Ġval ĠICON _ P ADDING Ġ= Ġ 4 . dp Ċ Ċ @ Opt In ( Experimental Compose Ui Api :: class ) Ċ @ Composable Ċ fun ĠMaterial Chip ( ĊĠ Ġtext : ĠString , ĊĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠ Ġchip Icon : ĠCh ip Icon ? Ġ= Ġnull , ĊĠ Ġinteraction : ĠCh ip Interaction Ġ= ĠCh ip Interaction . None , ĊĠ Ġselected : ĠMutable State < Boolean > Ġ= Ġmutable State Of ( false ), ĊĠ ĠbackgroundColor : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Background ), ĊĠ Ġselected BackgroundColor : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Background Selected ), ĊĠ ĠtextColor : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Text ), ĊĠ Ġselected TextColor : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Text Selected ), ĊĠ Ġclose Icon Color : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Close ), ĊĠ Ġselected Close Icon Color : ĠColor Ġ= Ġcolor Resource ( id Ġ= ĠR . color . color Chip Close Selected ), ĊĠ Ġcorner Radius : ĠD p Ġ= Ġ 1 6 . dp , ĊĠ Ġstroke Size : ĠD p Ġ= Ġ 0 . dp , ĊĠ Ġselected Stroke Size : ĠD p Ġ= Ġ 0 . dp , ĊĠ Ġstroke Color : ĠColor Ġ= ĠColor . Transparent , ĊĠ Ġselected Stroke Color : ĠColor Ġ= ĠColor . Transparent , ĊĠ Ġhorizontal Padding : ĠD p Ġ= Ġ 8 . dp , ĊĠ ĠfontFamily : ĠFont Family ? Ġ= Ġnull , ĊĠ Ġon Chip Click : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠ ĠonClose Click : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠ ĠonSelect Click : Ġ( Boolean ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠ Ġon Icon Click : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, Ċ ) Ġ{ ĊĠ Ġvar Ġis Selected Ġby Ġselected ĊĊĠ Ġval Ġchip Shape Ġ= ĠRo unded Corner Shape ( corner Radius ) ĊĊĠ Ġval Ġchip BackgroundColor Ġ= Ġif Ġ( isSelected ) Ġselected BackgroundColor Ġelse ĠbackgroundColor ĊĠ Ġval Ġchip TextColor Ġ= Ġif Ġ( isSelected ) Ġselected TextColor Ġelse ĠtextColor ĊĠ Ġval Ġchip Stroke Size Ġ= Ġif Ġ( isSelected ) Ġselected Stroke Size Ġelse Ġstroke Size ĊĠ Ġval Ġchip Stroke Color Ġ= Ġif Ġ( isSelected ) Ġselected Stroke Color Ġelse Ġstroke Color ĊĠ Ġval Ġchip Close Icon Color Ġ= Ġif Ġ( isSelected ) Ġselected Close Icon Color Ġelse Ġclose Icon Color ĊĊĠ ĠSurface ( ĊĠĠĠ Ġshape Ġ= Ġchip Shape , ĊĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠ Ġ. height ( CHIP _ HEIGHT ) ĊĠĠĠĠĠ Ġ. wrap Content Width () ĊĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġpadding ( 0 . dp ) ĊĠĠĠĠĠĠĠ Ġif Ġ( chip Icon Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpadding ( horizontal Ġ= Ġhorizontal Padding ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpadding ( end Ġ= Ġhorizontal Padding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. border ( width Ġ= Ġchip Stroke Size , Ġcolor Ġ= Ġchip Stroke Color , Ġshape Ġ= Ġchip Shape ), ĊĠĠĠ Ġcolor Ġ= Ġchip BackgroundColor , ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠ Ġ. height ( CHIP _ HEIGHT ) ĊĠĠĠĠĠĠĠ Ġ. wrap Content Width (), ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( chip Icon Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchip Painter Ġ= Ġwhen Ġ( chip Icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġis ĠCh ip Icon Bitmap Ġ-> ĠBitmap Painter ( image Ġ= Ġchip Icon . icon . as Image Bitmap ()) ĊĠĠĠĠĠĠĠĠĠ Ġis ĠCh ip Icon Drawable Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Ġ= Ġ( chip Icon . icon Ġas ĠBitmap Drawable ). bitmap ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Painter ( image Ġ= Ġbmp . as Image Bitmap ()) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġis ĠCh ip Icon Res Ġ-> Ġpainter Resource ( id Ġ= Ġchip Icon . icon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġchip Painter , ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( CHIP _ HEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( CHIP _ HEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( CHIP _ HEIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġon Icon Click . invoke () Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , ĊĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Height () ĊĠĠĠĠĠĠĠĠĠ Ġ. wrap Content Width () ĊĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center Vert ically ) ĊĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġhorizontal Padding ) ĊĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( interaction Ġ== ĠCh ip Interaction . Selectable Without Icon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġ! isSelected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSelect Click . invoke ( isSelected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Chip Click . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠText Overflow . El lipsis , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= Ġchip TextColor , ĊĠĠĠĠĠĠĠ ĠfontFamily Ġ= ĠfontFamily , ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġwhen Ġ( interaction ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCh ip Interaction . C losable Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠC losable Image Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchip Close Icon Color Ġ= Ġchip Close Icon Color , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonPressed Ġ= Ġ{ Ġis Selected Ġ= Ġtrue Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Released Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClose Click . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠCh ip Interaction . Selectable Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠSelect able Image Icon ( chip Close Icon Color Ġ= Ġchip Close Icon Color ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġ! isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSelect Click . invoke ( isSelected ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Experimental Compose Ui Api Ċ @ Composable Ċ private Ġfun ĠRow Scope . C losable Image Icon ( chip Close Icon Color : ĠColor , ĠonPressed : Ġ() Ġ-> ĠUnit , Ġon Released : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠ ĠImage ( ĊĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ close ), ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. height ( ICON _ SIZE ) ĊĠĠĠĠĠ Ġ. width ( ICON _ SIZE ) ĊĠĠĠĠĠ Ġ. padding ( end Ġ= ĠICON _ P ADDING ) ĊĠĠĠĠĠ Ġ. align ( Alignment . Center Vert ically ) ĊĠĠĠĠĠ Ġ. pointer Interop Filter Ġ{ Ġmotion Event Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( motion Event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN , ĠMotion Event . ACTION _ POINTER _ DOWN Ġ-> ĠonPressed . invoke () ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP , ĠMotion Event . ACTION _ POINTER _ UP Ġ-> Ġon Released . invoke () ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ HO VER _ ENTER , ĠMotion Event . ACTION _ HO VER _ EXIT , ĠMotion Event . ACTION _ HO VER _ MOVE Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( chip Close Icon Color ), ĊĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠRow Scope . Selectable Image Icon ( chip Close Icon Color : ĠColor , ĠonTap : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠ ĠImage ( ĊĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= ĠR . drawable . ic _ select ), ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. height ( ICON _ SIZE ) ĊĠĠĠĠĠ Ġ. width ( ICON _ SIZE ) ĊĠĠĠĠĠ Ġ. padding ( end Ġ= ĠICON _ P ADDING ) ĊĠĠĠĠĠ Ġ. align ( Alignment . Center Vert ically ) ĊĠĠĠĠĠ Ġ. pointer Input ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdetect Tap Gest ures ( ĊĠĠĠĠĠĠĠĠĠ ĠonTap Ġ= Ġ{ ĠonTap . invoke () Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Inside , ĊĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( chip Close Icon Color ), ĊĠĠĠ Ġcontent Description Ġ= Ġ"", ĊĠ Ġ) Ċ } Ċ