ガウスぼかしを実現する Android の 3 行のコード

デザイン:すりガラス効果で、製品は直接いっぱいです。

私:あ、はいはいはい。良い解決策がないか調べるために、GayHub に行きます

デザイン:ゲイハブ? ? ?

実行可能なソリューションを見つける

ガウスぼかしを実現する方法はたくさんあります。StackBlur、RenderScript、Glide などはすべて良い方法ですが、最も簡単で効率的な方法は Github にアクセスすることです。

検索のキーワードは、 BlurryBlurViewandroid blurの 2 つの適切なライブラリがあることがわかります。これらの 2 つのライブラリは、星の数が比較的多く、現在も維持されています。

それで、試してみたところ、 BlurView は Blur よりも優れていることがわかりました。 BlurViewを使い始めることを強くお勧めします。

画像-20220917223800119

ぼやけた

  • 利点: API は非常に使いやすく、効果も優れており、同期および非同期の読み込みのソリューションを提供します。

  • 短所: 奇妙なバグがたくさんあり、ImageView でしか動作しません

    • これを使用すると、基本的にissue1issue2の 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))
    复制代码
  • 達成された効果

    使用前に:

    181663475092_.pic

    使用後:

    171663475091_.pic
  • チップ :

    • BlurView の下のビューにはガウスぼかし効果があります

    • rootView は BlurView に最も近い ViewGroup を選択できます

    • .setBlurRadius()畳み込みカーネルのサイズを設定するために使用できます。デフォルトは 16F です。

    • .setOverlayColor()Gaussian Blur オーバーレイの設定に使用できる色の値

    • たとえば、次のパラメータを構成して、この効果を実現できます。

      blurView.setupWith(rootView, RenderScriptBlur(this))
                  .setBlurRadius(5F)
                  .setOverlayColor(Color.parseColor("#77000000"))
      复制代码
      191663495988_.pic
    • 最後に、スライドの効果を追加します。

      blurWithScrollView

おすすめ

転載: juejin.im/post/7144663860027326494