package Ġcom . coder tain ment . dp ad view . sample Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . coder tain ment . dp ad view . DP ad View Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġorg . jetbrains . ank o . default SharedPreferences Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġprivate Ġval Ġprefs Ġby Ġlazy Ġ{ ĊĠĠĠ Ġdefault SharedPreferences ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠ Ġapply . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġd pad . modify Ġ{ ĊĊĠĠĠĠĠĠĠ Ġis H aptic Feedback Enabled Ġ= Ġprefs . getBoolean (" h aptic _ feedback ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġnormal Color Ġ= Ġprefs . getInt (" normal _ color ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpressed Color Ġ= Ġprefs . getInt (" pressed _ color ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpadding Ġ= Ġget Float (" image _ padding ", Ġ 2 4 f ) ĊĠĠĠĠĠĠĠ Ġdirection Section Angle Ġ= Ġget Float (" direction _ section _ angle ", Ġ 8 8 f ) ĊĊĠĠĠĠĠĠĠ Ġis Center Circle Enabled Ġ= Ġprefs . getBoolean (" center _ circle ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġis Center Circle Press Enabled Ġ= Ġprefs . getBoolean (" center _ circle _ press ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġcenter Circle Normal Color Ġ= Ġprefs . getInt (" center _ circle _ normal _ color ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcenter Circle Pressed Color Ġ= Ġprefs . getInt (" center _ circle _ pressed _ color ", Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġcenter Circle Ratio Ġ= Ġget Float (" center _ circle _ ratio ", Ġ 4 f ) ĊĊĠĠĠĠĠĠĠ Ġcenter Icon Ġ= Ġif Ġ( prefs . getBoolean (" center _ icon ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ done _ black ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcenter Icon Size Mode Ġ= Ġif Ġ( prefs . getBoolean (" center _ icon _ fixed ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠD Pad View . Center Icon Size Mode . FIXED ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠD Pad View . Center Icon Size Mode . WRAP ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcenter Icon Size Ġ= Ġget Float (" center _ icon _ size ", Ġ 4 8 f ) ĊĊĠĠĠĠĠĠĠ Ġcenter Text Ġ= Ġif Ġ( prefs . getBoolean (" center _ text _ enabled ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprefs . getString (" center _ text ", Ġ" O ĠK ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcenter Icon Tint Ġ= Ġprefs . getInt (" center _ icon _ tint ", Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġcenter Text Size Ġ= Ġget Float (" center _ text _ size ", Ġ 1 8 f ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġstyle Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . getBoolean (" center _ text _ bold ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstyle Ġor ĠD Pad View . TextStyle . BOLD . style ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . getBoolean (" center _ text _ italic ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstyle Ġor ĠD Pad View . TextStyle . ITAL IC . style ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( prefs . getBoolean (" center _ text _ underline ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġstyle Ġor ĠD Pad View . TextStyle . UNDER LINE . style ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcenter TextStyle Ġ= Ġstyle ĊĊĠĠĠĠĠĠĠ Ġcenter TextColor Ġ= Ġprefs . getInt (" center _ text _ color ", Ġ 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġapply . perform Click () ĊĊĠĠĠ Ġd pad . on Direction Press Listener Ġ= Ġ{ Ġdirection , Ġaction Ġ-> ĊĠĠĠĠĠ Ġval Ġtext Ġ= ĠStringBuilder () ĊĠĠĠĠĠ Ġval Ġdirection Text Ġ= Ġdirection ?. name Ġ?: Ġ"" ĊĠĠĠĠĠ Ġif Ġ( direction Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext . append (" Direction :\ t ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtext . append ( direction Text ) ĊĠĠĠĠĠ Ġif Ġ( direction Text . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext . append ("\ n Action :\ t ") ĊĠĠĠĠĠĠĠ Ġval Ġaction Text Ġ= Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ" Down " ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ" Up " ĊĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ" Move " ĊĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġaction . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext . append ( action Text ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtouched . text Ġ= Ġtext . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġd pad . on Direction ClickListener Ġ= Ġ{ ĊĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i (" direction Press ", Ġit . name ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġd pad . setOnClickListener Ġ{ ĊĠĠĠĠĠ ĠLog . i (" Click ", Ġ" Done ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġd pad . on Center Long Click Ġ= Ġ{ ĊĠĠĠĠĠ ĠLog . i (" center ", Ġ" long Ġclick ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Float ( key : ĠString , Ġdef Value : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġprefs . getString ( key , Ġ"$ def Value ") ?. toFloat () Ġ?: Ġdef Value ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġdef Value ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ