在BaseActivity和BaseDialog中加入代码即可
BaseDialog:因为Dialog新建了一个PhoneWindow,相当于走了一遍Activity中创建window的流程,所以新建Dialog的时候要重新设置ColorMatrix
View rootView = getWindow().getDecorView();
SaturationView.getInstance().saturationView(rootView, 0f);
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.view.View;
public class SaturationView {
private final Paint paint = new Paint();
private final ColorMatrix cm = new ColorMatrix();
private SaturationView() {
}
private static SaturationView instance;
public static SaturationView getInstance() {
synchronized (SaturationView.class) {
if (instance == null) {
instance = new SaturationView();
}
}
return instance;
}
public void saturationView(View view, float saturation) {
cm.setSaturation(saturation);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);
}
}