2017-03-14 21 views
0

私は現在、透明な背景を持つアクティビティを開いてその下のアクティビティを見ることができるアプリケーションを作成しています。これは十分に簡単で、私はそれをすばやく解決しました。しかし、今では、私のアクティビティの下のアクティビティがぼやけているように、何らかのぼかしフィルタを追加したいと思います。透明な背景とぼかしフィルタを使用したアクティビティ

私は周りを検索し、いくつかの異なる解決策を試みましたが運がないので、これを質問として追加しようとしています。誰もこれを解決する良い方法を知っていますか?

おかげ

+0

こんにちはJesperQV。私の答えが有益であれば投票してください。 –

答えて

0

これを行うライブラリがたくさんあります。 Here'sそれらの1つのリスト。個人的に私はBlurViewを使用しました(ライブラリの1つにリンクするのはサイトルールとは異なることを願っています)。しかし、ライブラリを少し修正する必要がありました。this issueを参照してください - プルリクエストはまだありません。アニメーションにもパフォーマンスの問題がありました。

基本的には同じもののないすべてのライブラリ:

  • が縮小寸法(例えば4倍小さい)で、ビットマップのためのキャンバスを作成しますが、このスケーリング
  • がバックグラウンドレンダリングに適用する変換行列を設定しますキャンバス
  • にウィンドウのScriptIntrinsicBlur
  • バックとしてビットマップを描画を使用してキャンバスに
  • ブラーキャンバスのビットマップを活動のルートビューをレンダリングビューのグラウンド、スケールアップされたバックアップなど。 4倍

なぜスケーリング?パフォーマンスの理由から。 4倍小さくすることははるかに速く、また、拡大効果によりぼかし効果が「強く」なります.PlotIntrinsicBlurが1回のパスでどれくらいぼやけることができるかには限界があります。

0

API < 14では、フラグWindowManager.LayoutParams.FLAG_BLUR_BEHINDを使用できます。 APISが高い場合、これはサポートされなくなりました。

ただし、ビューでこれを行うことができます。

アクティビティの全体レイアウトからビットマップを作成し、必要な方法でビットマップをぼかします。すべてを網羅したレイアウトのビューを追加(または再表示)して、問題を解決してください。