/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġim . vector . app . core . ui . views Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Animation Drawable Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġim . vector . app . core . qrcode . to Bit Matrix Ċ import Ġim . vector . app . core . qrcode . to Bitmap Ċ import Ġkotlin . random . Random Ċ Ċ class ĠQ r Code ImageView Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , Ġattrs : ĠAttributeSet ? Ġ= Ġnull , Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠAppCompat ImageView ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdata : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġanimate Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( data : ĠString , Ġanimate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġthis . animate Ġ= Ġanimate ĊĊĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Size Changed ( w , Ġh , Ġold w , Ġold h ) ĊĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġheight Ġ> Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOT ĠSUPPORT ED ĠY ET Ġval Ġanim Ġ= Ġcreate Animation ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOT ĠSUPPORT ED ĠY ET Ġset Image Drawable ( anim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOT ĠSUPPORT ED ĠY ET Ġanim . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOT ĠSUPPORT ED ĠY ET Ġset Image Drawable ( Bitmap Drawable ( resources , Ġit . to Bit Matrix ( height ). to Bitmap ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġit . to Bit Matrix ( height ). to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ Ġset Image Bitmap ( bitmap ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= Ġit . to Bit Matrix ( height ). to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ{ Ġset Image Bitmap ( bitmap ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Animation ( data : ĠString ): ĠAnimation Drawable Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfinal Qr Ġ= Ġdata . to Bit Matrix ( height ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf ( final Qr ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠRandom ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġval Ġrepeat Time Ġ= Ġ 8 ĊĠĠĠĠĠĠĠ Ġrepeat ( repeat Time ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaltered Qr Ġ= Ġfinal Qr . clone () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġaltered Qr . width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġ 0 Ġuntil Ġaltered Qr . height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( random . nextInt ( repeat Time Ġ- Ġindex ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠP b Ġis Ġthat Ġit Ġdoes Ġnot Ġtoggle Ġa Ġwhole Ġblack Ġsquare , Ġbut Ġonly Ġa Ġpixel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaltered Qr . unset ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( alter ed Qr ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġanim Drawable Ġ= ĠAnimation Drawable () ĊĊĠĠĠĠĠĠĠ Ġlist . as Re versed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim Drawable . add Frame ( Bitmap Drawable ( resources , Ġit . to Bitmap ()), Ġ 1 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġanim Drawable ĊĠĠĠ Ġ} Ċ } Ċ