Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Activityの背景をぼかす
Search
Nobuhito Ibaraki
November 28, 2017
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Activityの背景をぼかす
Nobuhito Ibaraki
November 28, 2017
More Decks by Nobuhito Ibaraki
See All by Nobuhito Ibaraki
ノーコード編集と配信パフォーマンスを両立するコンテンツエディタの開発
niba1122
1
400
フロントエンドの動向 From Google I/O 2018
niba1122
0
3.2k
Rust+WebAssemblyでWebアプリは作れるのか
niba1122
0
640
potatotips_48茨木.pdf
niba1122
0
910
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
400
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
380
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
The Language of Interfaces
destraynor
162
27k
The agentic SEO stack - context over prompts
schlessera
0
860
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
350
The Spectacular Lies of Maps
axbom
PRO
1
880
GraphQLとの向き合い方2022年版
quramy
50
15k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
We Are The Robots
honzajavorek
0
290
Transcript
© 2017 VASILY,Inc. "DUJWJUZͷഎܠΛ΅͔͢ potatotips #45ʢiOS/Android։ൃTipsڞ༗ձʣ 2017/11/28
© 2017 VASILY,Inc. ࣗݾհ Ἒɹெਔ גࣜձࣾ7"4*-:ϑϩϯτΤϯυ։ൃ෦ @niba1122 ɺגࣜձࣾ7"4*-:ʹ৽ଔͰೖࣾɻ ϑϩϯτΤϯυΤϯδχΞͱͯ͠8FCJ04"OESPJEͷ ֤ϓϥοτϑΥʔϜΛ୲͍ͯ͠Δɻ
J04"OESPJEڞʹ։ൃྺϲ݄ɻ
© 2017 VASILY,Inc. Γ͍ͨ͜ͱ "DUJWJUZͷ্ʹ৽͍͠"DUJWJUZΛදࣔͯ͠എܠΛ΅͔͢
© 2017 VASILY,Inc. ࣮ͷํ എܠͷΩϟϓνϟΛऔΔ Ωϟϓνϟʹ#MVSॲཧΛֻ͚Δ #MVSΛֻ͚ͨΩϟϓνϟΛ"DUJWJUZͷഎܠʹઃఆ͢Δ
© 2017 VASILY,Inc. #MVSॲཧ IUUQXXXKBZSBNCIJBDPNCMPHBOESPJECBDLHSPVOECMVS Λࢀߟʹ࣮ͯ͠
© 2017 VASILY,Inc. Ωϟϓνϟͷऔಘ val view: View = window.findViewById(android.R.id.content) try
{ val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888) val c = Canvas(bitmap) view.draw(c) } catch (e: IllegalArgumentException) { e.printStackTrace() }
© 2017 VASILY,Inc. ۤ࿑ͨ͠ᶃ ϙοϓΞοϓͷ"DUJWJUZͰ എܠͷΩϟϓνϟΛࡱΕͳ͍ ϙοϓΞοϓͷ"DUJWJUZΛಁ໌ʹͯ͠ΩϟϓνϟΛࡱͬͯ എܠͷ"DUJWJUZΩϟϓνϟ͞Εͳ͍
© 2017 VASILY,Inc. ղܾࡦ ભҠલͷ"DUJWJUZͰΩϟϓνϟΛࡱͬͯ ϙοϓΞοϓͷ"DUJWJUZʹ͢
© 2017 VASILY,Inc. Ωϟϓνϟͷ#NQ͕େ͖͗ͯ͢*OUFOUͰͤͳ͍ͷͰ ϩʔΧϧετϨʔδʹอଘͯ͠63*Λ*OUFOUͰ͢Α͏ʹͨ͠ val cacheDir = cacheDir val
file = File(cacheDir, CACHE_FILE_NAME) return try { val outputStream = FileOutputStream(file) bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream) outputStream.flush() outputStream.close() Uri.fromFile(file) } catch (e: IOException) { e.printStackTrace() null }
© 2017 VASILY,Inc.
© 2017 VASILY,Inc. ۤ࿑ͨ͠ᶄ ը૾อଘɾ#MVSॲཧ͕ॏ͍ ʢػछʹΑΔ͕ඵఔ͔͔Δ߹͕͋Δʣ ͦͷͨΊϝΠϯεϨουΛѹഭ͢Δ
© 2017 VASILY,Inc. ղܾࡦ શͯ"TZOD5BTLͰΔ
© 2017 VASILY,Inc. ը૾ॲཧ$POUFYUΛ͏ॲཧ͕ଟ͍ͷͰ "TZOD5BTLʹ"DUJWJUZΛͯ͠8FBL3FGFSFODFͰ ࢀর͢ΔΑ͏ʹͨ͠ private class AsyncBlurredCaptureLoader(activity: BlurredModalActivity)
: AsyncTask<Uri, Unit, Drawable>() { private val activity = WeakReference(activity) override fun doInBackground(vararg params: Uri?): Drawable? { val uri = params[0] ?: return null val capture = loadCapture(uri) ?: return null val renderScript = activity.get()?.let { RenderScript.create(it) } ?: return null val blurredCapture = RSBlurProcessor(renderScript).blur(capture, 25f, 3) ?: return null val resources = activity.get()?.resources ?: return null return BitmapDrawable(resources, blurredCapture) } override fun onPostExecute(result: Drawable?) { super.onPostExecute(result) activity.get()?.onLoadBlurredCapture(result) }
© 2017 VASILY,Inc.
© 2017 VASILY,Inc. ·ͱΊ w ϙοϓΞοϓͷ"DUJWJUZ͔ΒഎܠͷΩϟϓνϟࡱΕͳ͍ͷͰ എܠͷ"DUJWJUZͰ༧ΊΩϟϓνϟΛऔΔΑ͏ʹͨ͠ w Ωϟϓνϟը૾͕େ͖͍ͨΊʹJOUFOUͰͤͳ͍ͷͰ ϩʔΧϧετϨʔδʹอଘ͢ΔΑ͏ʹͨ͠
w ը૾อଘ#MVSॲཧΛ"TZOD5BTLͰߦ͏ͱ͖ʹϝΠϯεϨου ͷDPOUFYU͕ඞཁͳͷͰɺ8FBL3FGFSFODFΛͬͨ
© 2017 VASILY,Inc. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠