package Ġcom . bz b . challenge . ui . common Ċ Ċ import Ġandroidx . compose . foundation .* Ċ import Ġandroidx . compose . foundation . 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 .* Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . graphics Layer Ċ import Ġandroidx . compose . ui . layout . Content Scale Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . text . input . TextField Value Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . Int Offset Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . bz b . challenge . R Ċ import Ġcom . bz b . challenge . theme . text White Ċ import Ġcom . bz b . challenge . util . toast Ċ import Ġkotlin . math . round ToInt Ċ Ċ /** Ċ Ġ* Ġ@ author Ġb zb Ċ Ġ* Ġ@ date Ġ 2 0 2 1 / 3 / 1 Ġ 1 6 : 1 8 Ċ Ġ* Ġ@ description Ġ åħ¬ åħ± View Ċ Ġ*/ ĊĊ Ċ @ Composable Ċ fun ĠApp Bar View ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġtitle : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġicon : Ġ@ Composable Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠ Ġaction : Ġ@ Composable Ġ( Row Scope . () Ġ-> ĠUnit ) Ġ= Ġ{}, Ċ ) Ġ{ ĊĠĠĠ ĠTop AppBar ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠ Ġactions Ġ= Ġaction , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= Ġicon Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Color Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠ Ġ) Ċ Ċ } ĊĊ Ċ /** Ċ Ġ* Ġæ Ĳ ľç´¢ Ċ Ġ* Ġsearch View ( search _ home , ĠModifier . align ( Alignment . Center Vert ically )) Ċ Ġ*/ Ċ @ Composable Ċ fun ĠSearch View ( hint : ĠString , Ġmodifier : ĠModifier Ġ= ĠModifier , Ġcorner : ĠD p Ġ= Ġ 2 8 . dp ) Ġ{ ĊĊĠĠĠ Ġvar Ġtext State Ġby Ġremember Ġ{ Ġmutable State Of ( TextField Value ()) Ġ} ĊĠĠĠ Ġval Ġcolors Ġ= ĠTextField Defaults . textField Colors () ĊĠĠĠ Ġcolors . cursor Color ( isError Ġ= Ġfalse ) Ġ// ĠLocal Content Color . current ĊĊĠĠĠ ĠTextField ( ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġtext State , ĊĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġcolors Ġ= Ġcolors , ĊĠĠĠĠĠĠĠ Ġtext Style Ġ= ĠLocal TextStyle . current . copy ( color Ġ= ĠLocal Content Color . current ), ĊĠĠĠĠĠĠĠ Ġplaceholder Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . on Surface . copy ( Content Alpha . disabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Value Change Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext State Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ @ Composable Ċ fun ĠAction View () Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Action ", ĊĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 8 . sp , ĊĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Bold , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click ". toast ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ @ Composable Ċ fun ĠCircle Head View ( size : ĠD p , Ġmodifier : ĠModifier Ġ= ĠModifier , Ġclick : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠ Ġcontent Scale Ġ= ĠContent Scale . Crop , ĊĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( R . drawable . sam o ), ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( R . string . action _ slide ), ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Circle Shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠTitle View () Ġ{ ĊĠĠĠ Ġval ĠappName Ġ= ĠLocal Context . current . application Info . name Ġ?: Ġ" Dog A do ption " ĊĠĠĠ ĠBox Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠappName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcontent Color For ( text White ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . h 5 , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġtest Ġcode ĊĠĠĠ ĠFloat View ( ĊĠĠĠĠ ĠModifier ĊĠĠĠĠ Ġ. align ( Alignment . Bottom End ) ĊĠĠĠĠ Ġ. padding ( end Ġ= Ġ 3 0 . dp , Ġbottom Ġ= Ġ 4 0 . dp ) ĊĠĠĠ Ġ) Ċ Ġ*/ Ċ @ Composable Ċ fun ĠFloat View ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠ Ġval Ġcount Ġ= Ġremember Ġ{ Ġmutable State Of ( 0 ) Ġ} ĊĠĠĠ Ġval Ġoffset X Ġby Ġremember Ġ{ Ġmutable State Of ( 0 f ) Ġ} ĊĠĠĠ Ġval Ġoffset Y Ġby Ġremember Ġ{ Ġmutable State Of ( 0 f ) Ġ} ĊĊĠĠĠ Ġvar Ġscale Ġby Ġremember Ġ{ Ġmutable State Of ( 1 f ) Ġ} ĊĠĠĠ Ġvar Ġrotation Ġby Ġremember Ġ{ Ġmutable State Of ( 1 f ) Ġ} ĊĠĠĠ Ġvar Ġoffset Ġby Ġremember Ġ{ Ġmutable State Of ( Offset . Zero ) Ġ} ĊĊĠĠĠ Ġval Ġstate Ġ= Ġremember Transform able State Ġ{ Ġzoom , Ġpan , Ġrotation Change Ġ-> ĊĠĠĠĠĠĠĠ Ġscale Ġ*= Ġzoom ĊĠĠĠĠĠĠĠ Ġrotation Ġ+= Ġrotation Change ĊĠĠĠĠĠĠĠ Ġoffset Ġ+= Ġpan ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĊĠĠĠĠĠĠĠ Ġmodifier . size ( 1 5 0 . dp ). background ( Color . Gray , ĠRo unded Corner Shape ( 3 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. offset Ġ{ ĠInt Offset ( offset X . round ToInt (), Ġoffset Y . round ToInt ()) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¼© æĶ¾ ãĢģ æĹ ĭ è½¬ ãĢģ å¹³ ç§» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. graphics Layer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale X Ġ= Ġscale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Y Ġ= Ġscale , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrotation Z Ġ= Ġrotation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation X Ġ= Ġoffset . x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation Y Ġ= Ġoffset . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). transform able ( state Ġ= Ġstate ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* . pointer Input ( Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çĤ¹åĩ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* //* Ġdetect Tap Gest ures ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonTap Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount . value ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" float View ", Ġ" on Tap ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonPress Ġ= Ġ{ ĠLog . e (" float View ", Ġ" on Press ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Double Tap Ġ= Ġ{ ĠLog . e (" float View ", Ġ" on Double Tap ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Long Press Ġ= Ġ{ ĠLog . e (" float View ", Ġ" on Long Press ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)* //* ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæĭ ĸ æĭ ½ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetect Drag Gest ures ( on Drag Ġ= Ġ{ Ġchange , Ġoffset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange . consume All Changes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset X Ġ+= Ġoffset . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Y Ġ+= Ġoffset . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" float View ", Ġ" float View Ġdrag : Ġ Ġchange : Ġ$ change , Ġ Ġoffset : Ġ$ offset ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, */ ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . value . toString (), Ġcolor Ġ= ĠColor . White , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . align ( Alignment . Center ). background ( Color . C yan ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 1 8 . dp , Ġvertical Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġtest Ġcode ĊĠĠĠ ĠColumn ( Modifier . padding ( start Ġ= Ġ 5 0 . dp , Ġtop Ġ= Ġ 5 0 . dp )) Ġ{ ĊĠĠĠĠ ĠScroll Vertical View () ĊĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . size ( 2 0 . dp )) ĊĠĠĠĠ ĠScroll Horizontal View () ĊĠĠĠ Ġ} Ċ Ġ*/ Ċ @ Composable Ċ fun ĠScroll Vertical View () Ġ{ ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier . background ( Color . Gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( width Ġ= Ġ 1 5 0 . dp , Ġheight Ġ= Ġ 9 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Item Ġ$ it ", Ġmodifier Ġ= ĠModifier . padding ( 2 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠScroll Horizontal View () Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠ ĠModifier . background ( Color . Gray ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. size ( width Ġ= Ġ 7 0 . dp , Ġheight Ġ= Ġ 1 0 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. horizontal Scroll ( remember Scroll State ()) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Item Ġ$ it ", Ġmodifier Ġ= ĠModifier . padding ( 2 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }