package Ġo tp view . demo Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . graphics . drawable . Drawable Ċ Ċ internal Ġclass ĠCustom Application Ġ: ĠApplication () Ġ{ ĊĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġsuper . onCreate () ĊĠĠĠ ĠDrawable Holder . apply Ġ{ ĊĠĠĠĠĠ Ġbox Background Active Ġ= Ġthis @ Custom Application . resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ box _ background _ active ) ĊĠĠĠĠĠ Ġbox Background Inactive Ġ= Ġthis @ Custom Application . resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ box _ background _ inactive ) ĊĠĠĠĠĠ Ġbox Mask Active Ġ= Ġthis @ Custom Application . resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ box _ mask _ active ) ĊĠĠĠĠĠ Ġbox Mask Inactive Ġ= Ġthis @ Custom Application . resources . get Drawable ( ĊĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ box _ mask _ inactive ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠRe ally Ġbad Ġidea Ġon Ġa Ġproduction Ġapp . ĠDO ĠNOT ĠCOPY ĠTHIS ĠP ATTERN ĊĠ Ġ// ĠThe Ġreason Ġto Ġdo Ġthis Ġis Ġthat Ġthe Ġcustom Ġview Ġbeing Ġdemo ed Ġdoes Ġnot Ġkeep Ġits Ġdrawable Ġstates ĊĠ Ġ// Ġ( bg Ġand Ġmask ) Ġacross Ġconfiguration Ġchanges . ĠThis Ġis Ġbecause ĠDrawable Ġcannot Ġbe Ġmarshal led Ġinto ĊĠ Ġ// Ġa ĠParcel . ĠIn Ġfact , Ġbecause Ġof Ġthis , Ġregular ĠAndroid Ġviews Ġlike ĠEditText Ġdo Ġnot Ġkeep ĠDraw ables ĊĠ Ġ// Ġeither . ĠHowever , Ġbecause Ġthis Ġis Ġa Ġdemo Ġapp , Ġwe Ġwant Ġusers Ġun fam iliar Ġwith Ġthis Ġbehavior Ġto ĊĠ Ġ// Ġavoid Ġthinking Ġthat Ġthis Ġmight Ġbe Ġan Ġissue Ġwith Ġour Ġview , Ġso Ġwe Ġhold Ġthe Ġdraw ables Ġhere Ġinstead ĊĠ Ġinternal Ġobject ĠDrawable Holder Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġbox Background Active : ĠDrawable ĊĠĠĠ Ġlateinit Ġvar Ġbox Background Inactive : ĠDrawable ĊĠĠĠ Ġlateinit Ġvar Ġbox Mask Active : ĠDrawable ĊĠĠĠ Ġlateinit Ġvar Ġbox Mask Inactive : ĠDrawable ĊĠ Ġ} Ċ } Ċ