用RxJava處理和操作高斯模糊效果的簡單用例
RxBlur
Overview
在Android設備上,實現一個毛玻璃(高斯模糊)效果總是讓人很棘手,不僅要考慮視覺效果,還要在性能和代碼實現的復雜度上做出權衡。這里歸納和總結了幾種實現方案(PS: GitHub + StackOverflow + DIY),并且用RxJava進行封裝,方便以流的形式處理圖片的加載和操作。
Project Structure
-
MainActivity: RxJava + RxBinding + RxViewStub + BestBlur
-
PicassoBlurActivity: RxJava + Picasso + Transformation + RenderScript
-
GlideBlurActivity: RxJava + Glide + Transformation + RenderScript
-
RemoteBlurActivity: RxJava + Retrofit + BestBlur
-
FastBlurActivity: RxJava + Picasso + FastBlur
-
PaintBlurActivity: RxJava + Picasso + PaintBlur
-
RxAnimatorBlurActivity: RxJava + Picasso + Animator(TypeEvaluator)
Summary
把它運行起來,然后看一下高斯效果,這里我還計算了每種模糊算法的所耗時長,方便您的選擇,雖然BestBlur在代碼的復雜度上很難令人接受,但是在性能表現和模糊效果上還是令人滿意的,所以,綜合考慮,它是個不錯的選擇,而且,還可以設置模糊灰度。
如果您對RxJava更感興趣,可以按照我的實現思路,擴展自己需要的“RxBinding”。
如果,您發現了它的不當之處或者更好地實現思路與方案,請聯系我,謝謝。
Developed By
- 小鄧子 - Hi4Joker@gmail.com
Acknowledgments
-
RxJava - ReactiveX
-
RxBinding - JakeWharton
-
StackBlurDemo - Yahel Bouaziz