package Ġcom . div yan shu . android draw Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġcom . div yan shu . draw . activity . Drawing Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ private Ġconst Ġval ĠREQUEST _ CODE _ DRAW Ġ= Ġ 1 0 1 Ċ private Ġconst Ġval ĠPER MISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ= Ġ 1 0 2 Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠDraw Adapter ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġif ( Context Compat . check Self Permission ( this , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠDraw Adapter ( this , get Files Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab _ add _ draw . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠDraw ing Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE _ DRAW ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Files Path (): ĠArrayList < String >{ ĊĠĠĠĠĠĠĠ Ġval Ġresult List Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Dir Ġ= Ġ"${ Environment . DIRECTORY _ PI CTURE S }/ Android ĠDraw /" ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠEnvironment . get External Storage Public Directory ( image Dir ) /* è¿ĶåĽŀ åĢ¼ æĺ¯ file */ ĊĠĠĠĠĠĠĠ Ġpath . mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġimage List Ġ= Ġpath . list Files () ĊĠĠĠĠĠĠĠ Ġfor Ġ( image Path Ġin Ġimage List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . add ( image Path . absolute Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( request Code ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ CODE _ DRAW Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult = Ġdata . get ByteArray Extra (" bitmap ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap Factory . decode ByteArray ( result , Ġ 0 , Ġresult . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Image ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( request Code ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S _ REQUEST _ WRITE _ EXTERNAL _ STORAGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( grant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠDraw Adapter ( this , get Files Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Image ( bitmap : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Dir Ġ= Ġ"${ Environment . DIRECTORY _ PI CTURE S }/ Android ĠDraw /" ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠEnvironment . get External Storage Public Directory ( image Dir ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path , ĠUUID . randomUUID (). toString ()+ ". png ") ĊĠĠĠĠĠĠĠ Ġpath . mkdir s () ĊĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠ Ġval ĠoutputStream Ġ= ĠFileOutputStream ( file ) ĊĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , 1 0 0 , output Stream ) ĊĠĠĠĠĠĠĠ ĠoutputStream . flush () ĊĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠ Ġupdate RecyclerView ( Uri . from File ( file )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate RecyclerView ( uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . addItem ( uri ) ĊĠĠĠ Ġ} Ċ } Ċ