# BlurImageAnimator
**Repository Path**: aceyun/BlurImageAnimator
## Basic Information
- **Project Name**: BlurImageAnimator
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-03-16
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Android图片高斯模糊动画
[](https://jitpack.io/#mzyq/BlurImageAnimator)
## 前言
* 这里只讲高斯模糊动画的处理,不讨论高斯模糊的处理方式。想看高斯模糊处理的可以参考这个[Android 图片高斯模糊解决方案](https://www.jianshu.com/p/02da487a2f43)
* 通过```Bitmap```多次处理高斯模糊做动画,容易卡顿或者OOM。
* 优点:解耦,易扩展
* 实际使用什么模糊方法随意,这只是一个例子
## 预览

## 使用
> 思路:底部放一张最大高斯模糊后的图片,使用```FrameLayout```在上面放一个没有模糊处理的图片。通过改变上层图片的```setAlpha(float alpha)```做到动画效果。
初始状态为显示高斯模糊图片。
### 依赖
1. Gradle
```
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
```
```java
dependencies {
implementation 'com.github.mzyq:BlurImageAnimator:0.1.0'
}
```
2. Maven
```java
jitpack.io
https://jitpack.io
```
```java
com.github.mzyq
BlurImageAnimator
0.1.0
```
### 代码
1. 继承```BlurView```,并重写以下三个方法。
```java
protected abstract View getImageView(Context context);
/**
* 模糊图片加载
*
* @param blurView
* @param imagePath
* @param blueRadius
*/
public abstract void blurImage(Context context, View blurView, Object imagePath, int blueRadius);
/**
* 正常图片加载
*
* @param blurView
* @param imagePath
*/
public abstract void normalImage(Context context, View blurView, Object imagePath);
```
2. 设置需要加载的图片路径
```java
public void setImagePath(Object imagePath)
```
3. 改变模糊程度/改变图片透明度
```java
public void setImageAlpha(float alpha)
```
4. 动画:支持ValueAnimator和ObjectAnimator
* ObjectAnimator动画
```java
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(blurCircleImageView, "ImageAlpha", 0, 1, 0);
objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
objectAnimator.setDuration(2000);
objectAnimator.start();
```
* ValueAnimator动画
```java
ValueAnimator animator = ValueAnimator.ofFloat(0, 1, 0);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float alpha= (float) animation.getAnimatedValue();
blurCircleImageView.setImageAlpha(alpha);
}
});
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setDuration(2000);
animator.start();
```
5. 其他方法
* 设置最大模糊半径,默认为16
```java
public int getBlurRadius()
```
* 显示模糊图片,默认显示模糊图片
```java
public boolean showBlueView()
```
* 例子参考
[FrescoBlurView](https://github.com/mzyq/BlurImageAnimator/blob/296ca60635c7f525e1c2417bc71e915ad53d7fa8/app/src/main/java/com/muzi/blurimageanimator/fresco/FrescoBlurView.java)
[GlideBlurView](https://github.com/mzyq/BlurImageAnimator/blob/296ca60635c7f525e1c2417bc71e915ad53d7fa8/app/src/main/java/com/muzi/blurimageanimator/glide/GlideBlurView.java)
[PicassoBlurView](https://github.com/mzyq/BlurImageAnimator/blob/296ca60635c7f525e1c2417bc71e915ad53d7fa8/app/src/main/java/com/muzi/blurimageanimator/picasso/PicassoBlurView.java)