Diseño: Con el efecto de vidrio esmerilado, el producto se llena directamente.
Yo: Ah, sí sí sí. Iré a GayHub para ver si hay una buena solución.
Diseño: GayHub? ? ?
Encuentre una solución viable
Hay muchas formas de lograr el desenfoque gaussiano, StackBlur, RenderScript, Glide, etc. son buenas formas, pero la forma más fácil y eficiente es ir a Github.
Las palabras clave de la búsqueda son android blur
, puede ver que hay dos bibliotecas adecuadas, Blurry y BlurView . Estas dos bibliotecas tienen un número relativamente alto de estrellas y todavía se mantienen.
Entonces, lo probé y descubrí que BlurView es mejor que Blur, y recomiendo encarecidamente comenzar con BlurView .
Borroso
-
Ventajas: la API es muy simple de usar, el efecto también es bueno y proporciona soluciones para carga síncrona y asíncrona.
-
Desventajas: hay muchos errores extraños y solo funciona en ImageView
BlurView (recomendado)
-
Ventajas: casi no hay errores en el proceso de uso y se llaman menos códigos durante la implementación. Y se puede lograr una vista borrosa compleja
-
Desventajas: debe configurarse en xml y toma unos segundos comprender el concepto de rootView
-
Cómo utilizar:
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)) 复制代码
-
efecto logrado
antes de usar:
Después de su uso:
-
Puntas :
-
Las vistas debajo de BlurView tendrán un efecto de desenfoque gaussiano
-
rootView puede seleccionar el ViewGroup más cercano a BlurView
-
.setBlurRadius()
Se puede usar para establecer el tamaño del kernel de convolución, el valor predeterminado es 16F -
.setOverlayColor()
Valor de color que se puede usar para establecer la superposición de desenfoque gaussiano -
Por ejemplo, los siguientes parámetros se pueden configurar para lograr este efecto:
blurView.setupWith(rootView, RenderScriptBlur(this)) .setBlurRadius(5F) .setOverlayColor(Color.parseColor("#77000000")) 复制代码
-
Finalmente, agregue el efecto de deslizamiento:
-