デザイン:すりガラス効果で、製品は直接いっぱいです。
私:あ、はいはいはい。良い解決策がないか調べるために、GayHub に行きます
デザイン:ゲイハブ? ? ?
実行可能なソリューションを見つける
ガウスぼかしを実現する方法はたくさんあります。StackBlur、RenderScript、Glide などはすべて良い方法ですが、最も簡単で効率的な方法は Github にアクセスすることです。
検索のキーワードは、 BlurryとBlurViewandroid blur
の 2 つの適切なライブラリがあることがわかります。これらの 2 つのライブラリは、星の数が比較的多く、現在も維持されています。
それで、試してみたところ、 BlurView は Blur よりも優れていることがわかりました。 BlurViewを使い始めることを強くお勧めします。
ぼやけた
-
利点: API は非常に使いやすく、効果も優れており、同期および非同期の読み込みのソリューションを提供します。
-
短所: 奇妙なバグがたくさんあり、ImageView でしか動作しません
- これを使用すると、基本的にissue1とissue2の 2 つのバグに遭遇します。
- issue1(NullPointerException) にはすでに解決策があります
- issue2(Canvas:再利用ビットマップを使おうとしている)は2017年以降進展がなく、再発の可能性は依然として比較的高い
BlurView (推奨)
-
利点: 使用過程でのバグがほとんどなく、実装中に呼び出されるコードが少なくなります。そして、複雑なぼかしビューを実現できます
-
短所: xml で構成する必要があり、rootView の概念を理解するのに数秒かかります。
-
使い方:
XML:
<androidx.constraintlayout.widget.ConstraintLayout ... android:id="@+id/rootView" android:background="@color/purple_200" > <ImageView ... android:id="@+id/imageView" /> <eightbitlab.com.blurview.BlurView ... android:id="@+id/blurView" /> </androidx.constraintlayout.widget.ConstraintLayout> 复制代码
MainActivity#onCreate:
// 这里的 rootView,只要是 blurView 的任意一个父 View 即可 val rootView = findViewById<ConstraintLayout>(R.id.rootView) val blurView = findViewById<BlurView>(R.id.blurView) blurView.setupWith(rootView, RenderScriptBlur(this)) 复制代码
-
達成された効果
使用前に:
使用後:
-
チップ :
-
BlurView の下のビューにはガウスぼかし効果があります
-
rootView は BlurView に最も近い ViewGroup を選択できます
-
.setBlurRadius()
畳み込みカーネルのサイズを設定するために使用できます。デフォルトは 16F です。 -
.setOverlayColor()
Gaussian Blur オーバーレイの設定に使用できる色の値 -
たとえば、次のパラメータを構成して、この効果を実現できます。
blurView.setupWith(rootView, RenderScriptBlur(this)) .setBlurRadius(5F) .setOverlayColor(Color.parseColor("#77000000")) 复制代码
-
最後に、スライドの効果を追加します。
-