之前有一个需求就是要实现类似音乐播放器的虚化背景。在此整理一下
首先看看效果:

一、引入的包
compile 'jp.wasabeef:glide-transformations:2.0.2'
二、MainActivity
package com.example.dell.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.ImageSwitcher;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
ImageSwitcher imgView = (ImageSwitcher) findViewById(R.id.imgView);
String imgUrl="http://www.hishop.com.cn/uploads/150914/21678-150914112244436.jpg";
Tool.setViewBlur(this,imgUrl,R.mipmap.ic_launcher, imgView);
}
}
三、activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dell.myapplication.MainActivity"
>
<ImageSwitcher
android:id="@+id/imgView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="#62393939" />
</FrameLayout>
package com.example.dell.myapplication;
import android.content.Context;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import jp.wasabeef.glide.transformations.BlurTransformation;
/**
* Created by burro on 2017/11/14.
*/
public class Tool {
public static void setViewBlur(final Context context, String path, int defImage, ImageSwitcher imgView) {
final BlurTransformation btf = new BlurTransformation(context, 10, 10);
imgView.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
ImageView view = new ImageView(context);
view.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
return view;
}
});
Glide.with(context)
.load(isReal(path) ? path : defImage)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.bitmapTransform(btf)
.crossFade()
.into((ImageView) imgView.getCurrentView());
}
private static boolean isReal(String string) {
return string != null && string.length() > 0 && !string.equals("null");
}
}
到此就可以实现上述效果~